index concept yachts_and_racing_dinghies system_niches elements_principles designs journal // System Niches Explore a range of niches that computer systems fit into. ::: Niche/1: Real-time systems Platforms that must work well. Many have life-and-death stakes. Key qualities Device should never cease working correctly. Common use of timing guarantees, which must be met. Examples, Computers driving manufacturing equipment Drive systems in motor vehicles ::: Niche/2: Early home system Console driven system with no network. Traditional examples were 8-bit. Modern take on this genre, Maximite Makerlisp ::: Niche/3: Racing dinghy Responsive, single user systems. Key qualities Developer interacts with the system bedrock. Sound and graphics Small kernel with support for multitasking Lightweight desktop, if any. User is all-powerful System ships with tools for interacting with the bedrock. Historic systems tended to be weak on the last point. Examples MikeOS TempleOS Amiga. Well-architected platform. Bundled dev tools were weak, but sufficient for a skilled user to bootstrap. Strong third-party tools available. Atari ST. Well-architected platform. Did it ship with dev tools? Strong third party tools available. Some other systems that come close VGA PC era. DOS, OS/2, Win95 and Win98 shipped with a limited machine code monitor, plus DOS or REXX, which could be used for scripting. Platform awash with legacy complications (e.g. a20 gate). Strong third-party tools available. Transport Tycoon. This DOS game demonstrates many of the qualities of a racing dinghy. What would complete the vision is if it offered a console and programming tools that allowed the user to directly interact with the event loop. Apple IIGS. Limited by legacy constraints. Bundled dev tools were weak, but sufficient for a skilled user to bootstrap. Better after market tools were available. Excellent audio capability. MacOS Classic. System came with no dev tools. Original arch was 68k, similar to Amiga/Atari. After System 7, you could install python break out of the sandbox and do as you liked. JVM, CLR. You can build a universe within these systems. A challenge is that they tend to live on top of yachts. With a lot of effort, you can strip an underlying linux layer and achieve a high level of mechanical sympathy. Examples: LMAX, INET. RetroBSD. Unlike modern unix systems, has no memory protection. Offers a unix userland including strong array of dev tools (assembler, c, several forth dialects). Does not support graphics or sound at this time. But these could be added. BaremetalOS. Strong mechanical sympathy goals. Does not contain its own dev tools, no sound or graphics. There have not been any strong examples of this category since ubiquitous internet. Past systems of this form were vulnerable to malware. This is not an inherent flaw of this niche. Consider if we created a multiprocessor system, with limited memory maps. You could sandbox a process to a specific core with a limited memory map. Our attempt See dinghy. ::: Niche/4: Yachts General-purpose workstation/server bracket Key qualities Developer interacts with a systems API that supports multithreading. Multi-user design Offers a complex desktop environment Interaction oriented around unix-style processes and a filesystem. Sophisticated package management and versioning Tend to have a huge kernel that incorporates networking Examples Linux NT OSX Unix workstations by Sun, SGI, etc BeOS AmigaOS 4 Many of these systems are grounded in the C programming language. ::: Niche/5: Personal Device Phones and tablets have their own niche, the Personal Device. Key qualities Feel matters. Sound and graphics. Developers cannot directly interact with the underlying machine. User is sandboxed in a simple process model. May not have a filesystem. Weak IPC Examples Teenage Engineering OP-1. Pure example. This is a synthesiser built from first principles. It runs some kind of minimal operating system on custom hardware. Low-enough latency software system, beautiful small display, responsive controls let users craft waveforms. Apple iOS. Apple control the whole stack and have created a platform that is able to run commercial quality audio tools. Android. Android is a less pure example. It is a Java shell on top of a linux derived OS. It is not well-suited to low-latency audio work. OTTO. This is an attempt to build a device similar to the Teenage Engineering OP-1, on top of a Raspberry Pi running Linux. Given the difficulties that Android has had, it will be interesting to see whether they can make this work. Might Arduino be a better foundation. Games consoles from Atari 2600 to Nintendo Switch. Fitbit. Less pure example. It has an alarm. ::: Niche/6: Fabric Distributed computer operated by a single party. Key qualities Single interface to a system composed of multiple computing nodes. Examples Mainframes Plan 9 Amoeba ::: Niche/7: Consensus network Distributed computer operated by multiple parties Key qualities Strong emphasis on achieving consensus between nodes. Examples Ethereum ::: Other Word-processors of the 80s. Canon cat, various brother systems. Oberon. Where does it fit? kOS. Where does it fit?