TL;DR: Building open technology is a responsibility towards billions of non-programmers.
Three years ago I quit my day job to save the web. It was a fluke opportunity, born more or less by accident from a holiday project, but I took on the challenge and made it my serious mission. I spent this time mainly working out how unhosted web apps can work. I met some wonderful people who joined, and together we created the unhosted web apps "movement". Projects like remoteStorage, 5apps, sockethub, Terms of Service; Didn't Read, and Opentabs all sprang from this.
And now I will continue. I hereby increase my commitment to saving the web, by also joining the Indie Web movement. This (indie!) blog post is about my motivation for that.
Saving the web
By saving the web I mean several things, but they basically amount to stopping the current trend where consumer tech is dominated by a shrinking number of big platforms. These user data platforms use the web as just a transport to connect users with a specific one of them. Instead, the web should itself be one open user data platform. If we let this trend continue then we will all have our user data on either Apple iCloud, Google Drive, Microsoft SkyDrive, or Dropbox Platform. These four platforms will not be compatible with each other, and the software tools you will be able to use will depend on which platform you have your data stored on. The task of saving the web consists of separating 1) software, 2) device, 3) hosting, and 4) content all back into independent layers.
Primarily, I would say, our task is to push the web as a universal platform that separates software choice from device hardware choice, so that one software tool (app) can be used on any hardware device. Mozilla, W3C, and Google are contributing to this by pushing the html standard forward, both in the browser and on mobile. I don't have any numbers, but I guess there must be like 100 people developing WebRTC, 100 developing CSS, etcetera, adding up to some 3-digit number, say 500 people working full-time specifically developing the html platform - let me know if you have a better estimate. These heroes are literally one in a million among the world population, but they're doing a very good job; it feels like html is making very rapid progress and standing its ground against competitors like iOS.
Second, there is the network effect of content locked up in silos. Indie Web fixes that by taking the content out of the social web silos and allowing cross-silo communication. Hugely important research for the future of consumer tech! But unlike with the html platform, the number of full-time people working specifically on Indie Web is nowhere near the number of people needed to do the job. The number of people working full-time on federated social web and Indie Web is what, 50 people in total maybe? And then, we are not even talking about full-time engineers. Many of these 50 or so pioneers are weekend heroes, who have an unrelated day job on the side, or their day-to-day will consist largely of paid gigs for clients.
And lastly, when software apps are device independent, and content is silo-independent, we are not done saving the web yet. We will still need to make sure both our software choice and our device choice stay separate from our choice of personal cloud storage. Devices are being locked to specific cloud storage vendors (think iPhone-iCloud, Android-Google Drive, and Windows Phone-SkyDrive). This is a horrible situation, and it's why we need remoteStorage: a standard, cross-origin interface to connect a user's own cloud storage with a web app that runs on their device: per-user data storage, for the web.
I am convinced that after the html platform breaks open the device platforms, and the indie web breaks open the social platforms, remoteStorage (or something that will improve on it) is the third of three things the web really needs today: Breaking open user data platforms. I'm convinced it's very important for the future of the web, but a very small percentage of the world population have assigned themselves the task of making something like remoteStorage a success. For some reason unknown to me (by now, I gave up wondering why), hardly anybody is working on per-user data storage for the web. But I know I am!
I chose not to choose life
Before I quit my "day job", I was working at Tuenti.com, a Spanish social network which was wildly successful. This meant kids in the street would treat you like a celebrity when they see you walk out of the office, and want to take their picture with you whenever you wear a T-shirt or a hoodie with the name of your employer on it. Working at Tuenti was not only great because people sometimes treat you like a rock star.
It was also a great place to work with some of the best engineers in Europe brought together. And working on a website that runs on a thousand servers was exciting, both because of the amazing scale and impact of your everyday tasks, and because of the originality of challenges you face, boldly going where only a few famous scalability engineers have gone before.
Some of the excellent engineers who were at Tuenti at the time are now at Google or Facebook. At university and in the industry, at least for us, making it into Google is viewed like a great honour, a bit like representing your country in the Olympics. Even knowing somebody who makes it into Google, is like if someone from your sports team makes it to the Olympics. It's the ultimate fame. We're all implicitly trying to climb a ladder, and Google is simply at the top.
Making it into Tuenti is already a career achievement, and therefore a significant odds multiplier for this, both because it acts as a pre-selection, and because it is a unique and valuable training. There are not so many places in Europe where you can work with Giga-pagehits-per-day infrastructure and be surrounded by dozens of people who are smarter than you, and the recruiters know this.
This was one of the things I had to consider when quitting my job to pursue this unsure non-profit project: I was basically giving up a valuable career. Except, I wasn't. One colleague already told me "within a year of working full-time on a free software project, you'll receive a phone call from one of the big ones." I didn't believe her at the time, but she was right: within a year, both Google and Facebook had asked me to come for an interview.
It makes sense as well in hindsight - people who lead a free software project are simply very visible. You end up talking at conferences and getting mentioned on Twitter. I'm quite an average engineer, but now at least I'm visible to recruiters, instead of being a nameless average engineer somewhere in a department at the back office of some company in some country. During the last 3 years I spent all my savings on the project, and only took just enough money to get by from the donations pot. But because of this visibility, I could now probably get a much better paid job than three years ago, if I wanted to. In a way, quitting my career was the best career move I ever made!
A lot of people who work on a free software project, do end up getting recruited that way. The logical next step for me, after three years of working for the cause, would be to get a nice job again somewhere. In fact, in terms of job comfort, I would like to do that. I like being an employee in a good team. I like being a cog. Right now, I see myself more as a projectile than as a cog. :)
Being a projectile is stressful and often hard. PhD students know this, for instance. You become a world-level expert in some tiny topic, which is amazingly exciting in some ways, but in practice, you also find out nobody will probably ever read your thesis, so you also have to learn to self-motivate, and that is fucking hard. What I didn't know when I started, is that trying to save the web is fucking hard in that same way. You have to self-motivate and stubbornly believe that where you are going is where your virtual shareholders (namely, all the future users of the web), want you to go. Being a cog in the machine is much more mindless, and therefore much more comfortable.
Still, I declined the interview offers. It would indeed have been a dream come true to go work among all these famous smart people, form a part of their team, and earn lots of money at the same time. Most friends told me I should at least have gone to California to do the interviews, if only to get a look "inside the temple". But I didn't, because saving the web is more important.
The obvious solution to this friction between personal mission and job comfort is to aim for the promised land, as I call it. In my case, the promised land would be Mozilla. People there have the professional comfort of being part of something bigger, yet they still get to work on saving the web. Also, unlike most other "you-made-it-to-the-Olympics" employers, Mozilla doesn't force you to move to some horrible suburban (silicon) valley which I heard is populated primarily by SUVs. And you get to work with all these awesome Mozillians, who are not only smart as engineers, but who also understand the importance open technology. Mozillians are double awesome in that way, and Mozilla is full of them! I imagine working there would be amazing.
In your case, the promised land might be Canonical, RedHat, Spotify (arguably), or Joyent (getting paid to work on Node), etcetera. Having a job again would definitely help me fit into polite society better. I could still be doing something just as valuable, or maybe even more valuable, for humanity. In fact, if the goal is doing what I'm good at (or in my case, what I'm average at), with maximum impact on humanity, I should probably move to New York and become a web developer for charity:water (do follow that link if you haven't heard about charity:water yet).
But despite the fact that being a projectile on an underfunded rogue project is fucking hard, something is holding me back from sending my CV to the promised land or to charity:water just yet. Partially, being outside my professional comfort zone is an adventure; it is exciting because I never know what's going to happen next. It is a "life hack" that allows me the freedom to travel and be my own boss. It makes me feel like I didn't grow up yet. I like to think of myself as being about 10 years retarded, and I like to keep it that way, because I still have a hell of a lot of time left in my life for getting old, repaying a mortgage, and rotting away at the end of it all. Choose a job? In the words of Trainspotting, I chose not to choose life. I chose something else. It's uncomfortable and Bohemian, but it's also bloody exciting!
Is there a doctor on board?
There is another, more important reason why I said no to the headhunters, it's not just about adventure versus comfort. If my only goal would be to live an exciting and interesting life then I would quit programming right now (as I said, I'm quite average at it anyway) and become a musician. And if I saw enough people worldwide already working on saving the web, then I probably would. I would rest assured that the web is going to be just fine, and make fine sweet music instead for the rest of my days. But there aren't. Way too few people are working on this for me to also leave.
I realize that this planet is organized by the personal goals of people, the commercial goals of companies, and the political goals of politicians, but still, shouldn't more people be working on saving the web? Nobody denies the importance of web and mobile technology as tools for homo sapiens. And nobody denies that it's bad that users are being ushered into a small number of incompatible silos. I would expect the amount of effort spent to try to save the web to be smaller than the effort spent on warfare, or on selling soft drinks, or on producing TV shows. But I think 1/1000th of a percent of the world population (about 70,000 people) would not be too much to ask for, given the importance and the urgency.
And now here's the thing: We are less than a handful of people working full-time on remoteStorage, whichever way you count. PouchDB, NimbusBase, Hoodie, StackEdit and a few other projects are all similar to remoteStorage in some way, but as far as I know, remoteStorage is the only project in the world that is aiming to create per-user data storage for the web. That is positively crazy and scary at the same time.
We are such a small percentage of the world population working on such important stuff. Right? Where are those other 69,000 engineers we need to develop the html platform, the indie web platform, and the user data web properly on a global scale? Or am I missing something here? I hope now you understand that it would be simply irresponsible of me to stop working on open web tech, even if I wanted to.
Maybe in the future I can imagine concluding that our goal of creating "a user data web" is impossible to reach because of specific empirically proven reason X, or that the landscape changed and something else became more urgent. I know of course that saving the web is a lofty goal and that we will have to fail and restart a lot of times, but that's not a reason to give up. If anything, the opposite. When the task is challenging, then more people should try harder.
Especially if you compare it to the way Microsoft pushes SkyDrive, the way Google pushes Google Drive, and the way Apple pushes iCloud onto the consumer devices they each control. Compared to that, the open web has a hugely understaffed per-user data platform development team. Unless there is some other team somewhere whose existence I'm unaware of, on a global scale, about one in a billion people work on it.
Now there's nothing wrong with companies that make money by offering the technology consumers want. And I'm not saying you as an individual should stop using Apple or Twitter, or that Facebook is evil, or that you as an individual should become a freedom hacker. Maybe Samsung and Vodafone will one day work out that they should spend more money on R&D to stop the dominance of iCloud and Dropbox.
But I'm not saying this in a disappointed or judgmental way. Everyone is free to work on whatever they choose to work on. I'm just observing that the open tech community should develop the corresponding open technology for each successful proprietary technology, and in this case, we're hugely understaffed.
If you look at the reasons people list to work on Indie Web, they all focus on the benefits of having your own website. I think this wiki page has been written like that on purpose, but I still find it striking. I hardly care about having a website myself, I could easily do without it. Apart from keeping up with tech news via Twitter, I have personally never been a big user of the social web. This is not about what I get out of it. The reason I am now starting my own Indie Web site, is because so many non-programmers can't. We programmers are the only doctors on this flight.
There is so much activity in the world that is just concerned with running shops and building houses. A lot of the base luxury, and safety from heat/cold/hunger/thirst/illness/injury, comes from this activity. Billions of people work on running shops and building houses, and that's fine. But then there is the technology boom into which our generation was born. In the future, people will probably look back at our century mainly as when the internet was invented. They will probably look back at our decade as when the iPhone was invented.
The importance of the current tech boom in the history of humanity is astronomical. And we programmers are the only ones who can change the outcome of this revolution. I have this crazy idea that if you're smart enough to work this out, then it is therefore your responsibility to work on something useful.
About 0.1% of us who know how to write a computer program and run a server. The other 99.9% of the world population can not choose to join the Indie Web, because they don't possess the skills. Think about that.
Of those few million programmers, the vast majority doesn't care about contributing to open technology. That's their fair choice and freedom. But I'm one of the people who, inspired by Eben Moglen's "Freedom in the Cloud" talk and the encouragement of one colleague at the time, said yes, let's give it a go, let's try and save the web. I'm convinced that it's an important task, in the same way a soldier is convinced it's important to represent their nation state in warfare, and a monk is convinced it's important to represent their community in a monastery. It feels like there is a very very very small percentage of people on this earth convinced that they have to save the web. But I'm one of them.
And that is my reason to continue to work on remoteStorage, and also my reason to join the Indie Web. Not because I want my own website to be indie, but because I want a world in which a billion websites are indie. Over the past few weeks I worked through levels 1, 2, and 3 of indiewebify.me and IndieMark (it's fun! try it!). This weekend I followed the live feed of IndieWebCamp San Francisco and got to know a few of the faces. I subscribed to all your rss feeds. :) At first I will mainly experiment with my own site, but in the long run I aim to set up a non-profit personal hosting provider, offering one-click-install of a range of Indie Web and Personal Cloud servers for non-programmers.
We need to provide non-programmers with the necessary tools to own their data. We few, who happen to know how to boot up a server, have now had that responsibility fall into our laps. It's like when someone on a plane gets unwell and you happen to be the only doctor on board. Of course you go and try to help out, it's not even a choice. Not doing so would feel like harmful negligence. Even if I'm not a very good doctor, I happen to be on this flight, and I'm proud to get up out of my chair and go see how I can help.
That is my motivation.