OK, my brain didn’t wanna let go of this so here’s a new proposal how to look at this issue.
We should consider widening the scope, aka making the problem bigger to construct it from the big picture to the details.
I feel the big picture could be named “Build and Distribution Pipeline” - let me explain.
As there is now a new roadmap that has made a decision about source-code storage (forgejo) the broader issue looks to me that we need to figure out how we get code from forgejo compiled and distributed to the users of Auxolotl.
In my view (spoiler I’m specialized in Infrastructure security) this is an engineering issue that tries to connect 1 source-code repo on the top of a pyramid with “unlimited” (as in more than we might know or can reliably count) consumers on the bottom on the bottom of a pyramid that expect binaries in a specific format that easily plugs into their flake configuration.
Between the top and bottom of the pyramid seems to be a question mark and a few conversations (1, 2, 3, 4, 5, 6, 7, 8, 9) have talked about aspects of what that question mark could look like.
I wanna introduce the idea of “constraints” with the hope that it helps us identify solutions. The constraints I have identified so far (please feel free to add more):
- Compute - for building packages from source
- Storage - to store binaries
- Bandwidth - to deliver copies of binaries
- Trust - how/ when is the output of the building process considered “correct enough”
IMO part (but not limited to) of the original question regarding trustix
- Complexity - What services can we currently manage given our headcount
Constraints 1 - 3 can IMO be summarized into one category: financials in order to allow for comparing different solutions in terms of cost.
Those constraints can be applied to the different mandatory pieces for this pipeline
- A. The forge
Constraints Storage and Trust apply
- B. The build farm
Constraints Compute and Trust apply
- C. The cache
Constraints Bandwidth and possibly Trust apply
The constraint complexity and finances applies to each individually as well as in sum.
The limit for each of the constraints should be defined as explicit as possible.
E.g. for finances this might take the form of “0” as in for free,
I expect complexity and trust to be a bit harder to define though, maybe this needs a combination of community feedback and risk assessment.
Should we look at the issue this way, my prediction is that we might wanna start off with a rather simple setup (assuming we don’t need to compile & store a repo of the size of nixpkgs) that is more centralized but easy to maintain.
Future versions of the build + cache system might be build on more distributed approaches (tiered caches, volunteer compile farms + trustix, p2p/torrent based cache downloads).
Personally I would put the primary focus on a version1 that serves the current/ next step of our Roadmap best.
This proposal definitely has some rough edges and I might change a few more of my thoughts, but I wanted to throw it out there to see if the general perspective resonates?