00:00:06.080
Thank you, everybody. So here we go with sustainable open source software development—whatever that means.
00:00:11.840
First, I have to say that today is a very special moment for me to be here and see you all. I see a lot of old friends in the audience, and I hope to make a few new friends before the conference is over.
00:00:17.320
I haven't been present much in the past few years. This is actually the very first time I am speaking in Bulgaria since 2019.
00:00:20.039
I wonder why that is, and before the conference, I was told that a close friend of mine was circulating the rumor that this is the very last talk I'll ever give, so I better do it well.
00:00:26.480
You might have noticed that my profile picture across social media is from the last conference in Bulgaria, so I really need a good new profile picture.
00:01:06.759
What has happened in those five years? One thing you know, but there are many things that you might not know. Let's start with the good stuff: Ruby 3 is finally real. I long traveled around the world claiming this would never happen, so I guess I was wrong.
00:01:11.159
Some even more improbable things have occurred, like Manchester City surprisingly winning the Champions League and Argentina winning the World Cup. I didn't see that coming. Napoli also won Serie A without Don Diego.
00:01:19.720
And here's where it gets really crazy: this is the man who has been in charge of saving Bulgarian football. So I don't know, in Bulgaria, impossible is truly nothing.
00:01:26.480
But still, on the other hand, a lot of things remain more or less the same, like my name and my handle on most social media platforms. However, Elon Musk made it more interesting this time because he compelled me to embrace some new things.
00:01:35.640
I now have different handles here and there. I'm not sure if this is the right logo I'm looking at, but it certainly is a Mastodon logo.
00:01:44.000
Absolutely, I am older today, allegedly wiser, but not really. If I were wiser, would I inflict four hours of this upon myself? It gets worse.
00:01:48.560
I recently decided to reread the Wheel of Time. It is just as bad as I remembered, and it has been taking me about two years to get through it. It's quite hard, but I’m glad June is solid.
00:02:01.640
Third time's the charm! Finally, a good Dune movie, and the books are still worth rereading.
00:02:06.040
Now, do I have something about programming in this talk?
00:02:08.960
This is important. My talk was supposed to be excellent, but I discovered Fallout, and I didn't work on the presentation at all. I can tell you that Fallout is really great, though.
00:02:14.399
Also, another thing that has changed is this: I used to be able to drink like Nick, but now I am older, not wiser. I drink only wine because I'm a weak man. But I drink only German wine.
00:02:19.600
This part is especially dedicated to my friend Chavier because absolutely nobody in their right mind is going to appreciate it. We share a passion for mechanical watches. This is how my Instagram looks right now.
00:02:26.760
Oh yes, obviously I like watches. I'm not sure who this guy is, so somebody should tell me after my presentation.
00:02:30.640
But I'm the kind of weirdo who watches Apocalypse Now and notes that Martin Sheen wears a lovely Seiko 6105, and Marlon Brando wears a Rolex GMT Master.
00:02:37.760
The filmmakers really had something to say about watches because you can see the tension—the competition between Japan and the old world. Good stuff.
00:02:41.839
This is actually the watch I am wearing right now, the watch from Apocalypse Now.
00:02:43.839
And, I realized one thing: if you have a Seiko watch on your left arm, this makes you a 30% better Ruby programmer.
00:02:49.760
If you have Casio, 40%. If you have Citizen, it has no effect even though it's made in Japan.
00:02:52.560
If you are Nick and you only believe in... well, this is the only word in German that I know other than Prost.
00:02:56.480
Nick approves. Yes, there is something about programming in this talk as well.
00:03:02.080
I'm still doing a lot of open-source work, even though this slide hasn’t been updated since October 2013.
00:03:06.080
I haven’t updated it because I know it is going to look a lot worse right now.
00:03:10.000
I've done some things in the Ruby community that you might hate. I will mention that RuboCop, since very recently, supports the new super modern, super fast parser.
00:03:13.000
In other words, it's even faster. It had a small birthday on the 21st of April.
00:03:19.040
For open-source projects, I think years should be multiplied by 10 or 20, so RuboCop is like a 120-year-old person. This means something.
00:03:25.600
We achieve some small milestones here and there.
00:03:28.720
I noticed that RuboCop is the 68th most downloaded gem in Ruby's history.
00:03:32.080
Interestingly, some other gems like Ruby Progress Bar and Rainbow are dependencies of RuboCop.
00:03:35.120
So when you become a dependency of RuboCop, you immediately get 400 million downloads for free, which is nice.
00:03:39.920
As our MC alluded to at the beginning, I have done some other open-source work as well, mostly in the Clojure community with the Cider IDE.
00:03:43.760
Are there any Clojure developers here? One? That's underwhelming.
00:03:47.160
Any IMO users here? I should just leave the stage.
00:03:49.680
But I'm not saying this to boast. I'm saying this because I feel I'm kind of qualified to speak on today's subject.
00:03:52.160
Namely, sustainable open-source development.
00:03:54.160
I know what you're wondering right now: sustainable open-source development? I thought this is something fun.
00:03:59.360
You know, you have some free time and you create a project? Well, I think it's not as simple as that.
00:04:01.200
First of all, there are broadly two types of open-source projects.
00:04:04.160
Number one is enterprise open-source. You all know it—hopefully, you hate it as much as RuboCop does.
00:04:09.040
Enterprise software always seems like such an exciting term, something that maybe came out of Star Wars.
00:04:12.000
But in reality, the main thing that enterprise software has going for it is that it's sustainable out of the box, which makes it boring.
00:04:15.120
We are going to talk today more about the other category: hobby or hacker open-source.
00:04:20.960
I call it H because I want to invent new abbreviations. Some people call it TROS or TOSS, but I think H is better.
00:04:27.360
This is the type of project that you start and keep going for a reason that you're not completely aware of.
00:04:31.760
I'm going to tell you the story of an open-source developer named Nick Sutterer.
00:04:34.960
Nick had a problem he was passionate about. Do you have any ideas what it might be?
00:04:39.560
No? Okay, he didn't have plans for world domination, even though Germans typically do.
00:04:42.760
Others found his brilliant work. They felt it was useful and improved upon the Ruby on Rails experience.
00:04:47.640
Nick achieved world fame, whatever that means, but now he was kind of sad.
00:04:51.360
He had to do work he never envisioned or wanted to do.
00:04:54.360
He had to attend many conferences and meet people, which made him feel miserable.
00:04:58.080
Nick doesn’t like people, and he doesn't like drinks. Most importantly, he doesn’t like working on tasks he doesn't care about.
00:05:02.600
Like many feature requests he receives for Trailblazer, at some point, his hobby project became more about work with no pay.
00:05:09.640
As you can see, Nick is miserable; he feels the pressure of countless responsibilities.
00:05:13.040
When he started with open source, he felt he would only try to write beautiful code.
00:05:16.560
But the responsibilities of open-source maintainers stretch far and wide, going beyond just writing code.
00:05:20.080
You do get to write some code, but you have to review a lot more if you maintain a successful project.
00:05:24.000
Everything I’m saying today revolves around successful projects because if you don’t have users, you don’t have problems.
00:05:29.760
You're lucky if your projects are sustainable, but success brings problems.
00:05:34.000
So don't become successful, like, ever.
00:05:36.720
You also have to write documentation because now you have users demanding to know how your project works.
00:05:40.080
You have to manage the project because people want to know what's the five-year roadmap.
00:05:43.920
You have to provide world-class support for free across multiple channels: chat platforms, GitHub, mailing lists.
00:05:48.080
You have to engage in community activities and promote what's happening.
00:05:52.760
Sometimes even engage in friendly wars with adjacent projects in your drive for world domination.
00:05:57.560
You have to explain how their projects are inferior and yours is the one true solution.
00:06:01.040
In reality, this applies mostly to IMX and every other community.
00:06:04.760
You also have to deal with a lot of unhappy users and random attacks.
00:06:08.079
Anyone who has been in the open-source community for a while understands this.
00:06:12.239
I have experienced a few of these, and the Ruby community can be more vicious than others.
00:06:16.239
There used to be a fun website called Ruby Dramas, which would keep a countdown of days since the last drama.
00:06:19.599
I think they shut it down because it was so depressing.
00:06:25.680
I can share many stories about the weird things I have experienced.
00:06:28.160
I remember once I was accused of endorsing totalitarian regimes just because I named my project RuboCop.
00:06:32.160
That was an interesting accusation, and I have to tell you nothing has been more demotivating in my open-source work.
00:06:36.040
The countless dramas and every little storm in a teacup make me say 'I am done,' because there's only so much pain a sane person can endure for something fundamentally meaningless like software.
00:06:40.160
So can we make this better? Can we make open-source sustainability more achievable?
00:06:43.440
Let's start with the most obvious. In recent years, there has been a proliferation of funding platforms.
00:06:48.960
You all know them; they have some differences, but fundamentally the core idea is the same: print money out of thin air.
00:06:51.520
As it is commonly called, donations. You sign up for every donation platform and receive a lot of donations.
00:06:55.840
Then you quit your job and become a full-time open-source developer. Fantastic, right?
00:07:01.440
But has this actually happened to many people? I don't think so. I know a lot of individuals in various communities, and I know of fewer than three who have made it work in this way.
00:07:08.000
They all had to make significant sacrifices in their lives. So, it's safe to say that donations are not a viable business model.
00:07:13.200
Interestingly, even tipping in restaurants and bars is a more viable model than donations.
00:07:18.080
Why? Because we have this social contract with tipping. You go to a restaurant, you're happy with the service, you leave a tip.
00:07:24.560
You go to a bar, you're happy with the service, you leave a tip. But if you work with something nonstop, are you going to leave a tip?
00:07:30.040
No, because that's not what society expects. Society has decided that if it has 'free' in the name, it is free.
00:07:34.959
Also, donations are very vulnerable to economic cycles. This is how the donations for all of my projects have looked in the last three years.
00:07:40.639
Irena mentioned that her company hasn't had layoffs. That's fantastic, but a lot of companies have had layoffs.
00:07:44.160
And they have cut whatever budget they allocated for open source, so they stop supporting it.
00:07:49.760
On average, across platforms and projects, all of my projects are down by 30% to 50% in terms of donations.
00:07:55.040
If this was my livelihood, I would be having a very tough time right now.
00:07:59.840
Do you know what the email I receive most often these days is? "Can you please fix this?'"
00:08:05.040
Luckily for me, I have a real job, so I don't need the money.
00:08:08.720
Everything I do in open source, I do because I enjoy it.
00:08:11.520
But this shows how unsustainable the entire community is; some people find themselves in tough situations.
00:08:15.920
A key contributor of Cider lost his job last year, and I made the hard decision to allocate all the money raised to support him.
00:08:20.520
He needed to support a family, and he was very knowledgeable, so he got a lot done.
00:08:23.480
But he has made more money out of my project than I have, which is always a little funny.
00:08:30.400
So okay, relying on donations doesn't work. What else can we do?
00:08:34.240
Next, we can try crowdfunded focused campaigns. For example, I say that if you give me €20,000 in two months, I'll make RuboCop five times faster.
00:08:39.200
Maybe I can pull this off once, but can I pull it off two times or three times? That's not sustainable.
00:08:44.240
I can give you examples outside the realm of programming. Remember how much money went to donations for Ukraine two years ago?
00:08:48.320
Compare it to the donations they are receiving today, and the war is just as bad. People cannot commit that way; it’s human nature.
00:08:54.960
Okay, let’s try something else. Let’s apply for funding at a community foundation.
00:08:58.160
In the Ruby community, we have Rubies Together. In the Clojure community, we have Closures Together.
00:09:02.720
But unless you have a huge project, in the Ruby community, you're not getting funding.
00:09:06.560
Even RuboCop is not considered important enough to get funding.
00:09:10.840
In the Clojure community, you might be more successful; sadly, the reality is that unless your project is critical, you’re unlikely to receive money.
00:09:15.520
Let's try something else: dual licensing. This is the holy grail!
00:09:20.199
I’ll make it open-source and enterprise at the same time, charging for feature support.
00:09:24.000
I shoot for the moon or even beyond it, but I can only think of two projects in the Ruby community that have attempted this.
00:09:27.600
They did transition to this model, but why is this the case? Because the open-source community is brutal.
00:09:33.760
Every time a project tries to monetize in some way, they're immediately accused of all sorts of evils.
00:09:40.960
Literally, people chase after them with torches and pitchforks. So I’d rather avoid that and stay unsustainable.
00:09:49.040
I think the key to sustainability lies elsewhere. First, adopt the EOS principle: keep calm and don't give a...
00:09:55.040
I’m not sure if I can say it, but I have said it so many times. Don't give a damn about the haters because they don’t deserve it.
00:09:59.999
We continue. In another dream scenario, you get hired by a big user of your project.
00:10:05.840
We've seen this a few times with key members of the Ruby community who got hired by GitHub or Red Hat.
00:10:10.000
But all of them were super famous, realizing that the community is a lot bigger.
00:10:12.200
The chances of something like this happening are slim to none.
00:10:18.000
Okay, let's try something else. Maybe we don’t need money at all. Maybe the key to happiness is in the mindset.
00:10:23.600
One of the most important things is to become a worse person. You have to say no when you receive requests that create significant maintenance overhead.
00:10:28.799
This happens because many features in bigger projects are things I never needed and never use.
00:10:33.600
But I have to fix and explain them to users, and provide support for them.
00:10:37.250
This can be really demotivating. This is the reason why RuboCop has 342 open issues.
00:10:40.000
These are not problems for me; they are for someone else. I’m not getting paid to fix them, and unless someone wants to fix them, they won’t be fixed.
00:10:45.200
To keep my passion and not lose my mind, I’ve realized I need to keep things simple.
00:10:49.200
I have to focus on what I am passionate about and not what users are passionate about.
00:10:53.960
If users want to come and maintain it forever, that’s one thing.
00:10:56.560
But usually, when you ask them about forever, they run away.
00:10:59.040
Instead, I want to keep the magic alive by sticking to what I value and cherish.
00:11:03.240
It’s also crucial to decrease the bus factor for every project.
00:11:06.960
Not everything should rely upon me, and I shouldn’t be paged constantly for random critical problems.
00:11:10.720
It’s important to find other maintainers, especially if you happen to be the steward of a bigger project.
00:11:13.520
In RuboCop, I’ve achieved this to a great extent, and the good news is that if something were to happen to me, RuboCop would continue.
00:11:17.200
It might not be as fun, but it would get the job done.
00:11:20.720
Having a larger community helps avoid issues like the infamous Exif fiasco.
00:11:26.160
Many have discussed what happened, but fundamentally, the problem was that an overworked maintainer needed help.
00:11:29.280
Some malicious person volunteered to help, and that led to significant mishaps.
00:11:32.640
I don’t blame the maintainer; I blame the entire community for allowing it to reach that tipping or breaking point.
00:11:38.560
So my recipe for success and sustainability is very simple.
00:11:41.520
Open-source software is sustainable when it is fun.
00:11:45.600
Ideally, it should also be funded, combining fun and funding.
00:11:49.920
When I was working on this talk, I kept flashing back to a very infamous rant.
00:11:52.840
It was about how open source is not about you, voiced by Rich Hickey, the author of Clojure years ago.
00:11:57.760
I didn’t agree with everything he said at the time, but now it feels like something I would have written myself.
00:12:02.160
At the end of the day, the only people entitled to say how open source ought to work are the people who run the projects.
00:12:06.560
And their entitlement extends only to their own projects.
00:12:10.240
Just because someone open-sources something doesn't mean they owe the world a change in their status or effort.
00:12:14.880
As a user of something open source, you aren’t entitled to anything.
00:12:17.520
You aren’t entitled to contribute, features, or the attention of maintainers.
00:12:20.400
You are not entitled to have your complaints valued.
00:12:23.440
I dedicate this talk to the deepest and most profound open-source maintainer I’ve met: Nick.
00:12:28.800
Thank you! It was my honor to be here.