To keep the system simple and small, one of the goals is to make as much functionality as possible optional. However, providing many options is not simple, so boundaries need to be chosen carefully.
Base system
Will there be a single version that includes support for all mainstream hardware, or distinct builds for Intel, AMD, Nvidia, VM, and text only?
Ensuring use of the OS is as simple as possible may require having separate builds that are specific to certain platforms
There should always be an option that's usable, useful, and about as minimal as the current Linux kernel+BusyBox build, even if few people should actually use that by itself
Command line tools bundle
This will contain small programs most people would appreciate having, but that aren't strictly necessary
[ ] Urbit management tools
[ ] File system and disk tools
[ ] Hardware monitoring
[ ] NTP or similar
[ ] Remote management
[ ] HTTP client
[ ] WiFi management
[ ] Version control for config files and software updates
It should be possible for individual parts of this bundle to be used independently
The text editor and shell are currently part of the base system, but those ones aren't very good
A good shell and text editor might be too big for the base system
Should the mediocre ones be kept and better alternatives included in this optional bundle, considering that one of the goals of this project is to eliminate pointless duplicates?
Graphical software bundle
Should include all graphics drivers, libraries, and probably some small and basic tools like a file manager, media viewer, text editor, and calculator
System libraries bundle
Might not make sense to separate
Static linking for everything might also make sense
If offered, would include certain widely used libraries like libc, libssl, libcrypto, and libz that make sense as part of the standard library for a platform
Third party software bundles
Popular components like MinIO and Docker that don't make sense to fork and integrate into Rocket will be made available, probably as repackaged static binaries from upstream
Developer bundle
This will include the compiler and related tools, build dependencies that are irrelevant to users, headers, and static libraries
Likely a single bundle for everything developer specific for the entire system, rather than having additional companion ones for each optional bundle
When installed, everything should be cleanly isolated from all of the user components
None of the user components should be influenced by the presence of any developer files
It should only be possible by default to run any of the developer tools from a special "developer" shell
Developer systems should always behave exactly like user systems outside of the developer shell
Non-developer users should never have any reason to install this
Making it possible to use parts of this without the entire bundle isn't a priority
To keep the system simple and small, one of the goals is to make as much functionality as possible optional. However, providing many options is not simple, so boundaries need to be chosen carefully.