Skip to content
On this page

Open Source Structure

This page details the structure of Didact's open source code and how it is intended to be managed.

Polyrepos

Perhaps "going against the grain" a little, the core components of Didact's architecture are organized into multiple, separate repositories rather than a central monorepo.

Specifically, you will find a separate, isolated repository for each core component of Didact's architecture:

A Matter of Preference

I was greatly torn about whether or not to take a monorepo or polyrepo approach when open sourcing Didact. When I observed other open source job orchestrators on GitHub, it appeared that many of them utilized a monorepo approach for the central application.

Rather than blindly following suit simply because others have done so, I instead decided to conduct research on whether or not one method might be more preferable than the other. Based off of the results I found, it really came down to the decision being a matter of preference: if you like monorepos, then use them - and if you don't, then don't.

And that's essentially why polyrepos are used here: because that's my preference.

No need to die on that hill

If the polyrepo approach becomes unmanagable long-term, or if the majority of the community expresses a strong dislike of this approach, then I'm not opposed to switching to a monorepo approach. Since I will already have the release repo, Didact, provisioned, I should be able to make the switchover to a monorepo easily.

Git Submodules

Because each piece of the Didact architecture is sourced in a separate repo, the pieces will need to be reaggregated back up into the primary release repo, Didact, to release a full platform version.

To accomplish this, I plan to utilize git submodules and use the release repo as just that: a central place for managing individual releases of each component and aggregating them up to a platform version.

Release Repo

As stated above, each piece of Didact's architecture will be reaggregated back up to the primary release repo, Didact.

The release repo will be where I run integration tests and Docker builds (several individuals have already asked about Didact being Docker friendly).

Proudly powered by VitePress