We are trying a distribution model that allows our user to easily customize and hack the source code. So our sources are not distributed as black boxes (ie. pip
packages) but clones into user's project from this very repo.
This may look a little bit weird from software engineering perspective but we want to try it. Going back to pip
package model is quite easy and we may do it on top or instead of the model below.
Please give use feedback in the issues of this repo!
We'll use the dlt init command to distribute the source.
- Sources are distributed by
dlt init
command that can be issued several times. - Sources come from `sources folder of this repo and if there’s no source with the requested name there, the init folder is used.
- The sources are added to the current project as source code: the folder (ie.
pipedrive
) and the example script (pipedrive_pipeline.py
) are added to the project. - The freelancer/end user is able to copy and paste and hack the code of the source.
- The subsequent
dlt init
with existing source will update the code. User hacks and modifications will be preserved (if user chooses so). - Versioning: using
git
for distribution provides enough versioning information. (tags, branches, commit ids)
For example if someone issues dlt init chess bigquery
:
dlt
clones the repo and finds thechess
insources
folder.- it copies the
chess
folder andchess_pipeline.py
to user's project folder - it modifies the example script
chess_pipeline.py
to usebigquery
to load data - it inspects the
dlt.resource
anddlt.source
functions inchess
module and generates config/credentials sections
We want our end users to hack the verified sources and pipelines too! So still no black boxes
- The implementer should customize and hack the sources from
dlt init
as they wish - The implementer should generate deployment with
dlt deploy
- The distribution to customer happens as source code via git repository.
- The customer is able to hack and customize the source.