Deploying an Open Source Elixir application + with Closed Source additions

Reporting back (for other curious readers) that I’ve started an experiment as suggested to include the main application as a dependency. I’ve added the main application as a git submodule, and added it to the dependency list of wrapper project.

It didn’t go very smoothly, but I haven’t yet given up. Here are some problems:

  1. The original application declares quite a lot of configuration options in its config/config.exs. Unfortunately, this is ignored by the wrapper application. So I would need a way to share the configuration options between the two apps.

  2. CI is not trivial. The majority of development happens in the original application, and every commit is fully tested. The private parts can’t be pulled as part of the open-source pipeline because it would expose the source code (and then what’s the point in splitting it?), so my best answer to this is to write contract tests in the original app, and make sure to not break the API that is the connection point between the app and the admin interface.

  3. The original is meant to be released as a docker image. The wrapper needs to maintain a similar docker build. This is achievable, but some duplication seems to be necessary.

I also got some good ideas from Sharing code across apps. Continuing forward and reporting back how it goes.

Thanks for all the help folks :man_bowing: