In March last year, I wrote a blog post called The Goal. In it, I said:
Three years from now, I want to be working less than full time on proprietary software, and be doing some amount of regular work on open source for which I am paid.
And how was I going to do it?
It could be time dedicated by my employer for me to work on open source software. It could be my full-time job. It could be crowdfunding. It could be something I can’t even think of at this point.
A lot has changed since then. For one thing, I’ve learned the importance of free software in contrast to the “open source” I spoke of at the time. And, as I predicted, my eventual path toward achieving this goal was something I couldn’t imagine at the time.
Last year, a couple of months after I wrote that, I went to tbd. For the first time, I was with a critical mass of people who thought like I did about society, computers, and the intersection between them. It was the first time I went to ADM, which introduced me to the global squatting movement, and, despite its eviction in January, remains a source of inspiration and hope to me now. And it was also the fertile ground that enabled a small idea I had to sprout into something much, much bigger.
I’d recently been introduced to Nix, the purely functional package manager. This, I realised, was how computers should be. Finally, a computer that I wouldn’t be able to get into a fucked up state with no idea how I got there, and no way to get back to a configuration I liked if I did a clean install. No more hacky shell scripts approximating reproducibility. I could have the real thing.
Several years ago, I came across Qubes, and I was sold instantly. Why should I have to try to maintain the different parts of my life in a single box, where no matter how hard I tried, I could always be tracked, identified, and spied upon? Qubes offered a feasible solution to these problems, and it even looked like the concept of multiple security domains could be helpful in organising data, which I’ve always struggled to do effectively. I think, for most data, hierarchical file systems are not the most effective tool, but that’s a thought for another time.
I made a huge investment into Qubes of both time and money. I had to buy expensive new hardware that looked like it had a good chance of running Qubes well, and I had to spend a lot of time learning about the system. Even installing it took ages, due to an install process that was extremely difficult to debug. And even after that, I just couldn’t get into using Qubes. Instead of having one computer to manage, I now, because of all of my Qubes domains and templates, felt like I had to manage 20. People proposed using tools for configuring fleets of servers to stay on top of this. It was clear to me that this was not the future of personal computing, as solid and important as the security ideas behind it were.
But, why couldn’t there be a computer system that had the isolation features of Qubes, with the security domain model, but with the ease and confidence Nix gave me when it came to system management? Without something like that, it felt that any attempt at security by isolation would be doomed to failure because of how annoying it is to imperatively manage a Unix system.
Other problems became apparent to me too. In pursuit of near-perfect security, Qubes made security through compartmentalization inaccessible to the vast majority of people who could not justify buying expensive new hardware to be able to run it. Somebody without such hardware might not benefit from hardware isolation, but it seemed wrong to me to deny them access to file system or network isolation because of that. After all, there can be no perfect security, and it’s important to not let perfect be the enemy of good, especially when the non-compartmentalized systems in widespread use today are so bad when you stop to think about how easy they are to exfiltrate data from.
And so, I experimented, and a couple of days later I had a proof of concept. Qubes-style isolation, managed by Nix, composited into a single desktop environment. And then, in a room at tbd, at a talk I made up on the spot, having decided to give only a couple of hours prior, I asked why this system that seemed so obvious to me didn’t exist. Surely, I thought, I must have missed something. There must be a reason. But, to my total surprise, nobody pointed out that it couldn’t work. Instead, people seemed excited. Following the talk, I had somebody ask me whether I’d considered doing a Ph.D. to pursue my idea (she was disappointed to learn I didn’t have a degree). A Tails developer gave me their contact information and told me to stay in touch. And rysiek sat down with me and talked to me for hours about the idea, and made sure I created a social media account for the idea, so he could keep up with it if it ended up going anywhere.
Throughout the next few months, I told more people about the idea, especially in the Nix community, and the reaction was overwhelmingly positive. As it turns out, quite a few people have felt the need for exactly this.
A few months later, rysiek pointed me towards NLnet, and told me to consider whether my idea might be a fit for their Privacy and Trust Enhancing Technologies grant program. I’d never considered anything like this, and it was surreal that an idea I’d had and played around with had taken on such a life of its own that this was something I could even consider, especially since I hadn’t done any more work on it since developing that first proof of concept before tbd.
A few months later, I had submitted the application, thanks to a huge amount of help from spacekookie. And after another few months, and a few rounds of waiting and back-and-forth, I was accepted.
And so, today was my last day at FreeAgent. It’s been an amazing couple of years, and I’ll miss it a lot, but the stars have aligned to give me such an amazing opportunity I had no option but to move on.
Becasue, for at least the next year, I’ll be working full time on free software, having been funded by NLnet and the European Commission to work on Spectrum, the Nix-based security-through-compartmentalization operating system I envisaged all those months ago. Things are still early stages for the project, but I expect a lot to come from it, now that I can devote my full attention to it. The first things to do now are to get project infrastructure set up and finalise some details of the grant, and work on these has begun already.
Although my funding is for Spectrum, I expect to be able to work on free software much more broadly over the next year. Certainly, a lot of my work will make its way into Nixpkgs, which I was very excited to receive commit access to some months ago due to my other work on it. And there are some further projects of my own to come as well. In addition to working on Spectrum, I’d like to diversify my funding. I hope to be able to take donations for my free software work on Spectrum and other projects, to make this important work truly sustainable for me. I couldn’t sensibly do this before, because I couldn’t guarantee that I’d have any time to spend working on what people would be giving me money for, but, in this new arrangement, I have a lot more freedom and capacity to choose how I spend my time. I don’t expect donation income to pay my bills, or even be significant, but I’d like to explore it, and until now I haven’t had the space to do that.
When I had a call with NLnet recently, I was told “you work for the internet now”. And that evoked the most powerful feeling of purpose and drive I’ve ever felt in my life. I’m sure that this is the start of something amazing, and I’m very excited to get started.
You can keep up with me here on my blog, which should be a lot more active now that all of my work will be out in the open. Additionally, more information (including much-needed communication channels) will appear on Spectrum’s website as soon as I get round to setting it up. I hope you’ll join me in seeing where this goes. But for now, it’s late, it’s been a long day, and this has been a long post. I’m sure there are things I wanted to get across here and didn’t, and I’m sure there are things I could have said better. But I’ve been keeping this news close to my chest for so long. I’m just so excited to finally be able to share it with the world.
Credit rysiek with being the person who encouraged me to apply for the grant. (I wanted to get permission before I did, so he was kept anoymous in the original version of this article.)