Getting the hobbyist back

10:18 pm community, gimp, gnome

When I first installed a Linux distribution in 1996 or 97, it was a horrible experience. My friend who had started a few months before me thought it was great, though – I remember, it was Red Hat 5, the first version that had an ncurses installer that helped you through the process.

I was confronted with dozens of questions I knew nothing about and wasn’t equipped to answer. Did I want to create a primary or secondary partition? What was its mount point and filesystem type going to be? What was the manufacturer of my video card? What resolution & refresh rate did I need for my monitor (WARNING: the wrong answer can make your monitor explode!)? What was my IP address, netmask, gateway, DNS server? What keymap did I want for my keyboard? Was my NIC using ISA or PCI? Was it 10baseT or 100baseT? Which driver did it need? Was my mouse a PS/2, serial, Microsoft or “Other” (there was always an “Other”)? And on and on it went. How the hell did I know? What did I care?

But it was a learning experience. Installing Linux was the period in my life where I learned the most about how computers worked, hardware and software. Back then, if you wanted to try out an application you heard about, there was only one way to do it – download the source code and compile it. I had a wad of software in /usr/local, including MySQL, the GIMP, Scilab, and a bunch of other stuff I’ve forgotten. There was no online distribution channel. Free software developers didn’t do packaging, there were no PPAs. If it didn’t come on the install CD, it needed compiling.

It wasn’t better. There were fewer of us. Linux had a name as a hobbyist’s toy for a reason. Those of us that there were had a certain minimum knowledge of our systems. You knew shell commands because there was no other way to do anything. Everyone knew about fstab and resolv.conf and ld.so.conf and compiling kernel modules, because you had to. And every time you installed software, you had the source code – right there on your computer. And you knew how to compile it.

I don’t know if I would ever made a patch for the GIMP if I didn’t have the source code and had already gone through the pain of compiling & installing all its dependencies. I doubt it very much. And yet that’s the situation that the vast majority of Linux users are in today – they have never compiled any software, or learned about the nuts & bolts of their OS, because they don’t have to.

I remember Nat Friedman talking about this in a presentation he made a few years ago about how to become a free software developer. Step 1 was “download some source code”, step 2 was “compile and install it”, step 3 was “Find something you want to change, and change it”. And I recall that Nat identified step 2 as the major stumbling block.

We have bred a generation of free software users who have never compiled software, and don’t particularly care to. Is it any wonder that recruitment of developers appears to be slowing, that prominent older projects are suffering something of a demographic crisis, with hoary old 30 year olds holding down the fort, with no young fiery whippersnappers coming up to relieve them?

Is this a problem? It seems like it to me – so I ask the question to a wider audience. With a second question: how can we get the hobbyist back into using free software, at least for some part of our community?

