Building the future of computing, with your help
Published by Martin Kleppmann on 23 Feb 2021.
For the last five or six years, since I bid goodbye to the startup scene and Silicon Valley, I have
been increasingly working in public. I have written a book,
given around 100 talks (many of which are
available on YouTube),
published over 20 research papers
(all freely available from my website), and released and maintained
some open source projects.
Just a few months ago I released a new undergraduate-level course on distributed systems, consisting of
7 hours of video lectures and
87 pages of notes and
exercises, all free; in student evaluation at the University of Cambridge,
over 80% rated my lectures and notes as “excellent”.
I love doing first-rate work and making it broadly available. In fact, apart from my book, I give
everything away for free, because I want to be able to reach and help the broadest possible set of
people. And even my book is very cheap compared to the value that many people get out of it (just
read the reviews).
Of course, nobody goes into academia because of the money (or the job security of untentured posts,
for that matter). I would probably be earning five times my current salary if I had stayed in
industry. But I have absolutely no regrets about taking that pay cut: I love the freedom to work on
whatever I find interesting, and the freedom to publish everything so that others can use it. If you
have found any of my talks, writing, or code useful, then you have also benefitted from the freedom
that I enjoy.
Of course, like everybody else, I have bills to pay. At the moment I’m employed at the
University of Cambridge on a fixed-term contract, funded by
a charitable research grant. This grant gives me wonderful freedom to pursue my research and make it
publicly available, but it’s a fixed amount of money, and once it runs out, my job disappears in
a puff of smoke. This sort of grant is not renewable, regardless how amazing the work it has
enabled. I can try applying for follow-on grants from other funders, but this takes a lot of time
and has a low chance of success.
Therefore I am setting up crowdfunding through Patreon, in the
hope of establishing a sustainable basic income that will allow me to continue my work of research
and teaching long-term. I want to continue making most of my work freely available, so that the
maximum number of people can benefit from it.
Why support me?
I am offering three membership tiers for anyone who wants to support my work:
- At the lowest tier, you will get regular news about new things I am working on, and exclusive
early access to drafts and work-in-progress. Keep your finger on the pulse of new research as it
is happening. I will also send you some nice stickers (once I’ve got them printed).
- At the middle tier, you will additionally be invited to participate in an exclusive community
with other supporters and myself, with both live and asynchronous discussions. I hope to
cultivate thoughtful, high-quality exchange of ideas with likeminded people in this community.
- At the highest tier, you get all the aforementioned benefits, plus the ability to influence my
direction when I’m choosing what to work on next. Not saying I will definitely do what you want;
also not saying that I will only take input from paying supporters (I still welcome ideas from
everyone). However, I will consult and engage with supporters at this tier to get your opinions.
I will also acknowledge you in any papers and books I write, making your name permanently etched
into the scientific literature.
However, the biggest benefit is that by supporting me on Patreon you are enabling the creation of
future work: that is, new thinking, writing, talks, and code that would not be created if I had to
spend my time writing grant proposals or working for some company instead. If I have to go and get
a job somewhere, you will mostly hear me giving bland talks promoting the technology of whatever
company I happen to work for. Being independent allows me to pick topics that I find interesting and
important (such as database transactions,
formal verification,
CRDTs, or
elliptic curve cryptography),
and present them in an accessible and neutral way.
I will continue making most of my work publicly available for free (except for books): even if you
cannot afford to be a Patreon supporter, it will still be available to you. Patreon supporters
simply get earlier access, plus the warm fuzzy feeling of knowing that you enabled the creation of
new work that, without your support, may never have existed. Supporting me on Patreon is not
a donation: it is an investment in future work that will hopefully be valuable to you.
If you have found my work useful – for example, if you have applied ideas from my talks in your
work, or if my book helped you get a job – then I would be delighted to welcome you as a
supporter! And if your company uses my book for training
engineers, please find out how your company can support me: even my highest supporter tier is a tiny
amount of money for a company that uses my work to improve the skills of their staff. I only get
around $2 to $5 for every copy of my book that is sold; if you’re getting a lot more value than this
out of it, it would only be fair of you to support me more substantially.
If you cannot contribute financially, worry not. I equally appreciate your support in the form of
contributions to the open source community, discussing interesting ideas with me, and sharing useful
material with others. I will continue to engage with you and answer your questions, regardless of
whether you are a paying supporter. And most things I produce will continue to be free, so that
everyone can benefit from them.
Planned work
Keep in mind that when you support me, you are not buying a product. You don’t know exactly what
you’re going to get, because I don’t know exactly what I am going to do in advance either. That’s
why it’s called research – it’s open-ended, and part of its purpose is to go down unexpected
rabbit-holes if they seem important! You are funding a person because this person has done good work
in the past, and is likely to continue doing good work in the future.
I do have a lot of plans, though. At a high level, I am hoping to do these things over the next few years:
There is no concrete timescale for these things; most likely I will work on several of them in
tandem, as I have been doing over the last several years.
Part of this story is creating educational content on topics that I find important, and part is
a vision for the future of collaborative computing, which my collaborators and I are realising in
the form of Automerge, an open source project. Our vision
is articulated in the essay-cum-manifesto on
local-first software, which I suggest you read if
you haven’t already.
Research philosophy
For me it is important to have this mixture of research, open source software development, and
teaching (through speaking and writing), because all of these activities feed off each other.
I don’t want to just work on open source without doing research, because that only leads to
incremental improvements, no fundamental breakthroughs. I don’t want to just do research without
applying it, because that would mean losing touch with reality. And I don’t want to just be
a YouTuber or writer without doing original research, because I would run out of ideas and my
content would get stale and boring; good teaching requires actively working in the area.
This interaction was articulated wonderfully by
Turing award winner Jim Gray:
I aspire to be a scholar of computer science. All fields of scholarship, from religion to
medicine, emphasize three aspects: meditation, teaching and service. Meditation (called research
by scientists) is the official part of research. But, teaching (writing papers, explaining your
ideas, and transferring technology) and service (making computer systems and helping people use
them) are also major aspects of the scholarly process. They keep the scholar in touch with
reality.
— Jim Gray, 1980
(That’s from Gray’s letter of resignation from IBM. The whole letter is a fascinating read if you’re
into computing history. At the time Gray was working on
System R, the precursor of all
relational databases we use today. It’s fair to say that his work has had a huge impact.)
Another aspect of my research philosophy is that good work rarely happens with one person alone, but
through collaboration with other good people. Quoting Jim Gray again:
Computer science is an empirical and multi-disciplinary field. The aspect of it that I work on,
computer systems, requires lots of good people, time and equipment to produce anything of
interest. Projects of five or ten people working for five or ten years seem to be about the right
scale. More modest projects are unable to attack significant problems. More ambitious projects
have unclear goals and have management problems.
You might be wondering: even if I get enough Patreon funding to cover my own living expenses, it
seems unlikely that I will be able to crowdfund a team of five to ten people. Fortunately, I have
found over the last years that collaboration does not require all team members to be funded out of
the same purse. I constantly collaborate with people without being responsible for their payroll.
In open source, it is common for contributors to a project to be employed by several different
organisations, and indeed such diversity makes projects better and more resilient.
I work closely with the Ink & Switch lab, who have their own
funding. Some of my collaborators are PhD students who have their own stipends, or research fellows
who have their own grants. We come together because of our common interests, and because nobody is
trying to profit from the others. We have a vision of the future that we want to realise, and the
funding just lets us pay the bills as we work towards the greater goal.
Of course, if my Patreon ends up being successful and generates more money than I need for my own
living expenses, I will use it to help fund collaborators. I am not aiming to recreate the lavish
Silicon Valley engineering salary that I left behind; I just want to do good work without having to
spend a lot of time chasing grants.
Alternatives to crowdfunding
Before moving to Patreon I considered several alternatives:
- Academic jobs and fellowships? It’s a difficult to get a stable position at a research-focussed
university. Both jobs and funding are fiercely competitive (hundreds of applicants for one place),
and they require a strong track record of publications. Unfortunately, there is a
large degree of randomness
in the choice of papers that get accepted to top-tier publication venues. I am still interested in
an academic career, but it seems unwise to put all eggs in this uncertain basket. Oh, and due to
the pandemic my current university has a hiring freeze anyway, so no jobs anytime soon.
- Founding a startup? Been there, done that
(twice). A startup is a great way of productising technology on a 1–2 year time scale; it also
needs fast growth and/or a strong revenue model. My current work does not fit that model since it
focusses on foundational technolgies with a longer time-scale (the 5–10 years mentioned by Jim
Gray), and it aims for public benefit rather than private profit.
- Getting a job at someone else’s company? I want to be free to choose what to work on based on what
I believe is important, not whatever happens to suit a company’s agenda. I also want to be free to
publish that work openly. Not many companies are willing to support such positions long-term.
- Consulting work and training? I could spend a fraction of my time helping companies solve problems
within my area of expertise, or running training workshops. However, this type of income can
fluctuate wildly, and generating a steady stream of clients is a lot of work and very distracting.
It’s difficult to make consulting compatible with the deep thinking and long-term view required
for research.
- Becoming a professional author? I have been able to draw a reasonable income from
royalties for sales of my book.
However, I have no idea how long those sales will last, and I have no idea whether any future book
I write will sell similarly well. Given this unpredictability, it seems unwise to bet on royalties
as only income. Moreover, book-writing is only one of several things I do, and I believe the
other things generate value too. I believe my funding situation should reflect that.
With crowdfunding, I hope to not only generate a steady income stream, but also build a community of
people who are excited about the same topics as me, and who are invested in making these ideas
a reality. It is an opportunity for me to share early-stage work with enthusiasts, and to improve
that work through feedback from the community. And it is an opportunity for you to get an insider
view of the research process as we build the future of computing.
If you believe in our vision for
a better future of collaborative computing, or if
you want to see more high-quality educational materials for computer science, then why not head over
to Patreon and pledge your support? It will make a huge
difference. Thank you!
If you found this post useful, please
support me on Patreon
so that I can write more like it!
To get notified when I write something new,
follow me on Bluesky or
Mastodon,
or enter your email address:
I won't give your address to anyone else, won't send you any spam, and you can unsubscribe at any time.