docusaurus/platform_versioned_docs/version-2.0/connector-development/best-practices.md
In order to guarantee the highest quality for connectors, we've compiled the following best practices for connector development. Connectors which follow these best practices will be labelled as "Airbyte Certified" to indicate they've passed a high quality bar and will perform reliably in all production use cases. Following these guidelines is not required for your contribution to Airbyte to be accepted, as they add a barrier to entry for contribution (though adopting them certainly doesn't hurt!).
From these principles we extrapolate the following goals for connectors, in descending priority order:
Note that in the above list, the least important is the number of features it has (e.g: whether an API connector supports all entities in the API). The most important thing is that for its declared features, it is reliable and usable. The only exception are “minimum viability” features e.g: for some sources, it’s not feasible to pull data without incremental due to rate limiting issues. In this case, those are considered usability issues.
When reviewing connectors, we'll use the following "checklist" to verify whether the connector is considered "Airbyte certified" or closer to beta or alpha:
As much as possible, prove functionality via testing. This means slightly different things depending on the type of connector:
read and discover operationsThoroughly test edge cases. While Airbyte provides a Standard Test Suite that all connectors must pass, it's not possible for the standard test suite to cover all edge cases. When in doubt about whether the standard tests provide sufficient evidence of functionality, write a custom test case for your connector.
Most APIs enforce rate limits. Your connector should gracefully handle those (i.e: without failing the connector process). The most common way to handle rate limits is to implement backoff.
Once a connector has been published for use within Airbyte, we must take special care to account for the customer impact of updates to the connector.