Realized I hadn’t made a dev diary update in 6 months, and thought I’d make an update. I’ve been sort of having an intellectual odyssey on the OS front, and after watching Rich Hickey’s Hammock Driven Development for the nth time, I decided to really spend time making sure I’m working on something that I’ll really love. This isn’t abandoning the goals of the project, but taking a long think about the design before writing line 1.
It does mean dropping Mezzano as the starting code base, though. And before this gets taken the wrong way - Mezzano has a lot of promise, and is already off to a great start. I’m just not sure it’s what I want personally.
I’ve started thinking about what would be the next generation of operating system design, utilizing today’s hardware. I’ve been looking at examples from the past, and this has already yielded a few good observations. I’m looking at spending the winter looking at a variety of computer architectures in addition to OS designs.
Just a couple of quick lists of what I’ll be looking at before moving forward (these will be researched in no particular order).
Processors/Architectures: * ARC * ARM * Apollo Guidance Computer * Blackfin * CDC 7600 * Cell * Clipper * DEC Alpha * DEC PDP-11 (11/40 in particular) * DEC Prism * DEC VAX * HP PA-RISC * Hitachi SuperH * Hobbit * Itanium * LatticeMico32 * Loongson * MIL-STD-1750A * MIPS * MMIX * MOS 6502 * Motorola 68000 series * Motorola 6809 * Motorola 88000 * OpenRISC * OpenSPARC * PowerPC * RISC-V * SPARC * Zilog Z80 * x86 family
Operating Systems: * A/UX * AmigaOS * Apollo Domain/OS * BeOS * Burroughs Master Control Program * CDC Kronos * CDC Network Operating System * CDC SCOPE * CP/M * Chippewa Operating System * Compatible Time-Sharing System * Cray Operating System * Cray Time Sharing System * DEC TOPS-10 * eCos * FreeBSD * FreeDOS * GNU Hurd * Genera * Haiku * IBM z/OS * IRIX * Incompatible Timesharing System * Inferno * Linux * MINIX * MULTICS * MUSIC/SP * Mac OS Classic * Mac OS X * Michigan Terminal System * Midori * MorphOS * NeXTSTEP * NetBSD * Network Livermore Timesharing System * OS/2 * OS/360 * OpenBSD * OpenVMS * PLATO * PRIMOS * PikeOS * Plan 9 from Bell Labs * QNX * RISC OS * Singularity * Solaris * Stratus VOS * SunOS * Syllable * TempleOS * Tru64 UNIX * UNICOS * Unix V6 (Lions book) * VxWorks * Windows 3.1 * Windows 7 * Windows 95 * Windows NT * Windows XP * XTS-400 * Xv6
You’re probably thinking ‘golly, that’s a lot.’ Well, yeah, it is. But given how crucial the design stage is, I’d like to not have missed something truly useful that got passed over by time for arbitrary reasons (ie company went under, was too expensive in 1975, etc). Given a week on each subject, that’s looking at close to 2 years of research. But taking into account this is planned to be a 10-year project, taking a couple of years to dig in deep doesn’t seem like a bad plan. Also, it gives me time to start building out some userland programs to drop onto it when it needs some flexing.
With the time I’m also able to mull between choosing Common Lisp (currently looking at SBCL) and Scheme (Scheme48 or Chicken). The standardized library system that’s in R7RS I think will be the approach to finally seeing real code reusability in that space, breaking down the silos that have resulted from all the implementations having their own modularization schemes. On the other hand, Lisp already has ASDF and Quicklisp. Tough call!