A lot of my friends, and also many users of Zettlr whom I do not personally know have asked me over the course of the past months: Why is Zettlr Open Source? Why did I choose to publish it completely for free under a permissive license (the GNU GPL v3)? With this blog post, I want to answer this question publicly, because it integrates deeply with the philosophy behind Zettlr.
What is Open Source?
Open Source is a term used to denote software whose source code is open and accessible. This means that you can review the source code, see what it does, and confirm that an app does not constantly "phone home." Still, the term arouses suspicion, because we are used to companies and developers wanting to make money with their craft. We are used to paying $100 for Microsoft Office, $15 for our Netflix subscription and $10 for Spotify Premium. And we are finally beginning to understand how we are paying Facebook and Google by using their services: with our data.
Of course, this is only what the public sees of software. What it doesn't see is what is "under the hood" — the source code itself. Software is most of the time based on free Open Source software. Think about it: The Spotify app is free and you can download Evernote for free. What you pay for is either the service (in the case of Spotify the music they let you stream) or certain "premium" features (in the case of Evernote more storage and additional functionality). The apps themselves are free.
Let's stick with the example of Spotify. If you dig into the application binary a little bit, you will notice that there are HTML and CSS directives in some files. It is by this that you can see that Spotify is actually a derivative of an electron app. It uses frameworks and code that is Open Source. So does Zettlr. Even the huge server farms of modern corporations are built entirely on Open Source software. Most use either Apache or nginx as web servers, which are Open Source. As are most of the frameworks to build websites. The Zettlr website, for instance, is built on October CMS, a free content management system.
How much Open Source is out there?
There's actually a lot of Open Source software out in the wild. Software developers are lazy, and they think efficiently. Why should you re-invent the wheel every time you write a new app? If somebody already solved a problem that you face, why should you solve it again? Take spell checking. There's a lot involved in checking the correctness of a word, it's a sophisticated algorithm. It could've taken me months to write such a logic on my own. This is why I simply pulled in Typo.js (from version 1.1 onward, Zettlr uses nspell) as a dependency. Then I could tell my app "Please use this library to spell check." I've written exactly three lines of code that enable Zettlr to perform spellchecking:
// First create the spellchecker, providing // a hunspell dictionary. let typo = new NSpell(affData, dicData) // To check a word, Zettlr uses this function. // It basically returns yes or no. typo.correct(term) // To retrieve suggestions for a misspelled // word, it uses this function. It returns a // list of possible words to replace "term." typo.suggest(term)
As you see: three lines of code are sufficient to implement spell checking into the app. The same holds true for many other parts of the app. The editor it uses is called CodeMirror, which provides almost all functionality out of the box. No need to reinvent the wheel here as well.
But not only "laziness" and not wanting to re-solve problems every time are valid reasons for relying upon Open Source software. If you need to secure something using cryptographic algorithms, you may not even want to rewrite the code, as one simple mistake may completely undermine the security of your code. You want to rely on popular modules that are maintained by many people that know a lot more about cryptography than you do. Also, if cryptographic modules are Open Source, the public can make sure they do what they should and don't have hidden backdoors that governments or hackers could use to spy on you. There's simply no sense in encryption if somebody with the proper knowledge could circumvent it.
To get a grasp of what is possible using Open Source, just open up the "about" dialog of Zettlr. It will tell you all free packages Zettlr uses:
How do you make money?
After this somewhat intriguing excursus, let us come back to the central question of this article: How, then, do I make money, if the app is Open Source? The simple answer is: I don't. I sacrifice my free time to develop an app that I give out for free. And that's all there is to it. I won't make the app non-free in the future and I won't start selling all-in-one subscriptions that are merely a complicated way of hiding the amount of money you drain from your paying users.
But then another question pops up: What about all the costs you have with the development? After all the server I use for hosting my app costs me money. In the end I'm not only paying with my free time, but also with my hard earned money. This is why there is the option to donate to Zettlr. If you like the app and would like to see its development continue, you will probably want to make sure I can pay my (server) rent every month. I see this as a non-compulsive subscription that comes with two great benefits: First you can test the software for as long as you want, and second nobody is forced to pay more than they can afford. If you earn about $2.000 net per month, you may consider donating $20 per month, because you can afford it. But if you're in between jobs, you may only donate a symbolic Dollar per month.
In the end of the day, I don't develop Zettlr as a means to make money, but as a means for the production of text. I'm in academia and so are many of Zettlr's users. We all know how underpaid academic research is. And therefore, if we would need to pay for a decent piece of software that enables us to write better and more efficiently, we probably would need to stop eating Avocados (cynical joke intended).
Please Consider Donating
I want to enable you to write better texts. But therefore, I cannot work as much as I could to make money. I simply rely on donations. Therefore I would like to close this article with a call to action: Please consider any amount to donate to support me and my app. I am grateful for every dime, as it shows me how much you like the app. Thank you in advance!