Ask HN: How to sell apps on Linux?
Hi HN,
With the recent major advancements of Linux phones and tablets, convergence becoming a reality, I was wondering:
How to make a living creating apps for Linux, whether it be for the Desktop or the phones?
Do you have any experience or examples you want to share?
Are in-app subscriptions and enterprise support the only way to go? As the usual distribution channels (repositories and 'App Stores') don't seem to provide a straightforward way to sell software.
161 comments
[ 2.6 ms ] story [ 169 ms ] threadBut buying little apps is simply not common on linux. Sure many would but why when you can just apt an easily alternative.
If you produce niche or major software subscription, buying licenses and co are more common anyway.
I completely forgot that Steam is not for games only.
Paid applications do exist but they must implement their own post-installation payment mechanism - the snap store doesn’t provide any facilities for this.
Because I want to pay people to write good software for me. I hate using OSX and Windows, but I want to have a DAW like Logic etc. My only options are stuff like Ardour, which happen not to work on my computer (because linux audio system is broken) due to alsa/jack/pulseaudio weirdness. And I have no leverage over Ardour developers. All I can do is:
* Look online to find solutions to my problem. This didn't lead anywhere.
* Download Ardour code and understand how it connects to the audio device and reproduce it, this way I can see the error. Luckily I can read code, most consumers can't.
* Send a message to Ardour devs/forums and cross fingers they help me out.
I want a company that produces software like MSFT, AAPL, Adobe etc and make it linux first and GPL. I understand that this is a terrible business model, which is why I want to pay extra money for this shit. Like Logic on OSX is $200. I want to pay $300 something that's approximately like that but works on my distro as flawlessly as Logic works on OSX.
I just want to not read pulse audio man files when I need a DAW, in exchange for $X * $200.
I'm just daydreaming, I know this stuff will never happen. I'm not sure exactly why. I hate the modern software ecosystem.
A good alternative to JACK and PulseAudio is PipeWire, which for me has worked basically completely flawlessly and supports JACK and PulseAudio bridges natively.
I was mostly giving DAW as an example though, same would go to any kind of specialized software.
EDIT: unrelated but, from Reaper purchase page:
> If you own multiple computers, you may install the same license key on all of them, as long as you only use REAPER on one computer at a time.
I love this, let's not pretend people have a single computer. A have multiple linux workstations, and an OSX workstation. As long as it's me, the person who bought it, is using the software on different machines, I should be able to get away with single license.
Yep, I'd absolutely love a real Photoshop competitor made in a similar spirit to reaper. Photoshop just has too many niceties that something like gimp doesn't even come close to (one that comes to mind is Select Subject - has probably saved me hours of work and does a much better job than I ever could manually)
> > If you own multiple computers, you may install the same license key on all of them, as long as you only use REAPER on one computer at a time.
> I love this, let's not pretend people have a single computer.
This is what I meant by no bullshit licensing, it's really refreshing to see a professional and competitive product be this way when it comes to user freedom. I'd like it to be open source, but this is probably the next best thing.
Just a shame that most audio plugins don't follow the same philosophy, otherwise I'd happily be using just Linux for music production (though you can at least make most windows-only plugins work on linux through wine)
Linux is not for average software consumer, you have to know how computer works in order to use it. The simple fact that linux lacks MS Word/Excel, Photoshop is already hints that something is off.
Linux is just a kernel and then from 2% marketshare you go down for marketshare of each distribution you want to develop your software for and try to sell to consumers who asks why your code is not GPL, why I can't modify it on my own.
I've tried gaming on linux and can't describe how bad my experience was even on popular titles like CS:GO, where you have lower FPS and glitches with graphic settings, like not able to play stretched resolution sometime and then some update literally broke a game for a while. You have to jump loops all the time to just make programs run and the issue here is that, as a linux user, you expected to do it and it's just normal, when on Mac/Windows the user expected to just know nothing and all issues got fixed by software vendor.
Just try to install firefox on linux, https://help.ubuntu.com/community/FirefoxNewVersion (you have to find this page as well), show that screen to average computer user and see what happens. Compare it to Mac OS https://support.mozilla.org/en-US/kb/how-download-and-instal....
They sell licences via their sites, with activation codes or Google authentication.
But if you want to make a living, I suggest making a Linux phone oriented application store first and foremost, and figuring out the DRM that way. Developers will come if an ecosystem is built for easy deployments and selling software.
> Sublime Text 3 includes an auto-upgrade mechanism on Windows and OS X to make upgrades a snap. Instead of going against the grain of the Linux ecosystem, packages and package repositories are provided for most of the major distributions.
https://www.sublimetext.com/docs/3/linux_repositories.html
ST4 is a complete VSCode killer.
I use a smaller Linux distribution. I checked the package manager, and there is no Sublime text package. It is available as a "third party" package, which I think fetches a package from the third party's website, then repackages it in the local format. It would mean that I would need to check the third party repository for updates. Alternatively, I could probably find it in the snap or flatpak stores. Not a big deal at all, but I do get nervous when I can't find something in the package manager and can't find an appimage on the company's website.
In short, I really like appimages. Please make appimages!
However, my money can only support a finite amount of effort. Every bit spent on packaging is taken away from improving the actual program, which is what I really hope I'm paying for.
Sure, so the reasoning goes: you make it as easy as possible for the 95% of users who like your software (but not enough to change their host to install it), and hope that the remaining 5% are die-hards who are willing to do it themselves. That's why Sublime Text supports the five flavors that it does.
Put another way: you can make it so that your engineers spend almost none of their time on packaging, but your average user isn't dedicated enough to wade away from their default packaging ecosystem. Better to spend a very modest (as other commenters have pointed out) amount of effort supporting the common package formats than to throw those users away.
My only remaining point is that AppImage is supported by all of the distributions they support, as well as a few they don't.
When you're building your own packages, you can reasonably take shortcuts that distros would not allow (like internet access during build, or vendoring some tricky dependencies), so for many things the packaging just amounts to specifying your dependencies, running your build, and perhaps applying some distro-specific tweaks.
I'm curious where does this myth come from. Making a Debian or an Arch package doesn't seem any hard.
Sublime probably has the right of it in maintaining their own repository. Otherwise you're stuck waiting for approvals, or you need to provide instructions for what to do with the package once its downloaded from your site (my printer drivers were like this).
I really only have perspective from the other side: as a user trying to install stuff.
Finding stuff in the package manager is nice. I still have to go to the project's site to check if it's the most recent version, but usually I don't care that much.
Then there are oddities like Calibre, which tells you to ignore your package manager's version and paste some stuff into your terminal with sudo.
Sagemath just tells you to download a binary, which is pretty much the same experience as an appimage. But their files are named sage*Ubuntu|Debian*.tar.bz2, so I'm honestly not really sure what they are or if they work with, say, Arch. I'm pretty sure everyone just installs it through conda anyway.
So I'm always pumped when I see an appimage on a company's site. I know it's coming from the source, I know it's the latest version, and I know all I need to do to run it is to make it executable.
Packaging for Debian is pretty much just a tar you throw all your stuff into. Same for arch. Once decided I wanted to package a personal project for arch and was done integrating it into gitlab ci without any prior knowledge.
Your main problem as a company is that your stuff is proprietary and proprietary things dont get accepted into the default repos period.
> So I'm always pumped when I see an appimage on a company's site. I know it's coming from the source, I know it's the latest version, and I know all I need to do to run it is to make it executable.
As a user, I'm always horrified when I see an appimage. It tells me that the developement process of the project is so broken there was no way for them to target my system. It could have openssl from 2007 in there. It may be vulnerable to bugs that where patched decades ago! On top of that, the software wont even update with the rest of my system, leaving me as the maintainer of my software, the whole reason package managers where invented...
It's really not. At SublimeHQ we simply create a deb, the rest of the packages are generated from that automatically. Obviously there's some high initial cost in setting all that up but changes to this kind of infrastructure are very infrequent.
appimages/snap/flatpak cause huge problems for development tools. You need to be able to run system executables in the system environment for stuff like build systems, git, etc.
It solves a known problem. It sells via a website. Makes enough money to have been around a long time and charges enough to stay up to date.
It is also in a market segment that is orders of magnitude larger than Linux phones an tablets are ever likely to achieve.
Good luck.
I'm not sure if it'd be big enough to get you doing it full time though.
The only software I have paid for on my Linux machines is IntelliJ.
If you want to be OpenSource and sell your apps there are a few different ways. You could not provide any official downloads unless they pay, your paying customers could legally redistribute your code, but only you would have the official source. You could charge for binaries and provide code free of charge like Ardour. You could also sell support contracts, so paying gives them an offical account to ask questions on the forum or a number to call in.
But either way its the same as windows or mac, the only reason most non free software companies don't sell linux software is because there are less users, and they don't want to deal with making sure it works.
One of the neat things with JetBrains IDEs is the 'help' menu. More than once I've done a "go to that menu and just start typing what I'm looking for"
Typing 'terminal' in that menu and then selecting the spot where it can be accessed from brings up the appropriate menu - https://i.imgur.com/Z3u4grB.png
Also, for me (there may be some other settings that I've got from other installs), at the bottom bar, left hand side the defaults are: "TODO", "Problems", "Terminal", and "Python Console". Selecting "Terminal" will launch a default shell. The "Python Console" brings up an interactive mode REPL.
And yes, there is a lot of tooling in JetBrains IDEs that are... in days of old it would be "here's a 300 page manual that no one reads." The Help Menu is incredibly useful for finding things - even experienced users. https://i.imgur.com/4duykxh.png - the IDE Features Trainer and Productivity Guide are really useful for discovery.
As I understand it, Valve have been explicitly marketing proton-compatibility as a low-hurdle standard to help Windows developers dip into the Linux market. Furthermore, changes are coming to the Linux kernel which will make it even easier for Proton to run Windows software.
The ease of proton compatibility completely obviates the tired arguments about how Linux users don't have enough market share.
People on Linux don't pay for apps. Target a platform like iOS where users are willing to pay for apps. 85% of total app store volume across iOS and Android is from iOS.
If there's not much of a market in other areas, then frankly I'd have to say it's because the open source ecosystem is simply too good on Linux. There's already an app that can do what you want for 99% of use cases, and it's open source and free. Hard to compete with that. You wouldn't criticize Windows because someone can't find anyone to buy their web browser; Linux is like that, just for most every application.
There are already a ton of free and great applications on Linux.
https://cheesetalks.net/humble/
PyCharm is a well-know paid software that has a strong Linux/OSX presence, as well as almost all other JetBrains software. Sublime Text is another.
Anddddd, I've happily bought and use paid software on Linux all the time! I play Steam games, use InSync (a Dropbox-like service for Google Drive), and several other paid apps/services. I'd love it if there were more!
I want to phrase this with as much hostility as possible: Don't. Software cannot be owned or paid for and any attempt to normalize the opposite is cruel to anybody with a functioning brain. You cannot own a thought, or data, or bits or bytes, and much of the software you will no doubt use to create your premium software was made with this philosophy.
If you want to solicit donations that's very cool and there are people who will donate to you. But any attempt to abridge access to code without mandatory payment is not only ridiculous but purely unethical. (and no, I don't care how many HN points I lose by saying this)
5 at most
Is it ethical to pay someone to create software that wouldn't otherwise exist? Is it ethical to create the software and then refuse to deliver it until the check clears?
Is it ethical for a semiretired hacker in the US to build a 1 person SaaS company around software written by someone making do with ten dollars a day in the phillipines without sending them a dime?
https://www.gnu.org/philosophy/selling.en.html
> If a license does not permit users to make copies and sell them, it is a nonfree license.
And it's because of misunderstandings like these that "free" should be renamed to "libre".
Even the FSF considers selling software a good thing [1]
[1] https://www.gnu.org/philosophy/selling.html
Paid-for software is best distributed using your own repository. @wesamco's comment describes how Sublime Text is distributed and it works well. Other paid-for softwares have similar success.
I use Synergy. To install, I need to download a pre-built application. When it runs it will ask for a license key. I type in the license key and it goes and verifies it.
Both solutions solve different problems. The repository solves package management: installation, versioning, and dependency chains. License keys ensure that the software is paid for.
Around about the time I was working on it half the distros users wanted to use were on OpenSSL 1.0 and the other half on 1.1.1. even Debian and Ubuntu were split due to their release cycles being different.
Also, Linux support was never a priority for the company. You should probably save your money and just use Barrier, a FOSS fork.
I don't disagree.
> You should probably save your money and just use Barrier, a FOSS fork.
Synergy has worked for my needs and so I paid for it.
How does Barrier differ?
The people who work on it give a damn
/sarcasm
1. Provide an RPM repo or COPR repo I can add so it is managed with dnf. You'll also want to provide .deb too
2. Make source available with payment, and allow modification for individual use. It's ok to prohibit redistribution as long as personal use/hacking is ok
3. One time payment is a lot more attractive to me than a subscription. I'm beginning to despise subscription software
What are you thinking of making?
As an aside, i don't mind the middleground for subscription; buying once to own it, but getting updates for only 1 year. I've experienced this with TablePlus and DataGrid and it's been pleasant.
I agree, i dislike subscriptions and i avoid them now. But i don't mind paying for updates at all. If anything it feels reasonable and inline with my desires as a consumer - continued support.
Too many products i've bought feel abandoned in favor of an upcoming 2.0 to again get money out of me. Give me rolling evergreen releases with a sub-like, but let me own what i've bought so i can be sure it will always work for me. Seems like a good compromise to me.
Often times I go between jobs where a particular piece of software is no longer relevant to me, such as perhaps DataGrip from JetBrains. I occasionally have use for it again, but in general I'm no longer interacting with a rdbms anymore in my current role.
Thanks to the hybrid subscription model, I can stop paying for the tool but keep my last 'lifetime' version as long as I care to use it. And if I pick up a job in the future that makes heavy use of it, I can re-evaluate whether it's worth subscribing for another term to get updates.
In the same vain, I have an active sub for PyCharm (also from JetBrains) because as a Python dev, it makes a lot of sense for me to keep up with the new features as they continue to provide increasing value.
If you write SQL directly in your app it'll even highlight and autosuggest according to your actual database.
It proved to be dramatically more efficient to have a full blown DB tool just dedicated to exploring and interfacing with that monstrosity's database and have my regular PyCharm instance for code dev and light touches against the DB.
Additionally, at another time it proved nearly impossible to get the IDE db explorer to work properly with the jdbc drivers for a couple of large-scale hosted data lakes, but was rather straightforward in DataGrip. I have no clue why it was an issue with the explorer in PyCharm, but since I got it working in DataGrip I rather quickly moved on and accepted that I was gonna use DataGrip for the data lakes.
That said, I definitely love the db explorer feature, and recommend everyone take a look at it if you're already using a JetBrains product.
Also, just another shout-out to JetBrains again for their hybrid subscription/lifetime ownership license approach, demonstrating that paid software can exist in the realm of linux systems and that you can make a successful company without resorting to bleeding your customers dry over subscription fees.
Since we're discussing kids, I'd think boxed software would be much more "giftable", therefore easier to get as a kid. A game or program for Christmas? Sure! A WoW/Photoshop subscription? I wouldn't gift it. But that might just be me fighting against trends everyone's adopted already...
For one instance, I'd be willing to pay for Photoshop - and I did pay for Photoshop when I was still a Windows user. But instead I use some combination of okay free software (GIMP) and unpolished free software (Hugin) instead, because that's what's available.
Does any consumer software do this? Never encountered that...
§1. You want to make sure that your app solves a real problem well that users actually care about.
This is easy to understand, but sadly many talented software people ignore the wisdom and pay dearly. It fair enough if you WANT to write yet another text editor or you WANT to write something in Go and you pick yet another password manager as an exercise. But to build a commercially successful product, you should do plan for success and not leave it to luck. What areas are underserved for Linux, what groups have the budget to purchase your program and also are actual Linux users? (How) can you reach them?
§2. Develop apps that are better than the free apps.
This isn't very hard for many areas, since there are a lot poor free applications out there. However, many app types are not "mission critical", which means you can live fine without using/having them at all.
An example of a killer app was the spreadsheet app on the Apple II: people literally bought the machine to use the software. Of course there's a lot available today, so the bar for success is higher.
2 apps I paid for are those for which I couldn't really find a nice/free alternative: 1. Hiri https://www.hiri.com/ as I couldn't find a nice email client to work with Outlook Exchange 2. https://tel.red/linux.php Skype for Business client for linux
I think this category of apps have something going for them. I have since moved to WSL2 though and have found it to be a nice compromise for even serious work.
Projects like Piwigo (image editing, organizing and hosting) and SchedMD/Slurm are good examples.
Generally it's MUCH easier to budget based on subscriptions, then playing the prediction game for which users will pay $x for feature Y.
You could go for a "freemium" model where advanced features are payed-for, especially collaborative/multi-user ones, which will increase your userbase (individuals), that then recommend it to their company.
Collaboration/backup/remote-state features are also easier to justify as payed feature because you will need to store and serve content from a central location.
If you want to sell me Linux software, provide a fair pricing model and provide a native app (Spotify is Electron but, it's not a bad offender). Also, please do not neglect your app just because it's on Linux. I don't like to feel neglected just because I use a free & open source OS. You'd kill my loyalty.
Some of the applications are subscriptions, some are not. Some require paid upgrades, some do not. If I feel that your software worth the money you ask for, I'll pay for it, no questions asked.
I think inSync, StarUML and Pagico has great pricing models. The other examples I have work as a subscription already.
All of the applications I install (except MATLAB) comes as a .deb package. No frills. Plain .deb. Sometimes a repo is attached, which makes it nicer.
Thanks again.