Ubuntu Developer Manual Encourages User Contribution
In the open-source world, attracting new users to your product is hard enough. The ultimate challenge, however, is enticing third-party developers to build on top of your platform. Recognizing this fact, the team behind Ubuntu is preparing a “Developer Manual” to encourage contributions. Here’s a look at the endeavor so far.
In the project’s own (randomly capitalized) words, the Ubuntu Developer Manual is a “complete Manual for Writing Applications for Ubuntu, featuring comprehensive guides, howTos and information on anything you need to know after first installing Ubuntu.”
And in case that description sounds a little ambiguous, notes from the Maverick Ubuntu Developer Summit last May published on the manual’s wiki page offer a more specific outline of the team’s vision. They explain that contributors hope to produce a real, readable book — available in several languages — filled with example-based instructions for developing desktop applications on Ubuntu.
The project’s progress so far can be tracked on its Launchpad page, where it is being maintained like actual code. The initiative clearly remains a work in progress, but it has received several significant contributions recently.
Turning Users Into Developers?
The manual is being promoted as a tool for programmers interested in building applications on Ubuntu, and is slated (according to the UDS Natty notes) to become a major component of http://developer.ubuntu.com. What struck me most when reading through the actual content however, was not its value as a resource for seasoned developers as much as for simple Ubuntu users with no programming experience who want to make the jump to the coding world.
After all, most of the material currently marked for inclusion in the book is relatively basic, with a beginner’s introduction to Python constituting one of the core chapters. Most experienced programmers, I suspect, are by now already familiar enough with Python to not need such instructions. People new to programming, on the other hand, are the ones who would benefit.
To say that the project might serve the interests of novice coders more than elite hackers is not to dismiss its value. On the contrary, this could be an excellent way for Canonical to turn casual Ubuntu users into contributors, building excitement for the operating system while expanding the stack of applications available for it.
Free-software advocates like to argue that the open-source development model is superior to its proprietary counterpart because in the open-source world, everyone can make code better. And critics generally respond that such a notion would be true only if all open-source users were also competent programmers, which is not the case. Tools like the Ubuntu Developer Manual, however, would help to narrow this gap separating users from contributors.
Of course, not everyone is cut out to be a programmer, and even if they were, publishing a book containing a basic introduction to coding in Python would not guarantee that all Ubuntu users would choose to contribute. Eric Raymond’s utopian vision of a world where every user is a programmer, and every programmer a user, will never be more than a fantasy.
But by taking practical steps to lower the barrier for making technical contributions to Ubuntu, Ubuntu developers can build a more dedicated user base, and maybe just get some useful coding help along the way. I’ll look forward to the Ubuntu Developer Manual’s completion to see how this vision pans out.
Sign up for The VAR Guy’s Weekly Newsletter, Webcasts and Resource Center. Follow The VAR Guy via RSS, Facebook and Twitter. Follow experts at VARtweet. Read The VAR Guy’s editorial disclosures here.
I am not anti-Ubuntu whatsoever, but I believe it makes more sense for developers to contribute directly to the Debian Project, a popular base distro. This assures that their work will flow “downstream” to all the derived distros, such as Ubuntu, Mint and Mepis (and soon, gNewSense). And Mint has two upstream branches now, Ubuntu and Debian unstable.
An example of developing strictly for Ubuntu is Ubuntu’s guest session, which rocks. The guest session is an easy way to allow another individual to use ones Ubuntu PC without mucking anything up. Alternatively, it provides a great sandbox for activities like opening suspect email/attachments, online shopping and online banking as it gets created from scratch each time it is started and is destroyed when finished (one has to log out). Thus, no worry of possible JavaScript-based browser hooking from ones regular non-root account.
While the guest session has flowed downstream to Mint, it is not present in Debian stable, testing or unstable. Had the guest session been started in Debian, it would be available to all downstream distros.
Just my 2c. 🙂
I absolutely see your point. However, developing specifically for Ubuntu, makes it easier to get started. You know what tools are available, which versions of those tools are used, and many other things about your environment in general. This is _really_ important to new developers. I know, because I used to be one. It was tiresome, difficult and boring to start developing, because there were so many choices and too many potential starting points, I never got started… I believe that’s what they call analysis paralysis.
Quickly makes this alot easier and a good Developer Manual will certainly make developing on Ubuntu much more fun for new developers. Using Glade and Python for developing desktop applications, using a good IDE and Bazaar coupled with Launchpad.net, I really haven’t had so much fun developing since QB and VB6.
Certainly, nothing about Quickly or the developer manual will lock the developer to Ubuntu and all the tools, languages and principles will be just as useful on any other distro. And I don’t necessarily agree that all contributions should go to Debian as there is differences in focus between the projects. Also, I believe that Ubuntu needs and wants to, enable people to write proprietary software as well. This is a good thing, even if we might wish for all people to write free software.
Within Debian, there is a bright line between free and non-free software. And it will be brighter yet with the release of Debian 6.0, when all non-free components have been removed from the Linux kernel. However, Debian does provide a supported non-free repository. And there is also an unsupported (by the Debian Project) multimedia repository.
On Debian, I run Oracle’s 10g Database Express, SQL Developer and proprietary JDK. So, I am not anti-proprietary.
But, I get your meaning. Ubuntu is a bit less concerned with this bright line than is the Debian Project. Choice is indeed a good thing.
Cheers
Jo-Erlend Schinstad: interesting point about analysis paralysis. Besides a few scripts I’ve written to help with my research, I’m not really a developer myself and hadn’t thought about the difficulty of just getting started on a platform where there are too many choices. But I agree that one of Ubuntu’s strong suits is its willingness to set certain standards and stick with them, rather than leaving it up to users and developers to decide for themselves. It seems to me that a lot of other distributions shy away from setting hard policies on things like this because they don’t want to be accused of restricting “freedom,” etc.
Rabid Howler Monkey: right, and I think we can expect to see that bright line continuing to blur within Ubuntu as it cultivates a more commercial development environment.
Also, regarding your first comment, it makes sense. But I get the impression, from the Manual’s contents, that it’s intended more for the benefit of third-party developers wanting to build new, standalone applications for use on Ubuntu, than for people hoping to make contributions to Ubuntu itself. On the other hand, I suppose they co do both. But if they create new applications based on Glade and Python, they don’t have to be tied to Ubuntu in particular and could easily be distributed through different channels to other distributions.
Rabid Howler Monkey,
I get your point. I too promote sending the applications upstream so that they can maintained properly at one place and all other derivative distros can take advantage.
Secondly there is nothing such as an Ubuntu application. You can say that those apps might be using AppMenu, notify-osd, desktopcouch etc for their use which is more widespread used in Ubuntu land than in other distros. Don’t forget that these technologies are open source and can be packaged in other distros too. desktopcouch is now in debian and so are lot more applications like USC.
If you cannot run an application because it has a dependency which is not packaged in your distro, you need to contact your distro packagers.