lecture: library operating systems
reject the default reality^W abstractions and substitute your own
Traditional models of application development involve talking to an underlying operating system through abstractions of its choosing. These abstractions may or may not be a good fit for your language or application, but you have no choice but to use them - you can only layer more abstractions on top of them, to try to lessen the pain of a bad match. Library operating systems let you write applications that use better abstractions in your own language - either someone else's abstractions, or your own.
This talk is an overview of library operating systems that focuses on the benefits to application developers. Interfacing with lower-level systems using familiar abstractions, rather than alien ones, is a thing of joy -- in testing, reasoning, modification, and participation. Operating systems programming doesn't have to be an arcane black art requiring a totally different set of skills from your day-to-day application development. It can be comprehensible, documentable, testable, and hackable with your everyday tools. Operating systems hacking is in reach!
Examples (when appropriate) will be given using the MirageOS library operating system, which is written in OCaml, but principles discussed are applicable to other library operating systems projects including IncludeOS in C++, HaLVM in Haskell, and many others.