It's been a while since the Twelve-Factor App was created. Does it still hold up?
Let's look at the Codebase factor, which states the app should be in exactly one root repo for version control. This factor gives a stronger definition of app.
If there are multiple codebases, it’s not an app – it’s a distributed system.
I find this clarifying, though it does create confusion outside an engineering team. "App" is often thought of as the entire thing a company does, but behind the scenes that "app" is really a distributed system.
The Apple App Store coined the term "App" in the collective consciousness of most people and it was introduced in 2007, with 2009 being when "There's an App For That" was used in their marketing.
The 12-factors were introduced in 2011. To me, this means "app" was maybe not a great choice of term. Of course, server is also not great, and application would be shortened to app anyway.
That said, the overall advice of this factor is still sound, especially considering its implications. The whole idea is to draw a line around a deployable unit, with a single repository in version control representing a thing that can be safely deployed independently.
This may seem to conflict with the trend of monorepos, such as that popularized by Google. I would guess almost no team needs to put all their code in a single repo, and likely would not have the resources to create and maintain the tooling needed to do so.
I don't think the 12-factor app was designed to be the only way to manage a distributed system, but it's a way, and it's a good default if you don't have extenuating circumstances. And if you don't, creating one repo-per-deployable-thing is great advice that will simplify your life and create almost no complexities.
It's hard to keep up with everything, and sometimes I learn something that has been common knowledge for a while. Maybe this happens to you.
I recently Learned about Kagi, a paid internet search that isn't supported by advertising, so in theory provides more privacy protections than Google. I've been using it for about a month, and really enjoying it.
What's particularly interesting about it is that, because it's paid, they build features that make the search experience better (as opposed to Google who add features to maximize ad revenue).
My favorite feature is that you can block, de-prioritize, or boost websites that show up in the search. For example, I don't want to see search results for w3schools—I'd rather use the far superior MDN. Thus, I have blocked w3schools from showing up in my results.
Another nice feature is that if you like the summary boxes that try to answer your question, you can have that. Or, if you are like me and just want to see search results, you can turn that off.
Kagi allows 100 searches for free, so check it out!
Unless otherwise noted, my emails were written entirely by me without any assistance from a generative AI.