Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.Sign up
Adapters as plugins #966
Adapters should be plugins, installed separately from dbt, and it should be possible for "userspace" to define new adapters.
Currently, dbt users who want to support a new adapter type would have to fork dbt, refactor around a number of embedded assumptions about adapters, connection contracts, etc, and maintain that fork. Instead, we should provide a common adapter base class, and define a coherent way for plugins to register themselves as dbt adapters. Plugged-in adapters should be first class, and in fact as part of this we should move all existing adapters into separate packages that dbt can optionally depend upon.
For namespacing, Flask has a nice model here that would leverage with some tweaking and some additions around automatically importing relevant plugins if available.
This is a very big task, and will immediately break all integration tests horribly...
Who will this benefit?
Everyone who uses or develops dbt.