Share Everything

Published at Jul 20, 2020

All our apps will be open source. Even the ones that we sell licenses for. Nothing we won’t share with you. So why are we doing this?

Here is how everyone is doing it

We built two apps, both for macOS. One to learn keyboard shortcuts and the other one to quickly find unicode characters. People bought both a few hundred times and it felt like a huge success to us.

But something felt wrong. People asked to contribute new keyboard shortcuts, to fix issues, or to add new tags to the character database. That’s something we have to do. It’s our code, isn’t it?

And then there were the people that had problems activating their license. We use Gumroad to sell licenses to those apps and while the selling part works fine, the “license management” is a joke. No way to reset a license, increase allowed uses, disable devices. Not even a way to generate a new license key. People setting up their new MacBook couldn’t activate their license, they had to contact us. We had to do a test purchase to get a fresh license and send them the new license key, which then was attached to our account.

Anyway, we are developers. There is a feasible solution: We have to develop our own license management system. But those words stuck in my head. License. Management. System. I remembered younger me, someone who downloaded Photoshop and edited the host file to block Adobe from checking the license. I learned a ton from free resources and cracked software. I’m pretty thankful for all of that.

So why do I (the older me) invest time to protect our code so other’s can’t see it and can’t change it. Why do I keep my hand above the things we built? Why do I invest time in the development of a license management system. This kind of system I tried to block as a teenager.

It’s not how I think the world should be. I want to live in a world where as much as possible is shared. A world where knowledge and learning resources are available for free. Where software is free for kids (and other people without income). I’m thankful for platforms like GitHub that make it possible to share code with thousands or even millions of other people. Code is digital, it doesn’t cost a thing when someone copies those digital resources to use it. Why should I bother then?

That led us to a question: What if we stop protecting our code, what if public is our new default?

Our new default

Let’s have a look at the risks we would face making everything public:

Maybe people won’t buy our apps anymore. Sure, that’s possible. They can go to the repository, set up their local development setup, pay $99 for an Apple developer account (to sign and notarize the app) and build their own version locally. Or they pay a few dollars to get the latest release from us. Let’s be honest, I don’t think the impact on our revenue will be measurable.

Maybe people would rip our code and sell it. Probably! I hope people are more creative than ripping our code. But if they do, I can’t imagine they’ll make a noteworthy amount of money. And even if they do, I don’t think that we will make less money then.

Maybe people would create issues, ask questions and send pull requests. Hell yeah, that would be amazing! It’s time consuming to maintain a public code base, but I don’t think it will be more than a few hours a month for our apps. And what’s better than other people helping to improve your work? People that ask to contribute new shortcuts to Mouseless or new tags to Glyphfinder will be able to do just that from now on. I think that’s awesome.

Okay, so I’m not a professional risk analyst and maybe my imagination is limited, but I would say we can handle this. So let’s have a look at all the good things that could happen:

Maybe people use our code to learn something. Maybe people learn how we make money with our apps and sell their own apps. Maybe people will point out issues in our code. Maybe people will find issues. Maybe people will contribute new content or new features.

Besides that, an interesting thing happens when you make things public and people can transparently see what you are doing. You look through the things you publish and try to see it with other eyes.

For code that means you can’t help yourself but update the dependencies, fix broken tests, remove TODO comments. Does your app secretly track data? Does your app unnecessarily send data to an API? Does your app access the computer without users knowing it?

You won’t publish that kind of code. You’ll see it with the eyes of the users and wouldn’t publish anything that’s not in the interest of the user.

And I think this is a great way to make software more friendly, more privacy-aware, more reliable and more secure. So let’s do it, here is the Glyphfinder repository: ueberdosis/glyphfinder and while we are at it, here is the landing page: ueberdosis/glyphfinder-landingpage Dig through the code, learn new things, point out issues or send pull requests. Do whatever you want.

And you know what? Those great things don’t only apply to code. Those things apply to everything you do. Let’s see what else we can share with you. 🙃