Software Development with Linux

Meet the Linux Family Alex Petit Bianco

MON, 01 FEB 2010

Meet the Linux Family is a series of interviews with various software developers, managers, and users, who all have a point in common : they use Linux.  They will brings different point of views on various Linux related topics and share their Linux experience with you.

We are already at the 3rd interview of the series.  I hope that your are enjoying them as much as I am.  For this one, we'll discuss with Alex Petit-Bianco.  Alex is currently a senior software engineer at Google.

Laurent : For how long have you been using Linux?

Alex : I've started to use Linux when I got enough money to buy a decent Pentium laptop.  It was in 1995 and I seem to remember that the first distribution I ever ran was Slackware.  I ran AfterStep on top of X11 because at the time, NeXTStep was still a UI reference for some of us!

Laurent : Why did you started to use Linux?

Alex : I was driven to Linux mostly because of its free software nature (as a kernel and as an OS).  I've been introduced to the Gnu project at my University in Paris by my adviser Jean Mehat.  It was in 1988 and nothing caught my attention better than his words : "There's that crazy guy at MIT who is rewriting the entire Unix operating system.  He has started with an editor and he has now moved to the compiler, linker, and debugger. There's also a shell".  Wow -- that got me hooked.

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

Alex : Since 1995.  On that very same laptop I started to port code for an interpreted execution environment that I wrote for the company I worked for at the time.  It was a port from Solaris/SunOS to Linux.  That's when I realized that Linux was really close to any Unix I've ever used (at least for the APIs I cared about) and that the Pentium laptop was as fast as an entry level Sun workstation.  Well, maybe not the IOs but it sort of felt as fast.  Anyway, it made me realize that big changes were coming.

Laurent : Talking about big changes...  Do you think that the cloud and web 2.0 movements we are seeing now, with more and more applications online, will help Linux and free software?

Alex : Linux and open source software are certainly playing a large role of enabler for cloud based computing from what support the server farms to the end devices, like Linux-based netbooks.  Cloud-based development environment are also enhancing the sort of collaboration that naturally comes with hacking free software.  However, for advanced or more traditional free software users, the cloud breaks the download sources, build, and run cycle.  It also break dichotomy between free and non-free installation of a package, which is sometimes enforced.  There's mostly nothing added to our system when we run cloud-based application.  It weakens a bit the free software reflexes we've acquired over the years regarding ownership of data and well thought-out choices of using free or non-free application.  We tend to forget about these things when we're just being served online computed content.  Open source style collaborative development efforts of cloud-based applications already exists, but some of the most drastic move authorized by the free software model, such as a fork, will get trickier to execute.

Laurent : Yes, even if you fork the application, you still need some place in the cloud to run it.

Alex : And there's always the question of the computing resources.  Individually, we can run millions of instances of a free software application on our individual computers.  If we care for the advantages that the cloud brings, where are we going to find the computing power to run the same application in the cloud?  The collective power of individual computers, especially the one running free software, will need to be harnessed in one way or an other to provide a collectively owned cloud infrastructure.  Or at least, it seems one possible answer the free software community should spend time exploring in the immediate future.

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

Alex : It's my development environment at work.  It's also my main computing environment outside of work.  I use it for music, photo editing, and the miscellaneous tasks one has to complete with a computer on a daily basis.  I volunteer for several organizations and interests groups, which means email, writing portable documents, blogging, etc...  I'm also an amateur photographer so I post-process shots with UFRaw and The Gimp.  The house has never been running anything but Linux.  The kids aren't running Windows and I got my girlfriend, who's in software as well, to use a Mac.  My DSL access point runs Linux, my Android phone runs Linux as well... It's pretty much everywhere I look except a few appliances.

Laurent : Why do you prefer using Linux?

Alex : It's Unix and it's open.  Most of what I use is open source, which is really important to me.  I can script tasks, but I know that I can do the clicky thing too for unfamiliar sub-system.  It has a basic security model that still pretty much holds up to threats plaguing less thought-out operating system currently in use.  It's certainly not immune to everything, but nowadays distros are pretty much securely locked down, and the applications are following suit. The biggest security problems are located between the screen and chair!

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

Alex : Initially, the system was designed for programmers writing somewhat high level code, for that time, but which turns out to be totally low level code today.  The basic concepts and OS abstractions, although a bit outdated, have aged rather nicely and still make sense to use today.  Nothing gets in the way of you writing a small piece of code, debugging it, and rapidly get a running proof of concept.  If you're in UI development (which I don't do) or integrating large software pieces, you might find that opening an editor, typing code in, invoking an interpreter/compiler, and starting a debugger or looking at print statements doesn't suit you well.  But there are now more modern tools to assist you with that too.

Laurent : It depends on what kind on development you are doing.

Alex : When I write code on Linux, I have at my disposal the basic tools that I've used for years.  In most cases that have been improved, but they fundamentally have remained the same.  I fire-up a terminal to read man pages, I can download free software packages and read the code to understand how other people have done things.  It's an environment where I find myself to be very productive.  I wonder how productive I would be on a different OS.  I've made the bet that for the class of applications I was interested in writing, some other OSes would never cut it and I hence wouldn't have to bother learning them.  So far, I never had to suffer from that choice.

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

Alex : In order to answer that question, I need a element of comparison, which I lack.  I often hear people complaining that debugging isn't up to what it is on other platform.  I tend to agree with that, just because I've seen nice screenshots of tools used on those other platforms!  I've lead people that were more familiar with a point-and-click development environment.  Once they got used to how things were done in Linux, they really started digging it and very rarely would point out to me : "Oh, with such and such OS, it's easier to do that."

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

Alex : As far as development, I accommodate almost any limitations or I just avoid running into them.

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

Alex : I've been running Emacs since the late 1980s.  I still use it everyday to write code and debug it.  Other than that, my development environment is very old school: a scripted set of rules directing how to bring source code into an executable form (like a Makefile) and a few terminals for the build and debug cycles.

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

Alex : I really can't answer that question.  I've never written serious code for anything but Unix and Linux.

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

Alex : Learn from our masters.  Read lots of source code, work on small projects to get you started, and contribute.  It doesn't matter even if the contribution is small.  If code is scary at first, attack the problem from a documentation angle.  Patches are always welcome, no matter how mundane.

Laurent : Anything to add?

Alex : We need to teach our kids to be smarter with computers.  I see a lot of the younger people turning into mere consumers of computer generated/supported entertainment with zero interest in how it works or how it is made.  I'm afraid than once adults, instead of overcoming the initial fear of complexity and then being brave enough to get their hands dirty and hack things out, they'll have to suffer the use of computers.  Computers are going to rule our lives more tomorrow than it's already the case today.  We need as many people as possible able to keep the upper hand in that game.  Get your kids interested in writing code and understanding the intricate beauty of what's under the hood, even if they don't want to join the field.

Laurent : Great advice!  Thanks for your time.