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.
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.
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.
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.
π© 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.
π₯ 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?
π§ 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.
π§ 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.
π§ 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.
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:
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!
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.
π¨ 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).
π© 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.
π© 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.
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.
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! ππΌ