title: There's quite a difference in making software for different userbases
author: 寮
date: 2022-12-11
tags: technology,internet,webdev
----
In [my last blog post](/blog/done-with-sns/) I said I won't be part of the Fediverse anymore because all the current softs are so poorly written.\
But then I got quite a few heart warming comments which I didn't expect, which made me reconsider, because those of you who follow me on Fedi currently are just too awesome to run away from!\
So I decided to continue to be on Fedi even after the switch from Pleroma to Hubzilla.

With that out of the way, today's blog post relates to what I said in the last post.\
There are 3 types of userbases you as a developer will be making software for: yourself, a specific customer, or public.

You might be developing software for yourself to make your own workflow much easier or automate it wherever possible.\
Feel free to use whatever, because you're the user of your own software, so nobody cares.\
For the other 2 categories, it does actually matter what tools you're using, but have some differences.

The customer you're making code for is a niche, but that's where your income is.\
The most logical thing to do here for most people is to make software that is broken by design so you can milk the crap out of that customer.\
However, I disagree.\
Remember that you're not Goolag or Crapple, these 2 can be as hostile and disrespectful towards their customers as possible, and they'll still give them more and more money every single year.\
But if you do that, the customer will go like "fine, I'll ask somebody else then".\
And there are much more ethical ways to maintain a consistent flow of money (or fiat) from them to your wallet (or bank account), like charging them monthly maintenance costs or monthly hosting costs for example.\
Or offering them a service contract so when the software breaks or they want to add, change, or remove features, you can do that at no additional charge.\
Or charge them for every change they want post-release, but in that case it's better to not have a service contract, but in return you can get away charging them a whole lot more if you make them pay for each change.

And the 3rd category is software written for public use.\
For example the development of Mastodon, Pleroma, Misskey, GNU Social, Hubzilla, Friendica, Mitra, and so on.\
You can put up ways to donate, but expect to get no money and lots of reported issues, therefore it's better to do this as a hobby, not as a profession (something Gargeon doesn't seem to understand).\
You can perhaps turn this around by making rock solid software, which is why it's crucial to use the right tools.\
And this is what 95% of the developers fall for these days, because they make use of frameworks, Postgres, Docker containers, tedious installation processes, nonsensticle maintenance methods, and so on.\
This is where my frustration is all the time, and this frustration is what made me want to leave Fedi 2 days ago.\
What they don't seem to understand is that when they release software for public use, their userbase will most likely not be developers, let alone contributing code.\
Most of your users will not be software developers, they'll be users who want to use something that just works.\
Frameworks, Docker, going through a gazillion shell commands and scripts, having to periodically maintain Postgres, and so on is not what they want to have to deal with when they also have to host it so that many users can use it.

Software that is easy to develop is often times not the same as software that is easy to use.\
Sure, all of this might be easy for the developer as they get their shit done more quicker, but I see every single time that this is at the cost of ease of use.\
It's important to make software easy to use FOR THE END USER, not for yourself, even if you make no money off of it.\
Your money comes from the 2nd category, expect to earn nothing in the 1st and 3rd categories, my strategy is to make software in all 3 of them so that I can make quality software without having to worry about being able to put food on the table.\
To put into perspective, you wake up in the morning, check your chatrooms, emails, soycial media, and so on, then you get to work.\
But since I work way ahead of schedule, I only need to spend about 2 or so hours a day on my professional work (most of it is just checking if everything works, cleaning up the code, and committing to Git), then I can use the other 4 hours to work on free software, and remaining 2 hours on learning ncurses, SDL, SFML, Go, LMMS, Krita (manga production), and so on.\
And then in the evenings I just do whatever the fuck I want.

I already got myself into the position that gives me enough money to eat and pay bills, and I really don't need to earn more.\
Sure, earning more is nice, but it's just unnecessary to me, I don't need to join the Freemasons, I mean the top 150 richest people on earth, I mean the Jews.\
So I'd rather spend my remaining time and energy in making free software that actually works and lasts.\
This is what me and loli frog are doing at the moment with custom Fedi software, though she really wants to work alone, so instead I took another project to work on so we can get them all ready quicker.
