Replies: 1 comment 3 replies
-
Merging the two apps into one repository sounds like a good idea. Or, at least: centralizing them under one set of dependencies, "one" set of configurations — in short, one source of truth for both apps, wherever possible. That sounds like the goal here. I want to clarify what is being proposed here. Is the suggestion to essentially create a repository, put both apps' code into the repository, and then deduplicate? The question here is: what is being versioned with the shared repository? Do both "apps" get released under the same version counter? (So, e.g., if I make a patch that only affects CARLS, does that also result in a patch release to AAO?) Do I have to check out and test both apps whenever I make a change? In general, my rule of thumb is that a repository should track some thing. I worry that the ask here is to essentially plop the source code for both apps into the same place, deduplicate as much as possible, and then have scripts that build the two apps separately. This does solve the problem of de-synchronization and multiple source of truth by requiring both apps to be buildable from one source, but the worry I have is that it allows the concerns of the two apps to be muddled, and it just increases maintenance effort. It also allows for potential issues like CARLS code calling AAO code, AAO code calling CARLS code, without the boundaries between the two apps being clearly communicated. So, I ask, from my Devil's-Advocate standpoint: What about modules? We have a If we take that kind of encapsulation to the extreme, couldn't we also test a BonApp menu outside of React-Native? Then, if I want to go add a feature, I just need to check out the BonApp part of things, and I could even potentially make those changes without having to fire up a simulator! Taking this to its conclusion, AAO is reduced essentially to a collection of calls to constructors, styles, configuration, and the like, and this could probably be templatized and turned into a turnkey, "fill out this YAML" sort of thing. Maybe this is the ultimate goal of the monorepo approach, and we would naturally be pulling out shared components and doing this along the way, but I want to make sure that we're not just mashing the two things together and hoping it'll solve all our problems. |
Beta Was this translation helpful? Give feedback.
-
Today, we have ~2 repos: allaboutolaf, and carls.
I propose that we merge them into one repo, and instead configure Xcode and Gradle to be able to generate the two apps.
This will let us figure out how to structure the common codebase in a monorepo, as we figure out how to make them properly configurable for other projects to use.
It will also prevent us from ever being in the current CARLS situation, where the code was forked 5+ years ago and is very difficult to rebase today…
My proposal has three parts:
The New Repository Structure
frog-pond/allaboutanything
The merged app repositories. Contains the code and configuration for the two apps. However, I think that the data and the images should live in…
carls-app/carls
&StoDevX/AAO-React-Native
I think that we should pull the data and images out of the main app repositories, and leave them in separate repos, for a few reasons.
Additionally, I think that we should stop shipping any images and data files in the app bundle. Instead, I think that they should be fetched on first use. This can be debated both ways, but
Conclusion
I guess I only had one part. Thoughts?
Beta Was this translation helpful? Give feedback.
All reactions