Skip to main content

· 3 min read
Intro

What is a 'Repo'. Well 'repo', short for repository in this context is a centralised digital storage where we, developers, can store source code and manage changes. In the realm of software development, the debate between using a single repository (monorepo) verses multiple repositories is more than just a technical choice- it's a strategic decision that can shape the direction, define the efficiency, and agility of a company.

Bloat (Computer Science) - The presence of program code (source code or machine code) that is perceived as unnecessarily long, slow, or otherwise wasteful of resources.

Bloat (Business) - The discrepancy between the number of productive employees and managerial staff, invested time and output, or outgoing and incoming funds.

For most businesses 'bloat' comes hand in hand with 'Technical Debt' - a concept where shortcuts, suboptimal decisions, and mostly poor organisation, during the development process accumulates over time. Down the road this leads to unmaintainable code, which directly translates to time, effort and cost. Alas as a company that is striving to be truly software defined, we adopted a monorepo in order to create an environment where our code is lean, our teams agile, and our development processes are seamlessly integrated, setting the foundation for a sustainable and scalable growth.

Understanding the Super Repo

The Super Repo (a monorepo) is not just a large collection of files dropped into an unorganised mess, much like we find in our 'Downloads' folder. Instead think of it as the gateway into our company, the front door, or rather the Station where you can catch trains to foreign lands. It is in essence a digital library organised into a tree structure, where we find sub-repos within sub-repos. At a top level the super repo is clean, containing a README and a series of references to sub-repos. It is at this point where if you are not careful you can find yourself falling back into the ever present arms of 'technical debt'. What is the first layer of the super repo. Now this is beyond subjective, but bear in mind the quest at hand, to build a foundation and structure that allows for scalable and sustainable growth.

might not put the next bit in :()

Our Super Repo is organised such that every client or prospective client, including ourselves, gets a sub-repo. This ensures separation of concerns, with distinct entry points for different clients' code bases. Within a client repo are all the project repos (again configured as submodules).

Advantages

Code Synchronisation and central management. Version control is one of the biggest disruptors to commercial development and deployment of software, is is a fine art and an essential one when it comes to shipping working code out the door. The multi repo environment lends itself to becoming a messy logistical nightmare, especially with co-dependant repos and multiple dev teams. The super repo by contrast keeps everything under one roof, allowing for easy tracking and maintenance of software versions.

Modularity: Although at first it may not seem like a modular and interchangeable beast, the super repo is. By nature of keeping all code organised in one place every part of the software tree that gets create is entirely modular even when there are co-dependancies. As all code is only present in one place swapping out a specific part of the stack is very possible

· One min read

Welcome to the Captain App Blogs

This is a place where we share our thoughts, ideas, and experiences. We hope you find them useful and interesting.

CaLogo