(Edit: I found a forum question that already asked this: https://softwareengineering.stackexchange.com/questions/256833/why-dont-developers-make-installation-wizards-on-linux )
My favorite thing about the Raspberry Pi Zero is the cost. Since its release in 2015, the Pi Zero has allowed beginners and experts alike to harness computing power without needing a whole lot of other hardware.
The purpose of the Raspberry Pi is and always remains education. The purpose of education and enterprise-industrial applications are quite different, if not polar opposites. So I try to remind myself that when something isn't working as I'd like, I think that its purpose is for learning how computers work, rather than the purchase being for a warranty of some type of software support.
To describe this "dichotomy," let's first understand that economies of scale is what led to the Raspberry Pi becoming so inexpensive. The intent of the Rpi developers is to lower the entry to affording a computer, and its intention is not to support all the most advanced features.
I think the meaning of basic computing should be explored. What is a basic computer? One that provides internet and has a common, but modern display cable, such as HDMI. These are basic computing features that are used by a vast majority of users, rather than being basic computing features in an early desktop computer from the 1980s. Back then, features that were considered basic computing would include Office suites, (printing), and intranet.
This is in no way a criticism of Rpi. In fact, I am immensely grateful for their disruptive technology. I own 1 Raspberry Pi 3B+ and 2 Raspberry Pi Zeros (the 2nd 0 I bought just because). However, I hope to find a use for all three- I use one of the zeros and the 3B+ frequently to test and benchmark the performance of various operating systems, particularly ones that boot from RAM, such as Puppy Linux, Diet Pi, PiCore and other x86 ports.
The short explanation for this is I am interested in extending the mission of the Rpi by cataloguing the OSs other than Raspbian with the most Raspberry Pi support, and then determining which ones can boot from RAM. Of those, the ones that can run in RAM and run a select number of applications, which could then be optimized to run with or without a traditional suite of operating system apps so that the performance utilize the full amount of RAM, whether it is 512MB, 1GB, or 2GB. In this way, the educational mission of the Rpi can utilize another function of the Rpi software- the less often used initrd or intramfs that runs the entire OS in a high speed memory. With the proliferation of many carrier boards that are natively supporting NVMe, it is certainly encouraging to see enhanced performance of the RaspberryPi Compute Module 4 by utilizing the hardware that it already has. However, if the original mission of the Raspberry Pi was to educate, then a high speed native boot drive or PCI-express capability could be considered goal displacement. Which again, isn't necessarily a bad thing.
The definition of the Raspberry Pi "educational tool" could be re-examined a little further by determining the number of eras that a tool is supposed to help with. Is it supposed to only teach modern operating systems, or obsolete/outdated ones? A podcast last month reflects on software development of the 1990s with a much more critical eye. 11:30-16:30 talks about software efficiency and the amount of RAM required today is much greater than the earlier OSes, and efficiency has been lost.
After listening to this, I thought, that it would be environmentally responsible to research the Raspberry Pi's performance based on the included RAM, which is far greater than many early operating systems, and the performance would rival many of the NVME carrier boards that are being developed. It is a long established fact that the hierarchy of computer speed is L1>L2>L3>DRAM>SSD>HDD. And of course L1-L3 is too small to run or store anything for very long (unless you count LMDBs :) ). But 512MB of DDR2 RAM? It's not that slow.
After running RISCOS and PuppyLinux 8.2 on a Pi Zero, I was impressed with the efficiency of the code and its ability to use a quarter of the RAM or less at any time. But I found Puppy Linux struggling to load and barely keeping up- it lags because there are a ton of pre-installed applications. RISCOS is ok but also a bit different. Without suggesting that low RAM will constrain one's application needs, I am able to remind myself that the Rp0 is an educational tool to understand how computers work, and they were (and are) still much faster than ones 30 yrs ago. But if the software being used today on a Raspberry Pi is based on software designed for a much more performance hungry operating system, I think it is important to consider whether Raspbian is truly designed for the hardware it uses. If one believes a microSD card is absolutely necessary for a persistent operating system after booting, then they have traded the performance of RAM for the convenience of uSD storage & access to a larger number of apps.
If one believes that a uSD card is not necessary after boot, then the performance of the app intended can be optimized to run at its maximum speed. While some apps require more than 1GB of RAM, and would be unable to run on my Raspberry Pi 3B+, I understand that as a basic computing device, 512MB of RAM is more than enough to accomplish many tasks if only the OS were designed to run a number of tasks at a time.
After installing over 10 live USB images yesterday and performing over 60 tests, I was prompted with a variety of errors:
"Unable to connect to network"
"Cannot write to disk" (8GB out of 32GB used)
Attempting to connect to DHCP server (endlessly)
And a number of other issues.
It is understandable that many operating system developers assume and expect their users to have built in network connections, via ethernet or wifi. The Raspberry Pi Zero has neither. This isn't to say I do not plan to use the two, since I do and have- (I use a usb wifi adapter via a USB OTG cable connected to 4USB port hub). However, for the purpose of an educational operating system, there are few, if any live USB images designed for the Rasberry Pi designed to be run offline and preinstalled.
Let's examine this paradox. The user (me) who downloaded a USB image (ISO file, usually a .img.zip) file by way of access to a second computer. That same person was technical enough to write it to an SD card using an image writer. The image was successfully written and loaded onto the Rpi Zero. But upon checking the boot sequence, the operating system is struggling to load, because it is not a fully featured operating system that resembled OSes from the past like RISCOS, Windows 95 and MacOS. They expect either a high level of CLI proficiency, or no proficiency at all, and an expectation of network connectivity.
The other newbie user (the one who has more command line codes recollected from MS-DOS such as fdisk, cd, and format C than from linux (sudo apt-get install), is encouraged to learn more CLI or bring an USB ethernet adapter to the boot sequence. I am significantly flawed in this regard, because I cannot ask software developers to change their OS. OSes are not written for "newbs." They are written for functionality and a level of maturity. For this I apologize if I sound lacking in that department. I am trying to document the frustration of the process and viewpoint rather than saying OS development is imperfect or wrong. I say that because I think it is better to share a constructive opinion rather than be silent and pretend that I agree with the way everything works.
With that out of the way, I would like to return to the original purpose of this post. It was not necessary for me to purchase a microSD card from any online OS website that sells operating systems preinstalled on a microSD card for those who are unable or unwilling to write the image to the card with a software. That I easily know how to do. What I do not know, or am unable to find, on many ported OSes to the Raspberry Pi, is a website with a very minimal base install option, but includes a graphical interface and lite desktop environment (like LXDE or Qt) & a number of software applications that can be preloaded onto the image before the image is downloaded. That is, many people are going to want to install software from a package manager after their install, but there is no automated tool that lets one choose the software before the image is created and downloaded.
It's not like I am going off-grid , but it seems like the effort required in downloading a package is just as complicated after installation as it could be before. It's impossible to know which apps are needed before or after an OS is installed, and that isn't the point either. It's not that I want there to be every possible combination of apps pre-loaded with an OS as an option on a website. The point is that there could be a tool where that automatically gets generated by the website, rather than by a software programmer constantly receiving requests for those custom spins. Many OSes have different package managers, and of course there would be various different automated image customizers.
https://launchpad.net/cubic does something very similar to this. However this is one of the largest operating systems on linux. Therefore, the system requirements are much greater than a Raspberry Pi, and the performance would not be great, and not just because it is unable to boot from RAM.
So why not make a debian version of this? One that can boot debian into RAM, but have a handful of handpicked apps that were loaded onto the image before the image was written to the uSD card?
Live Operating systems are robots. They do not know that 5 minutes earlier you, a human had access to an 8core, 16 threaded machine with 32GB of RAM and 30Mbps of internet speed. They cry (or bloop and beep) for help as soon as they realize they have no internet connectivity.
Distro development and Image Development could factor in that users are not completely unable to access the internet. Therefore, the alternative to buying a pre-installed uSD card with a number of apps (known to be working) and knowing how to develop one's own distro-or load it after a package manager installs it from the internet), is to develop an image customization tool, but scalable not just for the operating system, but perhaps the kernel modules too. That is something I hope to contribute to, and hopefully others can benefit from, because there is more than one type of newb. I've been a newb for over 30 years.