Software Development with Linux

Meet the Linux Family Eric Hameleers

MON, 01 FEB 2010

For this edition of Meet the Linux Family, I've interviewed Eric Hameleers.  Eric is a core team member of the Slackware Linux distribution, and is also currently working for both ASML and IBM.

Laurent : For how long have you been using Linux?

Eric : I started using Linux in the early nineties, around 1993-1994.  I bought a copy of Yggdrasil Linux basically because I had grown frustrated with the lack of a proper UNIX for my Atari TT, on which I developed software during the years before that.  Even though programming for Atari's GEM environment was a joy, I earned my money working with high-end Apollo graphical workstations, so I decided that a graphical UNIX would be my future OS at home.  Linux seemed cheap and more powerful in comparison to anything Atari was creating.  Still, I never touched more than Linux's surface and it took more than a year until the software developers in the new company I joined introduced me to Slackware Linux.  These developers used Slackware as a cheap cross-development platform and they were quite happy with it.  It did not take long before we had created a company intranet by connecting Slackware-powered web servers in various offices.

Laurent : For how long have you been doing software development using Linux?

Eric : I have never actually programmed anything useful in any common language on Linux.  I have scripted quite a lot, using shell script, Perl, and PHP.  I am more of a "distro developer" which requires a lot of knowledge about the principles of software programming and compilation, but does not produce code.

Laurent : What are your day-to-day use of Linux?

Eric : I have two laptops.  I take my Eee PC 1000h when I have to travel light or go to presentations and I use a ThinkPad T400 for my work as well as for Slackware development.  I run several incarnations of Slackware on that T400.  One is a stable system and I use other partitions as my playground.  I also use VirtualBox to test my ideas without disrupting the stable system.  So I use my home Linux desktop for the development of Slackware and for basic day-to-day stuff like surfing the net, printing, document processing, interacting with people, and playing games.

Laurent : Which games?

Eric : 3d-shooters by id Software and their derivatives are running great as native Linux applications.  I rarely use Wine for games.

Laurent : Why do you prefer Slackware versus the other Linux distribution available?

Eric : Slackware has always given me full control over my computers.  It is an easily customizable distribution, it is not plagued by dependency resolution and unforgiving package managers, and I can compile any software without much trouble because the distro is sticking close to the original source code of any piece of software that it carries.  I may be a bit biased since I am part of Slackware's core team of developers...!

Laurent : That's fine, everybody is biased!

Eric : As you may know, Slackware does not have an 'open' development model: even though we listen to and discuss with our userbase, there are really only very few people who contribute substantially, and there is only one person (Pat Volkerding) who decides what goes into the distro and when.  This approach has kept Slackware stable, fast, and yet full of up-to-date software.  I have used and still use other distributions like those created by Novell, Redhat, and Canonical, but Slackware is my number one choice in most cases.

Laurent : What would be your main arguments to convince people to use Slackware instead of the more popular Ubuntu or Red Hat distributions?

Eric : I think many people who are new to Linux, should at least have tried a distro like Ubuntu before working with Slackware.  Those who need to use Linux as a 'tool' and have no need to know what lies beneath may be better off with one of the bigger distros since they deliver a Linux system that just 'works' out of the box. Those mainstream distros may be a safe choice if you don't want to become intimate with concepts as 'the kernel' or 'compiling software'.  However, in the Slackware forum and IRC channel we see that many people who have previously used the bigger distros finally turn to Slackware - out of frustration by the way these distros ultimately get in your way instead of giving you full control. This is why Slackware still matters and has not disappeared into the void. It will always attract knowledgeable people. Slackware assumes you are smart!

Laurent : That's OK, since all my readers are smarts anyway!

Eric : Having said that, Slackware is not a difficult distro to learn, not even for people who are new to Linux. It does not have graphical tools for everything.  Even if you have to think instead of being guided by 'setup wizards', it is straight-forward and logical. Without being a bleeding-edge distribution like Fedora, it comes with all the software you find in those distributions : recent versions of Linux kernel, X.Org, KDE, XFCE, udev, and all the core utilities you need.  We simply lack the manpower to hunt down and fix the programming errors that come with new software.  Slackware's philosophy is to create a stable overall system.  You can rely on it, even the development version (called 'slackware-current') which can change dramatically from one day to the other is considered stable enough for your desktop if you are adventurous.

