This semester my high level goal is to get a junior position as a systems programmer. In fact right now I should be writing a different post related to this search. Instead my mind has wandered towards why systems software excites me.
In a way this post is a late response to something a co-workers asked over the summer at my Microsoft internship. He wanted to know why I wanted to work in such a “solved domain” as operating systems. You see at Microsoft maintaince is handled by a seperate sub-division from new feature development. Thus within our sub-division the work centred around fixing crashes and patching vulnerabilities.
This to be a dig at Windows and I hope he will not regret expressing his question. Instead the question was something I could not answer to my satisfaction at the time. If anything I must admit that Windows does not excite me but this could just be a factor of how there are no interesting blog posts documenting Window’s development.
From the beginning what has excited me about operating systems is the software.
This list is an attempt to summarize some of those interesting software projects or trends.
BTRFS
Long in development BTRFS has been promised to replace EXT4 as Linux’s default file system. If or when that switch does occur the transition should be smooth. You see BTRFS supports transparent migration from EXT4. Even better this migration is reversible. BTRFS keeps the original EXT4 on disk layout and will write new files in the old free space. At any time you can make the transition permanent by releasing the old EXT4 data structures to BTRFS.
F2FS
A modern file system is built on a castle of lies. The hard disk pretends to have N sectors of M blocks of W bytes. The disk will even lie to the OS about writing data to the platter when the data is only in cache. In simple terms: None of what the HDD tells the OS is true. With the advent of solid state disks these lies drop all pretences of reality. To this end Samsung has developed Flash-Friendly File System which exposes deep configuration knobs. With this configuration F2FS can match its behaviour to that of the flash chip’s and microcontroller’s. The net result is a file system which shows promise. With proper tuning it appears F2FS can fly as seen on the Moto G.
ASM.js
To call ASM.js systems software I must confess my bias towards the web as a application platform. ASM.js is not a new VM or a new language. Instead I consider it a promise. A promise from javascript enginer developers that your ASM.js code will be fast. Already javascript is supposed to be fast but there are always edgecases. Without knowing you can make a hard to optimize javascript program. Before ASM.js why and how you’ve killed performance was opaque. Now with ASM.js we can give warnings and point you towards wiki pages. You can now optimize your inner loop without guessing or reading JS engine source code.
Sandboxing
Every major operating system is making moves towards sandboxing their ecosystem: Windows has Metro, Mac OS X has Mac Store. Meanwhile the mobile operating systems have all been sandboxed since birth. Sandoxing is even getting popular on linux with Docker. In effect sandboxing is the big red button for security. It brings the benefits of SELinux or AppArmor without the configuration. It assumes the applications are malicious and distrusts them. This distrust will frustrate developers used to being trusted. For this reason I am thankful the web has always been sandboxed: no one ever complains their webapp cannot write to the user’s home directory.
Internet Printing Protocol Everywhere
If anything in computing has a bad reputation it is printing. This reputation is well deserved. Now thanks to the mobile computing revolution the printer vendors have come together with the Apple, Linux, and Windows printing guys to create IPP Everywhere. This new standard reuses existing software and existing protocols to bring the holy grain of printing protocols: configuration-less printing. You might have also heard this goal under the name of driver-less printing. This second term is less accurate since we still have drivers but now all the drivers are generic. IPP Everywhere defines a basic raster format all compatible printers and operating systems must support. From there it also requires PDF and JPEG for capable printers.
Of course before you can print your computer must know about the printer. For discovery IPP Everywhere provides both Apple’s Bonjour (used by linux with Ahavi) and Window’s WS-Discovery. The amazing thing is the printer vendors are the ones volunteering to implement both protocols. We on the operating system side can continue using our existing stack!
Now while IPP Everywhere lays our foundation you might be wondering if it can reach wide adoption. You might recognize this situation from XKCD #927. For now we only have hope to bet on. In private I’ve been told some encouraging news but you’ll have to wait another few months to hear it.
Disclaimer
Listed above is what I find interesting. My interests might differ from yours. You may even hate systems software and that’s fine. System software just happens to be where I’ve focused and I appreciate those working at different levels of the stack.