NiceBSD Dev Diary 2015-09-20

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).


Operating Systems:

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!