Laurent : What do you think are the advantages of developing for/with Linux?

Eric : The number one advantage is of course that you get this fantastic UNIX-like operating system, with its stability and speed, completely for free!  Then there is this huge amount of high-quality software, from compiler suites to graphical IDE, which a developer can tap into.  Despite the fact that the big corporations are influencing the GNU/Linux landscape in not purely a positive way, the free software movement is a vibrant community of people who are devoted to enhancing the Linux kernel and the open source software that runs on top.  If you develop your software on one of the available Linux distributions, you are essentially part of a larger body which will allow you and your work to grow and mature.  Nothing works better for software quality than peer review.

Laurent : What do you think are the disadvantages of developing for/with Linux?

Eric : Looking at this question from a distro perspective, I would say that having to cope with proprietary, closed-source hardware specs and drivers is something that should have been eradicated a long time ago.  Even in today, with GNU/Linux being used in all corners of technology, many hardware vendors are afraid or unwilling to open up their products for Linux.  This is so short-sighted that it keeps amazing me.  You can tell an identical story about the use of open standards in communication and data exchange of course.  There is a lot of money at stake and those who create non-open/non-free products are fierce lobbyists trying to protect their commercial interests.  The change has to come from below, where you can prove by example that the open source model works, and then you let this change bubble up to where the decisions are being made. It is the only way to force a turnaround in commercial thinking.  Working with Linux for over 15 years has made me realize how difficult it is to cause real disruptive change. We have all the ingredients; we simply lack momentum as a movement.

Laurent : What's your "pet peeve" about Linux software development?

Eric : I hinted about it in my answer to your previous question.  The Linux, or in a broader sense, the free software crowd, is full of big egos.  Lots of effort goes to waste just to prove a point.  You're not happy with how someone develops his software?  OK, either fork his code and continue with parallel development or re-implement the original idea.  I used to curse when yet another product got forked and development resources were diluted because of the fact that people could not co-operate.  I have sat and watched in desperation, looking at great software being wrecked because developers could not agree on the course to follow.  It has happened and it is still happening.  It's what makes it so hard to keep a Linux distribution stable and appealing, because what you include one year may already be obsoleted or destroyed the year after.  At least, when you are running a commercial business with pre-defined goals and a funded development, you have most noses pointing in the same direction under a solid project management (or so you hope).

Laurent : Is it really that bad?

Eric : Well, I eventually came to see the bright side.  Actually, this process is good as well as bad.  This "chaos and mayhem", this continuous clashing of personalities, it causes accelerated growth.  Consider all these great ideas and concepts that form in peoples' minds that are being shaped into actual code.  Some of that code will be better than what we had previously.  Not because we decided in advance that it would be better, but because it proves itself to be better.  The evolution of free software occurs at a much faster pace than commercial, closed-source software.  It is enlightening that Steve Balmer, Microsoft's CEO, called Linux "a cancer".  He recognized what drives the community,  he just misinterpreted what he saw.  It's not an uncontrolled growth that destroys; it's a flurry of creative effort that builds, expands, and extends.

Laurent : Which software development tools do you used the most?

Eric : I am a big fan of the vi editor. Vi is present in some form on every UNIX-like system. I use vim/gvim where available, but the simplest version of vi is still a powerful tool.

Laurent : Which software development tools you'd like to have for Linux (which currently doesn't exist, or no good solution exist)?

Eric : As I am not really a software developer I have no opinion here. I want to provide tools to people, not use them!

Laurent : Any recommendations/hints/wisdom for people new to Linux software development?

Eric : Try to get some historical perspective.  It helped me a lot in my understanding of UNIX/Linux and its underlying design, goals, and philosophy to read the original books The Unix Programming Environment by Brian Kernighan & Rob Pike and C Programming Language by Dennis Ritchie.  Also, The Cathedral and the Bazaar by Eric Raymond should be checked out by every aspiring programmer.  With this background knowledge, it will be so much more natural to interact with the free software community.  Knowledge is power!

Laurent : Anything to add?

Eric : I'm interested to read the other episodes in your series of interviews. Good luck!

Laurent : Yes, I hope that they will be as interesting as this one.  Thanks for your time!