OS/Language Dreams

The quest for software that doesn't suck

This is my current setup. It sucks, but slightly less than the alternatives. (ALL operating systems suck)

  • a plain vanilla Fedora or Debian or Ubuntu Linux installation
  • GNOME XFCE KDE and i3wm desktop environments
  • Firefox and Chrome
  • Javascript for most of my programming. C for performance and low-level interfacing (or C++ when it's compelling).
  • GIT version control, and GitHub for open-source sharing
  • VIM text editor
  • LaTeX for fancy math/science typesetting (and occasionally the LyX GUI front-end)
  • MuseScore (and occasionally LilyPond) for fancy music typesetting
  • JACK, Qtractor, Mididings, etc for recording music

The ideal programming language is easy to learn, but not limited to beginner's stuff. It is convenient and productive for serious programmers. It has a good balance of simple elegance, brevity, readability, and abstraction facilities. By default it's a dynamic ("interpreted") language -- easy, safe, garbage-collected, and portable. (It could achieve modest performance using techniques like type inference, incremental compilation, and JIT compilation.) When necessary, you can add type declarations for static compilation and error checking. For even more control you can use pointers, register variables, inline assembly, and direct machine code generation. Macros/templates facilitate higher-level abstraction. Arbitrary limitations are not codified in the language -- unsafe, unsavory, and non-standard code is selectively allowed.

The ideal operating system is written in the ideal programming language. As much as possible, it relies on language-level protection. It is not a one-language OS, however. Shared resources (processors, storage, peripherals) are accessible via both high- and low-level interfaces, which are suitable for safe and unsafe languages. The OS provides secure isolation mechanisms for untrusted code. If they really want to, hackers may use totally unsafe languages (like Forth) to interactively debug the OS internals and hardware (if they own it, of course).

System software in general should be simple, adaptable, secure, reliable, long-lasting, and public-domain (that is, "free and open source").

That's what I'm looking for. I don't expect to see it until language design reaches a plateau.

I'm hopeful about Javascript....

Documents

  • Rationale, April 2010.

    An evolving document, full of philosophical ramblings and anecdotes :-)

  • Report on the "Retro" Forth OS project, April 2010.

    Retro was an exploratory, extremely minimal Forth-based OS for 80x86 PCs that I developed from 1998 to 2003. This project could be seen as a template for an engaging hands-on introduction to some of the fundamental subjects of Computer Science: low-level architecture, compilers and operating systems.

  • Personal reflections on the Tunes project, April 2010.

    Tunes was an ambitious OS project of the 1990s that fizzled due to project management mistakes more than anything else. In this essay, I distill what I think are the essential ideas in Tunes.

Blog

2012.04.17
An Unambitious OS Proposal