22 Responses

  1. Cyrille Berger Says:

    I do not really think there is a decrease interest from young fiery whippersnappers in joining open source. I think the problem is that many of the oldest application are written with old technologies, I am mostly thinking about the C language. While most of the youngster are taught Java or C# in school, and hardly any C. Which makes the gap for joining a project even bigger than compile and install.

    Not counting, that many applications have grow so much that their code source can be intimating. But good and well documented plugin interfaces can solve that problem. Even better if they allow the use of different programming languages.

  2. Andreas_P Says:

    Nope,

    I humbly do not think so.

    Because there are (will be) always Geeks like myself, that want to have open structures and think about contributing. The more they think, the more they’ll get in return.

    By the way: I am a (bit older) computer science student together with lots young (19-28) rookies that just want to understand everything they encounter.

    Technical University of Darmstadt (Hesse) Germany

    yours Andreas_P (and many thanks for your efforts, I would love to have the time to contribute…

  3. Boudewijn Rempt Says:

    It’s anecdotal, but here I go… I’m forty years old, there are gray hairs in my beard and I’ve used Linux since 1994 (though the first five years were in parallel with Windows). So when I looked around the room during the Krita sprint I felt old… The room was full of young students and phd candidates. In 2010 alone, we had four new hackers of the student age join the project. All of them had to learn C++ — but then, I had to learn C++ when I joined the Krita project in 2003, I was a Java/Python/Visual Basic guy.

    What has changed since 2003 is that the Krita project has become much more communicative: every new channel seems to have created new interest. Forums, website, identi.ca, twitter.

    What might help with making the project seem hackable is not hiding the development process. KOffice.org does its best to be a users-only website, krita.org shows everyone that krita is developed by real people with names, interests and real life.

  4. Dmitrijs Ledkovs Says:

    I use gnome and want to start contributing to gnome. Official Gnome modules espciallly the establised old onces are written in pure C/Gtk+ with plain widget packing.

    Why do I have to understand that if i can write GtkBuilder files by hand? Please point out a gnome module which gets all the widgets created from xml definitions. And the code is mostly callbacks & processing.

    That’s just one example. Old high quality codebases & with cool inovative features are very intimidating =)

  5. Brad Laue Says:

    I now regularly use Ubuntu as my main desktop as a matter of convenience, but I prefer to introduce new people to open source by way of Gentoo or FreeBSD if they’ve demonstrated an interest in computing. The difficulty level combined with the documentation is just sufficient to kindle an interest in them.

    I do agree, the convenience level of modern distributions combined with the backing of companies that, for the most part, pay primary project contributors, creates apathy in the new user – they need a challenge to start with.

  6. oliver Says:

    One way to make it easier for people to get started is writing apps in scripting languages :-)

    Seriously, todays distros come with lots of PyGTK apps installed from start, for which a simple “sudo chmod a+rw /usr/share/…” is sufficient to get your hands dirty with real code and actual results. Sure, it’s dangerous as you are modifying a live system, and also any system update might overwrite your changes; but it circumvents all download/configure/compile/install problems.

  7. Benoit Says:

    I totally agree with Brad, today must distro lack a “itch to scratch” feeling. My first patch to an open-source project comes from a package failing to compile on Gentoo.

    The packaging process and lack of upstream proximity in distribution like ubuntu make it much more difficult to contribute (in my opinion).

  8. Opoho Says:

    Have you checked Ground Control ?

    http://ground-control.org/

  9. Graham Says:

    What are you guys saying? This is called progress. I’m 50+ and had my time compiling / linking stuff from source (assembler & C in my case). I don’t really want to go back to this – its good that the entire process is more streamlined and makes installs trivial (Thank to Microsoft etc for setting user expectations here). We need more automation – not less.

    Tools and standard ways of doing stuff that just let you change what you need to and “press a key” to get it compiled, built and deployed to your test servers. Oh – that’s just what professional development tools / IDE’s do already.

    If you put THESE tools (rather than emacs etc!) as part of standard distributions – and you will get the hobbyists back.

    Simplify / automate and hide complexity from the end user experience (whomever your end user happens to be) and you will find you will have more end users interested enough to help

    This is why scripting tools are so popular – as the are simpler (on the surface) than C++/Java etc

    Thx
    Graham

  10. James Says:

    I think it’s hard, because you essentially enter the community nameless without a reputation and getting people to take you seriously, and look at your patches, and so on is difficult. The big names rule the playground and it’s tough. Especially since a lot of the big names are working for big companies that give them even more time to control the field. This is of course not the rule across the board, but it’s very hard to lower the barrier. Just my opinion at the moment anyways.

  11. Koos Vriezen Says:

    Seventies/eighties it was electronics and HiFi after a decade of motor engines and consumer machines, eighties/nineties computers and last decade chatting, music and videos. Games seems to be for all times.
    Aren’t new generations always occupied with new things and is there still something missing on the desktop?
    So currently I see that the desktop is dying and the future is cellular and car systems. Is that challenging enough for a new decade, dunno.

  12. Karl Zollner Says:

    Seconding what Brad Laue and Benoit said, this is but one reason why projects Gentoo and LFS are of paramount importance to the long term viability of things like FOSS.

    These projects guarantee that for those interested in understanding how things work from the ground up there is a community of people in place with a deep knowledge of these things.

    Paradoxically, I did not actually do any programming during my 5 year stint with Gentoo, and I am only now beginning to code again, having left that community. Of course those years of experience with Gentoo make the steps I am taking now far,far easier. Now I use Fedora and Ubuntu, primarily, because of the minimal amount of work need to get a running environment.

    I first learned programming as a kid dabbling in BASIC, assembly and Pascal. Nothing will ever replace BASIC for teaching kids the basics, and that is truly sad, for none of the modern languages, especially Python, offer an environment of instant gratification and simple positive re-enforcement. Everybody and their brother seems to be on the Python train nowadays, touting it as the easy to use/learn language for new programmers. IMHO nothing could be farther from the truth-if it wasn’t for the Gtk in PyGtk I would understand rien.

    When I finally discovered Linux, in 93, I hoped that I could get back to programming, but the complexity of programming for such environments was beyond daunting. I had no academic background in computing and was not working in the field.

    Vala was my ticket back into programming. Even though I had not programmed in years my use and interest in GNOME over the years(since 98), coupled with my compiling experience from Gentoo, meant that I had a grasp of all of the parts of GNOME, so Vala just made perfect sense, rendering access to the vast libraries of useful functions(ahem methods/classes/structs etc…) present in the libs which constitute GNOME.

    Now that I am back into programming I have been tempted to go back to Gentoo(or rather Funtoo, because the Gentoo community of old, metamorphized into something quite alien and unfriendly over the last few years. Getting Fedora or Ubuntu to the point where it is easy to work on software development is almost as much work as getting Gentoo up and running ;)

    But my interim solution has been to setup a VM with the conary-based GNOME Developer kit. Which gives me access to the bleeding edge of current GNOME development. Unfortunately at this time it is more of an anti-development environment for it contains none of what is needed to compile anything and getting the devel/devellib/doc/supdoc stuff installed is a humongous pain in the rear.

    There a multiple hinderances in place that make getting started really difficult-and I pity those who do not have the background I have from my days with Gentoo.

    1) a decent build environment. Most distros do not come out of the box with a build environment. Things are missing that should be there and knowing what needs to be there is itself a big hurdle. The seperation of packages into foo and foo-dev really complicate this process immensely-of course I am spoiled in this regard Gentoo did this perfectly-far and away the best build environment and docs/headers/libs etc. for every package always, already there at your fingertips.

    2) VM’s. Simply put nothing can compare with having a wonderfully sandboxed playground to work in. Yet I know of know Virtualbox images which I can just download which provide me with 1) and access to the latest and greatest of development source. I need about 2 days! to convert GNOME developer kit into a functional build environment, having to circumvent the package manager and install loads of stuff straight from source. Only then can I actually get things to work. Never again shall I mess with this stuff inside of the actual OS I use as my desktop.

    3) The development tools for GNOME are in a state that simply defies description. This is truly sad. Vala has been around for 2 years now and Anjuta needs at least another year before it will be truly useful for developing Vala applications. The saddest part is most GNOME devs do not use any kind of IDE (outside of emacs/vi) and therefore the dev tools languish, frozen, unloved in a cold, damp dark space.

    Glade3 could be great, but alas it has proved to be of remarkably limited usefulness to me. It is so undocumented that it is painful to look at. It lacks so many widgets, its way of dealing with widgets without a visual representation is really lacking. I have had nothing but trouble with uibuilder and this has resulted in Glade3 being little more than a preview tool for me. Invariably it take less time to hand code my gui that it does to debug self != NULL.

    Gedit + vtg is my solution for the moment-it works and works halfway decent. But man is that a primitive environment.

    4) Documentation. Vala documentation is simply a compounding of the general documentation problems in GNOME, for it is only as properly documented as the underlying C libraries are. On the other hand PyGtk documentation is remarkably good, so when I need to know something I first look at the PyGtk documentation, then I look at the C docs, then I look at the vapi ;)

    Finding code examples of Vala is really difficult. Firstly there isn’t much to begin with. Secondly that which is out there is in the form of actual programs which usually are so heavily multi-layered/abstracted that one cannot easily convert-but one can learn syntax ;)

    There is a 10:1 ratio of Genie snippets and small programs to Vala. So taking a Genie sample and converting it to Vala has been my primary way of learning Vala.

    The second way has been converting PyGtk to Vala, but PyGtk, due to it being Python makes my poor brain hurt ;) Give me Python without the inane spacing requirements but with some simple brackets and I might give it a try again ;). That and that Python is one big egomaniac-self this, self that, self the other ;)

    Thirdly I have had some success converting Gtk# programs to Vala. Unfortunately Monodevelops support for Vala is still in it’s infancy. I really wish the Glade devs could get together with the Stetic devs. Stetic seriously rocks. What Monodevelop and Stetic do for gtk# programmers is what Anjuta and Glade3 should do for Vala/PyGtk developers. From what I understand Vala needs to support partial classes in order to implement Stetic support for Vala in Monodevelop. If this happens and Monodevelop gets good sourcecompletion/code-folding for Vala, it will be *the* environment for developing Vala applications. I really, really wish Anjuta/Glade3 could be this solution-maybe someday they will be.

    Dave if I understand it correctly you are one of the primary hackers working on Glade3. I hope I did not offend you with what I wrote about Glade3 and my problems with it. I would love to help with it but learning C is not on my list in the foreseeable future. I commend those that can code in C, and I being a Vala user know the nature of my dependency on you C hackers. But if I had had to start off with C I would have never started programming again. G-Object style C programming is an exercise in masochism on a scale I will never comprehend, what takes me 200 lines takes C hackers 2000 lines, but of course only because someone else(sic!) already wrote those 2000 lines ;) As I said before I really wish you could get together with the stetic devs and learn from each other. And if you ever decided to rewrite Glade in Vala, maybe i could help ;)

    The way I am going about learning is insanely difficult but ultimately smart-at once I am learning Vala, PyGtk and Gtk#. This from someone who has 0 formal knowledge of OO ;)

  13. Stephan T. Says:

    If you haven’t yet noticed there is no more room for hobbyists in the “Open Source World”. All contributors are hired by the big S/W Companies – RH and IBM to name the first two. So the O.S. goes the direction these organizations want to.

    This is the reality! If you wish to become a contributor to Linux or other O.S. projects get hired by a tech company which wants to get/keep a foot inside the “Circle”. You will have plenty of opportunities to add/maintain features to above mentioned. But, let’s be clear here, not at all whatever you dream by night. No SIR! The features your employer is interested in because this sells the Company products.

    Another way to get in is to work for Academia. They, also have a big foot inside. Especially in the research.

    Now, what I do not understand is why do you complain? You are free to download everything and to modify it. Go ahead ! Publish on your site the features you worked on. If they interest lot of people they will be adopted.

    I am hobbyist too and I use Linux on SBC for all sort of projects. And I have fun with it. Sorry, but I do not see any problem here.

    Have fun,
    Stephan

  14. Graham Says:

    Me again – this chap says it fare more elequantly than I can (and more generally)

    http://feedproxy.google.com/~r/TEDTalks_video/~3/JJ3Mi7nst2Y/845

  15. Hobbyists & Hackers | Paul Cutler's Blog Says:

    […] Dave Neary wrote an interesting blog post yesterday commenting that the recruitment of new developers appears to be slowing. […]

  16. Victor Bogado da Silva Lins Says:

    I believe that we shound’t need steps 1 and 2. We need to lower the barrier on having your changes applyed to a software.

    How can we do it? I believe that one should be able to browse the source code with a web browser, and then he could make the changes and click a “compile” button. This woul start building a package, and then the user would receive the package ready to be applyed on his computer.

    I think someone on the ubuntu comunity is planning something on those lines, but I think this should be a very low entry, no need for anything but a browser, conceptually a user with windows would be able to hack on a package for linux.

    After he changes were done the use could be presented with the option to send the changes to the package maintaner or even to the upstream.

  17. Matt Zimmerman Says:

    I do think that something is changing here, but I’m not at all certain what it is, and have no data to offer at the moment, so this is all my conjecture.

    The fact that modern free software systems are easier to install and use means that developers aren’t “forced” into operating system development the way many of us were, but that isn’t the only way in. I didn’t learn to program the way my parents’ generation did (when you had to be a programmer just to operate a computer), and I don’t think that the lack of end user exposure to compilers and source code is the bottleneck at this point.

    Instead, I would argue that free software development itself is still too hard. Myriad incompatible build systems, archaic conventions, and (yes, still) elitist communities create stumbling blocks even for people who already have development skills. It’s enough to make anyone want to go and write an iPhone app instead.

    As a community, we need to start to recognize the difference between a systems programmer (who wants to tinker with the OS they were given) and an application programmer (who wants to treat the OS as a black box and create something new). Free software systems have traditionally blurred that line, and that may be holding us back by creating hurdles for application developers.

  18. Paul McDonough Says:

    I have to agree with the modern barriers into developing on the linux desktop.

    At 23 their are more appealing languages and skill to use; through using ubuntu / linux mint I joined the eeebuntu development team without even knowing how to build from source.

    I learned skills such as html / css / java/ php and now am starting to get to grips with vala and python. The problem is the lack of documentation or training / guides available online. I can go to google and in 5 minutes have a java tutorial to teach me something new.

    I’ve tried to teach some users on our forums how to build from source but with multiple ways of doing so , lack of documentation on how to convert these to debs, etc its almost a war. Their isn’t a definitive way to build from source on eg, a debian based system. You can dpkg-build , make install, checkinstall , dh-make , rebuild ,etc. To encourage new users to be involved in projects like gnome and contribute we need to remove the buffer from using to developing.

    There just seems to be a big gap , I’m trying to put together a gnome 2.30 build environment to build 2.30 for eb4 but still no gnome image or iso is available and nothing shows in google. Vala is a brilliant language ( we are currently writing our own installer purely in vala) but it needs cleared documentation , guides on how to write a simple application , on how to reference with libs ,etc.

    If languages like vala were trained through tutorials the way i learned gimp / ps (which got me into linux in the first place 6 years ago) then you’d have a bigger take up. Web development languages are easy to pick cos of the wealth of guides and tutorials online. If vala and others were done in the same way we would see a massive change from just brainstorms to apps!

  19. oliver Says:

    Karl: I agree that BASIC interpreters (like the built-in interpreter on C64) were amazing with their instant gratification – I haven’t found any other environment so far that can compete with this.
    However, have a look at Reinteract: it comes quite close to the BASIC interpreter, in that you can enter your Python programs line by line, get instant results after every line entered, and still can edit them later.

  20. Anonymous Says:

    I find it amusing that my comment would be moderated away. Always the same. You’re in a state of denial.

  21. Dave Neary Says:

    As a matter of policy I moderate all anonymous comments. If you’re not prepared to stand behind what you say, I’m not going to publish it.

    I make an exception for this comment, so that you are aware of the policy (then again, with a fake email address, you may never get to see it).

    I also reserve the right not to publish comments I consider abusive. I can be pretty lax about what I consider abusive – if memory serves, your comment was on the borderline of what I accept.

    Dave.

  22. Stephan T. Says:

    To Matt Zimmerman (Post #17)

    Mat, I don’t want to offend you but you re-discover/invent the wheel.

    System vs. application programmers exist since the first computer was built. System guys made it work, applications folks used it to compute things too hard to do by humans.

    To Dave:

    Linux today consists in zillions of lines of code. Who would, gladly be willing to study all that mess. And, assuming you have the god will to do it – what is the added value for yourself? Answer these questions and you’ll find why there are only old “elephants” doing it. They have, already the knowledge and the fame – so they keep doing it and in one way they tend to close it to the outsiders (this is human). Only look how the Linux API interface changes from version to version. If you are not paid to work with it you should be masochistic to be willing to make an hobby of it.

    Now consider a newcomer, an hobbyist or whatever. It is much more rewarding for him to write an application on top of an OS than to start to thinker with the OS itself. OS is already done – application can bring you the immediate satisfaction of an self-made artifact – and even fame if you looking for that.

    Read Linus book. He describes how hard he worked to write a rudimentary scheduler which was running two tasks printing “A” and “B”s. This was the most intense and rewarding moment for him in the whole Linux history. Could you get this kind of experience by doing Linux kernel development today? I do not think so.

    It is why I’d rather be writing iPhone applications or uC infinite loops controlling temperature sensors and blinking LEDs. I get much more excitement than writing dumb lines for Linux kernel.

    Cheers,
    Stephan.