Why Not Open Source?


Will Yaak be open source?

The short answer is no, there are no plans of going open source. Instead, Yaak will add a plugin system to its closed-core model, achieving the benefits of open source without the burden.

This post expands on the reasons behind this choice.

Yaak’s GitHub repo showing “private” status

Let’s kick things off with some context. The last post mentioned how the open-source nature of my previous endeavour was a large contributor burnout—ultimately leading to my departure. The opinions in this post are informed by this experience.

✨ The product is the priority

Users want a great product.

While potential contributors will vote for open source, the most important thing is providing a great product. So, does open source lead to a better product? That’s the question I’m trying to answer.

🤔 Naive assumptions on open source

In the past, I assumed open source would provide a huge benefit. Unfortunately, these assumptions didn’t match reality. I’ll cover the important ones here.

Bugs will get fixed

🟩 Yes, they are an easy contribution candidate

In open source, any motivated user can jump into the code and submit a fix. These contributions have a narrow scope and thus lower the bar compared to other types of contributions.

Features will be added

🟥 Difficult, in reality

For desktop applications, new features often require design and usability consideration. Unfortunately, most programmers don’t possess these skills, necessitating many back-and-forth cycles to ensure the feature looks good and is integrated thoughtfully.

This means it’s often quicker for the maintainer to just implement the feature themselves. 💀

Conversely, extending existing features is easier—like adding support for OAuth 1.0—because the existing feature provides a UI paradigm to work from, reducing the barrier to entry. This would also be a great candidate for plugins.

see where this is going?

Transparency will increase

🟧 Doesn’t require open source

You can’t get much more transparent than publishing the entire codebase and its history. With so many privacy-abusing companies in the world, open source provides assurance that nothing shady is happening.

Transparency doesn’t just mean code, however. There are many ways for closed-source projects to be transparent as well. For example, having a Public Roadmap and sharing posts like this.

Security will improve

🟧 It depends

It’s possible for users to audit the code of an open-source project and disclose any issues. The key word here is “possible.” I don’t actually remember this happening, but it did while I worked at Railway, a closed-source product. Maybe this is due to the simpler nature of desktop applications.

Community will grow

🟧 Only if the effort is invested

There’s nothing specific about open source that builds community, other than the repository providing a place to congregate. Communities grow from the interactions within them, like openly discussing roadmap, which can also be done in closed-source.

Open source wasn’t what I thought it was, but why? I think most of the discrepancy can be attributed to the very nature of open source. Let me explain.

💩 The problem with open source

Imagine working at a company that hired anyone who applied. It would quickly fill with people bringing irrelevant experience and misaligned incentives. This is the unfortunate reality of open source, and requires a huge time and emotional investment.

Imagine working at a company that hired anyone who applied

The benefits of open source must make up for the fact that:

  • It’s hard to deal with unappreciative or rude feedback
  • It’s hard to manage long back-and-forth feedback cycles
  • It’s hard to decline a contribution that was submitted without approval
  • It’s hard to say no to most things once the project has matured
  • It’s hard when a good contributor leaves
  • It’s hard to accept that people are working for no pay
  • It’s hard to feel good about 1000+ open issues
  • It’s hard that it never stops.

The list could go on, but you get the point; open source is hard and it takes a toll on your emotional well-being. The only way open source can work is in a corporate setting where full-time maintainers are paid to manage the project, can take breaks, and be replaced if desired.

Unfortunately, the fact that Yaak is a small indie project means this isn’t possible.

So what’s the answer then? Can we get the benefits of open source without the burden? Yes, I think plugins can do just that!

🔌 Plugins solve the maintenance burden

A plugin system can garner the same collaborative attributes as open source. It’s kind of cheating, though, because the plugins would be open source. However, open-source plugins are much different than an open core because of their confined scope. This makes contributing easier and thus lowers the maintenance burden.

So let’s cover some of the same assumptions as before, but in the context of plugins.

Bug fixes

🟨 It depends

Plugins are not as good as open source in terms of getting bugs fixed simply because not all code is open source. However, this is a great motivation to put as much logic into plugins as possible (which is the plan).

More features

🟩 Yes

Contributing to open source gets harder for larger projects because more knowledge is required to implement something properly. Imagine getting hired as a developer and shipping something meaningful your first day. It’s possible, but extremely challenging and likely requires help from your team.

Imagine getting hired as a developer and being shipping something meaningful on your first day

Plugins avoid this problem because they are small and specific. It’s totally reasonable to comprehend a 200-line plugin codebase in order to make a proper contribution.

Also, since plugins don’t have to be integrated into the core application, features can be added even faster than in open source.

Community growth

🟩 Yes

Plugins grow community by giving authors the ability to share their creations and retain ownership of them. Something like the Raycast Store has thousands of users contributing high-quality plugins. People share their creations on social media, and good plugins are promoted. This incentive alignment creates a mutually beneficial relationship.

Raycast Vim Bro extension

Open source also provides ownership, but it’s often buried within the source code repository so it not nearly as public.

Now some of these assumptions about plugins could also turn out to be false, but my observations of popular projects seem to indicate a good chance of success.

🏖️ An exciting future

Hopefully you got a satisfactory answer to why Yaak won’t be open source. If not, feel free to leave a question on the Open Source Feedback Thread and so I can clarify it in this post.

I’m extremely excited about plugins, specifically because they won’t be confined to my specific vision for Yaak. Users can get creative and extend Yaak in ways I couldn’t imagine.

So when will plugins be ready?

The plugin system currently exists already, but for internal use. The plan is to prepare it for public release in the coming months so keep an eye out for that. 👀

And, if you have a question or comment, drop it on the Plugins Roadmap Item.

Thanks for reading! 👋🏼

~ Greg