OSS Rant AKA Its been a month since I last tried to make an OSS app work

Well those of you who know you will know that I live by the rule, right tool for the right job. Sometimes though it turns out the ‘tools’ arent exactly what you expect.

My expcectation of a application is simple



Run & Use

Windows does this pretty well but sometimes Windows isnt the right tool, in this case I have a little ARM8 system I want to use. This means Linux. SO OS installed, RDC on there, X setup, all going well. Now todays challenge is Sat Nav. After some diggin it turns out I want Navit. Theres an Android APK for it so I decide to try it on my phone first. The reviews arent great and centre on UI issues, pretty typical of a lot of OSS apps is a poor GUI that makes sense to the Devs or was an afterthought. If this works I’ll be doing major overhauls on the GUI so I dont care too much. Download it and install it, so far so good. OK, it needs maps so off we go to get the built in downloader….oh dear

To say is demented is not doing the full horror justice. On the surface it *seems* ok. Scroll down, Select UK and off it goes. Its a big file so I decide to do something else so the phone doesnt sleep, big mistake. The second I try and drage the status bar down the download aborts. and then wont restart. I try the England maps and try again, Menu key this time..blam, download abourts, wont restart just saying theres an error. Off I potter to the maps folder and remove the temp files. Its happy again I start the download again (350Mb) and go back to doing what I was doing. Blam, it dies again, this time because of a wifi glitch. Once again I have to clean out the folder and try again. in fact 8 times it took to get the map and then I had to do it again. Select a dowloaded map, touch the screen and it removes it, no confirmation dialog or warning it’ll do this!!! FFS Guys!

Map is downloaded and supposedly installed, excellent, only nothing happens. In fact the app does sweet FA untill the phone gets a fix. It doesnt tell you this, just shows a white screen with half the icons missing until you tell it to look or find an address (I wont start with the search function!)

Once its up and running it does look like what I need. however there is this complete lask of finesse. You dont have to look far to find this elsewhere. Two big ones, Apache and Samba, ok text based setup but high Voodoo can make more sense for some tasks. The config interfaces are inconsistant leaving mines for newcomers to step on for no reason.

Here’s someone else’s explaination of Apache…hate_apache

There is a lot of OSS stuff that *just* works. Its sadly outweighed by the crud. I say crud but in my experience if you can make these apps work they normally do what they say on the tin and do it very well.  It seems there are a few routes to trouble.

1) I need to do X, I made it work, now to share it with the world!
This seems to result in software thats way too closeley tied to the dev’s hardware, often has no docs or what is there is poor and MAN is it easy to break. If I’m going to throw something open to the world I *always* make a point of putting a good amount of testing/error checking in there and at the very least make sure it runs on something else other than my desktop.

2) Feeping Creatureism
This is an easy one to fall to and anyone that writes software has seen it and done it. You start with an app to draw an OSD on a screen. Just a bit of green text at the bottom is all you need. Halfway through you realise you could put it anywhere so you code in that, then you think about graphics, so in that goes, then you could allow color changes so in that goes. The basic requirement at thi point doesnt actually work and often ends up being a rush to make it all work just well enough and projuces code rife with odd bugs, kludges and spaghetti code. Your simple program is now many Mb ond requres a degree in quantum mechanics for anyone else to follow.

3) Boredom
You’ve written your app now you want to play. Maybe you did the right thing, made the basic app work avoiding 2) and you want to go add bits, thats great. However you’ve not documented anything and the UI makes sense to you and no-one else. You’ll go through 4 or five versions and then you’ll get bored and stop working on it. These tend to be the apps that people find and start jumping for joy because someone else is trying to solve that exact problem. This normally ends up with the app being impossible to configure/use or works so very nearly bar a tiny bug. Because the dev got bored that bug was never fixed and because they didnt document anything, no one else knows how to.

There are many, many more causes however a lot of this is mitigated under Windows and this does Linux a lot of damage. If I write two apps to do the same thing, the windows one will take a fraction of the time, it has a GUI, I rarely need to think about dependancies as *most* Windows systems are equal (I use Delphi so none of the DLL dependancy rubbish of VB/VC apps which *still* isnt resolved). Unless I’m hooked into something like a driver my code will run as it. The workflow in creating a Windows app makes it harder to produce an App with a useless GUI too. Under Linux I have to think about so much more, so many more steps. I need to think about depanancies and unless I’m mad and have forever Binaries arent going to work because every install is different. I could compile for Distro X version n but the next fork/version/update will likeley be different and will break it. This means testing becomes all but impossible too. I can test on Win XP/7/8/10/Server 2008/2012 inside of 15 minutes. They are all here as VMs and for most cases I can safeley assume that if it behaves with 8 and Server 2012 I’m going to be golden.

For Linux and OSS to be seen as a serious alternative this all needs to be addressed. Through design Android has *almost* solved the issue, if it wernt such a pain thats where I’d be going as a business for our embedded stuff (and we still may do)


Leave a Reply

Your e-mail address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.