As Flatfire mentions, another issue can arise if plugins can modify the config. I assumed config to be read-only for the software, only editable by the admins, and never by the tools themselves.
As Flatfire mentions, another issue can arise if plugins can modify the config. I assumed config to be read-only for the software, only editable by the admins, and never by the tools themselves.
I’d try to share the config space as much as possible. Options 1 and 3 make sense then.
What feels “right” to me, when using NixOS and its module system, is that all config has the same shape, and is therefor easily moved to a different section, or to a section that is shared by a subset of plugins.
Con: It could lead to bad practices like strengthening dependencies between plugins (if they hard code to use a specific config option of another plugin).
Pro: But if you can discourage that, or use “deprecated pointers” to the new location of an option, the ease of moving shared config options to a more generic level can make it easier to maintain the total configuration. Developers of the separate plugins can build on what others have already done, and even synergize functionality (add a convenient integration if they see another option configured).
If some options are “secret”, though, and you don’t want those shared, they should either be in their own config (easier), or you’d need some access control on the configuration storage/file for each plugin (more work). Allowing a plugin to have a separate file for credentials, for instance, could be a good choice.
git was designed to be decentralized. Everyone can (technically, but it is not too hard to set up if you have some affinity with servers) fork/clone another git repository and serve it up. It has built-in ways to synchronize with any other server. In fact, that synchronizing is what most developers do when they use git.
Of course, that would make it harder to know which repository has the “official” version, but in a way, that is maybe also a benefit of decentralisation. Knowing what code is authentic can be done by signing the commits.
The hubs that we see, are usually a combination of git and a way to serve the code, along with documentation, roadmap, bug tracking, automatic testing and building and the resulting binaries in a visually pleasing way. That does not need to be a part of decentralizing the code, and it is not the only way to do it.
Some of that can also be done with git built-in tracking of files, and the building and testing can probably also done in other locations, as long as there are files describing how to do that bundled with the code (which practically all projects already do).
Sourcehut (https://sr.ht) is one hub that helps developers use simpler tools for those workflows, and I think that’s a good place to find some inspiration.
Falkor energy.
RobWords? Yep, RobWords. He’s got some interesting video’s!