Proposal: introduce a "skunkworks" repository for projects like peer-to-peer companion

Summer internships are just about to start on May 14th! :tada: :confetti_ball:

One thing I'd like to have clarity on before then is a repository policy for new standalone tools. @dexter21's peer-to-peer sync tool is a good example of that. It's likely that by the end of the summer it will be adopted as a full ODK tool. There's also some possibility that the functionality will be rolled into Collect depending on user feedback. @dexter21 and @Shobhit_Agarwal, have you already discussed where on Github you think the work should happen?

I'd like to propose introducing a opendatakit/skunkworks repository on GitHub. The term "skunkworks project" was first used by Lockheed and refers to innovative, exploratory projects led by small teams. We could have folders within that repository for different projects. Some of those might eventually be moved to their own repos, get absorbed into existing projects or so on. This is a model others have used:,, etc. If we wanted to be a little more literal (boring?!), we could go with "experimental" instead of "skunkworks".

Another model used by larger organizations such as Netflix is to have a dedicated skunkworks organization with sub-repos: I don't think that's necessary in this case.

I like this idea, but seems kind of awkward to have all the projects in one repo and sharing an issue tracker. Could we maybe make the skunkworks the landing page and have people send PRs to that with a link to other non-ODK repos?

Another idea is that we just create repos for projects that are officially deemed skunkworks (e.g., by the TSC). Repos are very lightweight to create...

1 Like

I like @yanokwa 's two ideas combined, both have a common landing page and separate repos for each project officially deemed "sunkworks". It may be beneficial to require a basic prototype before importing the repo to the Open Data Kit project as sometimes ideas get started and then get abandoned before the code is in a state that others can make contributions.

1 Like

Sounds great. To summarize:

  • create the opendatakit/skunkworks repository
  • create a repository for @dexter21's project (this project has been discussed with and approved by the TSC)
  • add text to opendatakit/skunkworks's README to describe what skunkworks project are and link to @dexter21's repo

In the README we can describe the bar for a skunkworks project and the process for creating a new one.

1 Like