3 months ago

Gifting OSS

I’ve been thinking a lot about Open Source Software (OSS) lately.

If you have read my work for a while, you might have noticed that I advocate for it. Many of us are introduced to building craft outside of work. It’s fun. If it goes well, and people use it, you can meet very talented builders. You also build public recognition through the work. Your OSS becomes your CV. This is net positive for you. I know some maintainers who, once they reached a point of recognition, moved on. OSS was the lever for their professional career.

You’ve probably built a community, and a sense of responsibility has grown within you. At this point, it’s common to hear among contributors, I devote all this free time to the community. But how much of that is pure altruism, and how much is self-interested altruism? I ask myself this question every day. Because we humans have a natural inclination towards recognition and appreciation from others. So, it might just be an exchange of your time for that recognition, which feels great. But you are putting something limited on the table, your time and attention. So, you might end up stretching it too much to the point of burning out, as is common to see in our industry.

Having reached the inflection point of being unable to satisfy community demand with limited resources, some projects decide to maintain their status and juggle all the demands by setting low expectations for responses. Being emotionally stable and good at prioritizing is key here. I’m quite impressed by projects like Homebrew and Fastlane that have managed to do this continuously. Still, I feel bad for the maintainers who need to take part of their free time for their project duties. I can’t help but think: it’s unfair.

Having reached that point, you can alternatively start thinking about ways of funding the project beyond donations, which, in my experience, it’s tricky. And depending on the nature of the project, you might have more or less trouble trying to achieve this. For example, if your plan is to provide a cloud service, and the code is OSS, you are competing with cloud providers like Google and Amazon, who can implement a much better and cheaper solution faster (I learned recently that some developers call this being “Jeff’ed”). This happened to Redis, and a handful of other projects that had to leverage licenses to avoid exploitation by large tech companies.

I couldn’t realize the seriousness of this, especially seeing large tech companies so devoted to OSS these days, until I experienced it myself. There’s a lot of hypocrisy. Companies support OSS because it gives them a great reputation in the developer community, and they might end up getting free (gratis) layers of software to build upon. They design a supply chain where most of it is free developers’ labor. Which business doesn’t like OSS when presented that way? Companies like Microsoft and Apple like being the ones creating and maintaining OSS layers, for example, TypeScript, VSCode, and Swift, because it gives them a great reputation in the developer community, and they might also get some contributions for free. It’s a sort of OSS-washing. However, when it comes to contributing to other OSS projects that they heavily depend on, the story is completely different. They don’t feel a sense of responsibility towards the external OSS tools that they use. The model is perfect for companies.

So despite the importance of OSS in the world, with great examples like Linux, we haven’t figured out sustainability, and I doubt we will. We can approximate sustainability, but the closer we get, the further companies will move it. Because while you see it as a lifestyle, as a hobby, as a creative space, as a community, for them it’s just free blocks. If a company like GitHub, which is in the position to deploy a frictionless solution to fund OSS, doesn’t, who else will?

There’s one last model, which I’ve been seeing a lot lately, and it’s the idea of doing OSS because “you are gifting something to the world.” DHH uses it a lot with every piece of OSS the Basecamp folks release. Many developers in Ruby do it too. It’s a model I’m starting to align more closely with. So rather than starting with an OSS project, you start with a business. You focus on making something that delivers value to society and that can financially sustain itself. And then, you extract the pieces that could be valuable for others. You extract layers of value to support others in their entrepreneurial journey. Rails is a good example of that. And you don’t necessarily need to set high expectations. Quite the opposite, indeed. You can put something out there for people to learn, fork, and extend, but they should not expect you to treat that as your first priority.

I wish a developer could make OSS sustainable without having to delve into the business side of things. But OSS is embedded in the tech industry, which is embedded in capitalism. So the sooner you learn about these dynamics, the better you’ll be able to navigate them. It took me years to realize and internalize this. But I’m glad I did.

Going forward, I’ll lean on the side of creating businesses that gift OSS bits to the community. And those businesses will inherit goodies from OSS like transparency, open communication, or extensibility. Those traits are not exclusive to OSS. And we have plenty of examples of closed-source businesses doing it beautifully.

About Pedro Piñera

I created XcodeProj and Tuist, and co-founded Tuist Cloud. My work is trusted by companies like Adidas, American Express, and Etsy. I enjoy building delightful tools for developers and open-source communities.