Comux 000101


Comux 000100


Linux Development, is it ready for mainstream?

Linux has made leaps and bounds when it comes to end user interface over the last 5 years. There are tens ( hundreds? ) of thousands of developers dedicating free time to writing fantastic software for Linux, and there is no doubt in my mind that the popularity of the Linux desktop is rapidly increasing. But what is the state of Linux for the average modern developer? Are the tools decent and easy to use? Can the average UI developer just pick up something and write an app that anyone can use? In short, my experiences would have me say no, and this is why.

Historically, Linux package management has been a nightmare, possibly even the main reason why it has not been desktop ready until 4 or 5 years ago. End users don't like to compile from source, and even intelligent users get baffled by build dependency issues. Over the last few years, this has slowly changed, with amazing software systems(?) like zypper, yum and apt, and some really great abstraction layers like packagekit which may allow every Linux OS to share a single package manager ( if the user so wishes ). New services like Launchpad and SUSE Build Service allow developers to get their projects onto those platforms, in the available repositories, and while these tools are necessities, the step before getting your applications onto these services is still a fierce battle.

Having been a commercial developer for several years ( first at a large vehicle simulation company in South Africa, and now at a game studio in the Netherlands ), i am somewhat used to different tool chains, platforms, build systems and source control. So far i am yet to come across a Linux tool chain that is simple. The horrors of Objective-C and XCode for iPhone development are relatively tame by comparison to cmake, qmake, automoc, makefiles, and actually getting any IDE to work for the task at hand. Being still relatively young, i have always used an IDE where i can, and it seems that in the Linux world, this is a huge disadvantage. I don't know the ins and outs of VI or Emacs, and don't particularly want to ( since this is Free Software, and that's my choice ). But having to spend hours searching online and posting to forums just to contribute to a project or get your application building is ridiculous. Core stuff like building a project shouldn't be a struggle. I'm willing to accept bugs in code that i can run, but how can i, or any other free software enthusiast who hasn't been a Linux dev for 5 years, contribute if the tool chains are so complicated. For a while i thought i was alone in this, but it seems there are a large number of people who have only managed to get stuff building with personal assistance from an experienced developer.

Some real world examples might be necessary. 

With development for Windows or XBox 360 ( as a community game developer or a licensed developer ), one could just fire up a free copy of Visual C# 2008, and build an application in a few minutes. While .NET seems to be hated in the open source world, it's pretty decent technology and a real breeze to develop with. While i really dislike C# as a language, it's fantastic for a quick GUI app or an XNA Game Studio ( also free ) prototype or even an XBox Live Arcade Community game. There have been many occasions where i have wanted to see some code of how something was done, and this was just a matter of downloading their source, open it up in Visual Studio and building. No fighting with dependencies or tool chains.

On the Apple front, if i were to develop an iPhone application, i would be able to download the SDK which contains XCode and all the libraries. While the tool chain and XCode are far less user friendly than Microsoft's, it is still relatively simple to have a GUI or 3D application up and running in a matter of minutes. All of the available examples and open source applications provided just work, again like with Windows, opening and building in XCode.

When it comes down to end developer, the Linux tool chains are horrible by comparison, and i might hazard a guess as to why. If most of the developers working on it have had more than 2 years experience on it and more than half of them don't actually use an IDE, but rather text based tools, it is easy to see why the tool chain doesn't improve rapidly. While i have an amazing amount of respect for people who do this development, it's still very important to allow new younger developers to have easy access to the tool chain. While some IDE's have their strengths - KDevelop being pretty decent for KDE apps and ( imho ) not much else, CodeBlocks being great C++ with really poor UI support, and Monodevelop being fantastic for C# although it cashes way too often - none of them match the simplicity that you find in commercial products.

I feel that more needs to be done to make development more accessible, so that more applications can be produced by new developers and so that companies who want to build cross platform software don't fear the Linux tool chains. I would suggest this to be the next hurdle to getting Linux as a globally accepted OS. Since the interfaces are looking amazing these days ( KDE 4.2 RC is really pretty and functional!!! ), this might be one of the last things holding it back.


Comux 000011


Comux 000010

they might also refer to the wikipedia page: http://en.wikipedia.org/wiki/Category:Shades_of_green

Fedora, Two Weeks On

After two weeks of using Fedora on a daily basis, i thought it important to give an overview. With any OS there are pros and cons, and we always miss things that we are used to, this is normal human behavior. Fedora 10 is definitely no exception, but the fact that i haven't considered removing reflects on more than my laziness.


  •  Speed: Fedora is ridiculously fast. It has way outperformed Ubuntu-eee 8.04 and Kubuntu 8.10 on the EEE. Even with KDE 4.2 beta, the desktop is as responsive as i have used it on any other device.
  • Size: Fedora can easily be customized to take up far less space than i could manage with openSUSE. Albeit marginally larger than Ubuntu, i still class this as a positive.
  • Desktop Integration: The OS is well suited to the desktop. Whenever i install Kubuntu i find myself fighting with tools that don't feel right on the KDE platform. Fedora seems to have this right with good tools that fit in nicely in both KDE and Gnome.
  • Tablet Setup: This was very easily done, much more so than any other OS i have tried on.
  •  Software: The available software repositories allow for easier installation of certain applications that matter to me, such as CodeBlocks and KDE 4.2 beta ( which i could not get on Ubuntu-eee ).


  •  KPackageKit: While it is good for its current age, it is not nearly mature enough for me to use as a primary package manager, and there is not very much control individual packages installed. I had to install Yum Extender ( yumex ) for more options.
  • Kopete: Before upgrading to the KDE 4.2 beta, the version of Kopete was one that i have seen before, a very buggy version that crashes a great deal. Thankfully the update fixed this, but it doesn't reflect well on default applications.
  • No YaST: i really miss some features, especially 1-Click install.
  • Yum: Yum is sadly much slower than Zypper or Apt, and hence makes package management take more time. This is not a big issue, but it could have been better.

Other than these, a few things should be taken into account. When testing out different OSes, i could not try Mandriva. It was sad, as i had really looked forward to it, but after two failed attempts with Unetbootin, i gave up on it. I have also not tried openSUSE 11.1 ( altho i had tried a rather sluggish openSUSE Factory ). It should also be noted that i have an SD Card which i use as a swap partition, just to aid the OSes along. As a final word, i have to say that i would still install openSUSE 11.1 onto a new desktop PC or more powerful laptop, because features like 1-Click install with more software availability than any platform i have seen are too big for me to leave behind.