Ubuntu Developer Network:
Rationale and Plan
Jon Reagan
May 18, 2009
A computer operating system is useless without programs, and programs will not be built without developers. It is rather obvious that developers are critical to a system's survival. Suddenly, the need to further grow and educate the developer community around Ubuntu becomes all the more important; the very purpose of the Ubuntu Developer Network.
Introduction
The Ubuntu Developer Network was an idea that I came up with several weeks before the writing of this plan. I was trying to figure out how to package a piece of existing software for the Ubuntu system, so I went to the packaging guide on the Ubuntu wiki. To my surprise, I found the wiki pages to be in disarray, leading from one page to another, and sometimes even back again to the page I was trying to move beyond. Finding the right information became difficult, and for a beginning programmer, it was rather frustrating. This is when I began to think about how the process could be made easier.
I began to investigate by looking at the various developer resources available on the internet. One of the things that I saw is that developer networks were prominent, and fulfilled dual needs, one of which is almost completely missing from the Ubuntu community. These two needs were the following:
- Developing software ON the system -- This is what I have seen missing from the Ubuntu community. We may have guides on packaging software for Ubuntu, but information on actually developing software on Ubuntu is rather limited.
- Developing software FOR the system -- The MOTU/REVU process is designed to fill this role, and the associated guides on the wiki are what I found to be confusing. The information was well written, just not well organized.
As strange as it may seem, Microsoft has set a good example when it
comes to a developer network. I was able, once I downloaded the right
software, to develop a simple web browser in five minutes. Before I go
any further, let me be clear: I DO NOT WANT TO FOLLOW. Following,
copying, or mimicking another system or developer network never works.
I know what the Ubuntu community is capable of (a lot more than
Microsoft!). The purpose behind the Microsoft example is to showcase
the flow and quality of the guides. I was freed from the question of where to go next, and I was able to develop a piece of software and build it to work on Windows with relative ease. This kind of organization is desparately needed
by the Ubuntu community.
I believe Ubuntu needs a place where developers can get all the resources they need, from programming tools, to different tracks on how to develop in different languages, and how to package their applications for the Ubuntu system. The Ubuntu Developer Network (UDN) could also be so much more than that...
The Plan The first question that might be asked is "Where will it be hosted?" There are a couple of options. Something universal here is that the main UDN home page will be placed at a sub-domain of the main Ubuntu site, with a URL along the lines of "udn.ubuntu.com" or "developers.ubuntu.com." Then, it will either be a tree of pages extending from the main UDN page on Canonical's backend of choice, or a main UDN page which will include links back to wiki pages. It is really a decision for those at Canonical and not myself.
As I mentioned earlier, the UDN can be something that pulls together all kinds of resources for developers. There are many different services and functions that can be preformed. I will go into detail here about the basic build of the site, and how the services will be used.
I feel it necessary to cover the most important aspects first, the actual nitty-gritty of the UDN. I'm talking about the developer tracks, the core and purpose of the UDN. Developer tracks are separate courses that aid in teaching a developer a particular skill. Take for example, a Python path:
A new developer comes to the Ubuntu Developer Network looking to learn about Python programming on Ubuntu. When greeted with the main site, the developer clicks on the "Python" link, which takes him to the next page, which includes information on Python, which version is included in Ubuntu, and perhaps even that the Ubuntu project accepts works written in Python. There is a prominent section on the page, to the right of the basic information, which includes a list of different tracks: "Programming in Python," "GTK programming in Python," and "Packaging a Python Application for Ubuntu."
The developer, new to Python and Ubuntu will click on "Programming in Python." After clicking the link, a new page will open which lists some information on what will be covered, the prerequisites for following the guide, and a basic table of contents. Also, Python resources will be shown from free tutorials on the internet to a book recommendation, such as "Learning Python" to accompany the tutorial. Then once all the right software is downloaded, the developer will click "Continue" on the bottom of the page, and will begin the Python course, which will teach him or her how to develop Python applications using the tools found on Ubuntu. You will note that I have stated "Python resources will be shown." This idea has been in debate in my mind. Would I rather have a full tutorial about Python programming, or one that just shows how to use the tools found in Ubuntu to write programs? My opinion is that the programming resources should be made available, but perhaps as links, such as "Click here to learn the Python programming language." A book recommendation is also a good option. I have been lead to this conclusion simply because keeping the work minimal on the part of Ubuntu volunteers is important. If we link to already existing quality resources, then there is no reason to duplicate the already existing information. What would be nice, however, is a visual guide (screenshots) that show how to use the various tools in Ubuntu. In this case, it would be the IDLE application. I would include more, but would be nervous about confusing new programmers with overly complex software, such as the good although feature-laden Eclipse. I believe sticking to one application would be best, but that decision can always be made at a later time.
While programming guides can be found elsewhere on the internet, packaging an application on Ubuntu would require more work. Pulling information from the wiki, or just linking back to the wiki itself would be necessary. It would also be helpful, for the visual learners out there, to have screenshots accompanying the instructions.
That is only the beginning in terms of what the Ubuntu Developer Network could be used for. Remember the new developer that wanted to learn Python? What will happen if he or she runs into a problem that they need help with? That is where the developer forums come into play. The developer forums would still be hosted on the Ubuntu Forums of course, but the developer forums will hopefully see a little more traffic with the help of a link from the UDN. Perhaps even the "Ask a question" feature on Launchpad could be used. A developer's IRC channel would also need to be created, if it does not exist already.
The UDN could also include information on the latest release, bugs, and even host the Ubuntu Developer News, the equivalent of the Ubuntu Weekly News, which started a few months ago. There is also a video channel on YouTube called the Ubuntu Developer's channel that could be embedded into the site.
There are a lot of possiblities with the UDN, and I hope that through this document I was able to give everyone a much more clear idea of what I was planning. Everything here is up for discussion, and I am open to changing anything. I know there are others in the community who are far more creative than I. I firmly believe the UDN will make the Ubuntu community more complete, and will also help bring more development to the Linux platform.
What the Community Has to Say
I had originally placed this idea on the Ubuntu Brainstorm site, where it has quickly gathered support. Here is the community reaction to such an idea:
- 98% positive response
- 400+ votes from the community
- many views and comments on my blog
"I'm 100000000000000000000000000000% with you , ubuntu developers must
have a network to connect them together. It is a very important that
must be applied by Ubuntu." - delphiexile
Those are just a few of the reactions from people in the community. There is obviously demand for such a service. I hope you, the reader, will seriously consider this idea. I have written about why I think it will help the Ubuntu community, what I think it can do, and how it might be done. I personally have time to work on such a project, and will be glad to help out in any way I can.