Real reasons why most companies don’t waste their time developing software for Linux
I am a Linux fan and I use that all the time, but there are some things that really, (REALLY) have to be changed before most companies will even start to take it serious. Do you want to see that cool application ported to Linux? Or that software your uncle just bought at Best Buy? Here’s why it is not supported on Linux:
1-There is no binary compatibility between distributions (or even between versions of the same distribution)
That’s so annoying and probably THE reason why most companies don’t write software for Linux. If I get an executable that I compiled on my Windows XP, it will run on Windows 2000, Vista, 2003 and maybe on Windows 98. People complain about Microsoft and all the stuff they do wrong, but they are good at backwards compatibility. Linux should do the same!
Why, God, why the binary I just compiled on Ubuntu 7.10 won’t work on my 9.04? Why won’t it work on Red Hat?
I know there are technical issues, like dynamic libraries, GCC version, etc, but that is a solvable problem. It shouldn’t have to be that way anymore. My own company won’t even bother wasting time migrating our code to Linux because of that. Within the same distribution, the code should be backwards compatible, and the Red Hat, Ubuntu, SuSe guys need to talk to each other to get in sync! We, as the community have to demand that they do so. Let the competition to the side a bit and get that sorted out. It is just going to be better for everyone in the long run.
*crap, even a binary I compile on Solaris 9, works well on Solaris 7 and 8…
2-Installation nightmare!
I know, I know.. apt-get is awesome, yum is pretty good! synaptic allows you to install “anything” you want. Users don’t have to worry about dependency…
However, there is no universal way to install an application. Companies used to build Windows software have one installer and that’s it. Can you imagine having to do one RPM, one DEB, one .tar.gz, etc? Each one with different binaries because the SuSe RPM doesn’t work at Red Hat? I am not talking about the complications that the end-user faces with that, but the issue that software developers have with it.
If the Linux community want companies to start developing and migrating their software to Linux, we need an universal installer. Yes, Fedora can still use yum, same for Debian and apt-get. But they all need to support a single installation method. Which one? I don’t care, but they have to talk to each other and decide.
3- Not enough user base and complacent users
Linux users should stop using Wine. Should stop dual booting to Windows to use a software that is not supported on Linux. We have to complain to the companies and let them know that they are losing a client and money because of that.
4- VI is still installed by default everywhere!
That’s a crime! Who will waste time with Linux if it still comes with “vi” by default? Emacs is so much better that it is not even funny.
Ok, I am joking… I love vi

There’s a much larger installed base of Linux systems than Unix systems, and more Linux servers than at any other time in history.
Commercial software for Linux systems exists by the boatload. The problem is that evidently you haven’t worked in a company large enough to actually use it. See any of the Oracle, EMC, Autodesk or IBM software products to see examples of functioning Linux products.
And let’s not even get started about cloud products and web services.
For point 1 you obviously haven’t heard of the linux standard base.
http://www.linuxfoundation.org/collaborate/workgroups/lsb
Do you think companies would be willing to contribute money to have open source developers create unofficial versions for linux? this especially applies to device drivers
*shameless plug: http://nextsprocket.com lets ppl to contribute money for new open source project ideas
Software companies assume that people who don’t buy windows, won’t pay for any software. This assumption is actually backed by their sales data.
Tommy: great site idea. thanks for sharing it. As for companies paying open source devs, I don’t know.. I think they would want that for free
Maybe with a good structure and a model to make sure the code gets done, they might.
The only time I ever see vi is when I try to log a cron job for the first time. The only command I know is :q and damn am I in and out. Then I change the EDITOR to be emacs and I am in business!
Emacs (-nw means the terminal version) is AWESOME! Color coding is easy and compatible, it is super fast to load and the key combos are actually pretty universal (if you press control-k in osx terminal it will remove what’s there, press control-y and it’s back! ).
Great list, if Linux doesn’t fix your small qualms it will forever be relegated to a hobbyist OS. Perhaps one version of linux will be more mainstream, but with all of the infighting and lack of compatibility only the APIs will become more stable (QT, Gnome and their cross-platformness might be helpful).
The homogeneous solution that is Windows would be my vote against being able to run a single compiled version on all versions of Linux. Seriously. This diversity is a plus not a minus. Most distros are willing to work with companies to help them package their software. And if not, someone in the community is more then willing especially if they need your software.
We can design installers that have the source code them, and also instructions that intelligent compile them and install them on various systems. Can’t we?
I think you really hit the nail on the head – but there is something else that you missed – linux users expect everything for free, otherwise they bash it for “not being opensource”. That usually means poor ROI for any company.
Sami: That doesn’t work for closed-source companies (or 99% of the software out there). They will never send their code and instructions how to compile…
Development Company: That’s a problem too, but if Linux wants to go mainstream, that mentality needs to change. As more non-geek users start to use Linux they will want to buy software from best buy and others that just runs on Linux.
Linux distributions are binary incopatible by design, you can’t eliminate that. On the one hand this is not a problem for big commercial applications build against some rockstable enterprise distro with long term support (RHEL,SUSE), on the other hand it’s pain in the ass for anybody else who would like to build app for users of several user-centric distributions.
You are not the first one to notice this so there are already developers trying hard to solve this problem. One of possible solutions is openSUSE build service (OBS), which can generate several packages for various distribution from one source, see http://www.kdedevelopers.org/node/4177. This would solve the first two items on your list.