If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.

A Guide To Becoming An Ubuntu Developer

01-28-2011, 01:40 AM

Phoronix: A Guide To Becoming An Ubuntu Developer

For those interested in potentially becoming an Ubuntu developer, Emmet Hikory has written a brief guide about that very topic. Some feel that it can be challenging to become an Ubuntu developer, but in a long mailing list post he goes over all the details...

What Ubuntu really really needs to attract developers is: API. I don't mean "stable API", it can be changed every release but "some defined API, *any* API". Each successfull platform (Android, iOS, OSX, Windows) has one. OK, I don't want API like Win32, that sucks, but any other from that list looks good enough. That would enable existance of "clean Ubuntu Apps ecosystem". Ubuntushould define:

2) You can use any other language as long as it has wrapper around our primary API and doesn't go around our API to lower levels of OS (say, kernel) in order to get "Clean Ubuntu App (tm)" label in our repository.

3) Current desktop for Ubuntu is Y (Unity?) so you must use that and not KDE, Swing, .... Therefore, Unity API is part of Ubuntu API.

4) Ubuntu API should have complete refference manual of what you need to write destop application, coverying everything from multimedia to 3D, to GUI, to USB, to I/O, to GPS, to Network, to panel apps/notification windows etc.

5) There should be Eclipse plugin for deveopement of Ubuntu apps with possibility to easily build and publish apps with usage of complete Ubuntu API and witout need of any library downloading/configuration etc... unless you use some 3rd party libs.

6) Any HTML5 application (like gmail) should be considered valid Ubuntu app automatically.

Obviously, some current applications coudn't enter "Clean Ubuntu App" repository without major rewrite (K3B, OpenOffice), but thats not major problem, they would still be available and they would still work. Also, changing API each 6 months would require developers to target specific release and do little changes every 6 months, but thats better then current state, me think. Game distribution would be _possible_.

Comment

What Ubuntu really really needs to attract developers is: API. I don't mean "stable API", it can be changed every release but "some defined API, *any* API". Each successfull platform (Android, iOS, OSX, Windows) has one. OK, I don't want API like Win32, that sucks, but any other from that list looks good enough. That would enable existance of "clean Ubuntu Apps ecosystem". Ubuntushould define:

2) You can use any other language as long as it has wrapper around our primary API and doesn't go around our API to lower levels of OS (say, kernel) in order to get "Clean Ubuntu App (tm)" label in our repository.

3) Current desktop for Ubuntu is Y (Unity?) so you must use that and not KDE, Swing, .... Therefore, Unity API is part of Ubuntu API.

4) Ubuntu API should have complete refference manual of what you need to write destop application, coverying everything from multimedia to 3D, to GUI, to USB, to I/O, to GPS, to Network, to panel apps/notification windows etc.

5) There should be Eclipse plugin for deveopement of Ubuntu apps with possibility to easily build and publish apps with usage of complete Ubuntu API and witout need of any library downloading/configuration etc... unless you use some 3rd party libs.

6) Any HTML5 application (like gmail) should be considered valid Ubuntu app automatically.

Obviously, some current applications coudn't enter "Clean Ubuntu App" repository without major rewrite (K3B, OpenOffice), but thats not major problem, they would still be available and they would still work. Also, changing API each 6 months would require developers to target specific release and do little changes every 6 months, but thats better then current state, me think. Game distribution would be _possible_.

I have to disagree with this one... If Ubuntu were to start defining their own API for "Ubuntu Apps", we'd very quickly run into the situation where people would be writing applications that would work on Ubuntu, but nowhere else.

Yes, it would be ok if Ubuntu recommended using C++, GTK+ 3.0, OpenAL, and other specific libraries for a consistent look and feel, but defining their own specific API/libraries would quickly result in Ubuntu-only applications, and it would seriously piss off the other distributions/BSDs/etc.

Comment

What Ubuntu really really needs to attract developers is: API. I don't mean "stable API", it can be changed every release but "some defined API, *any* API". Each successfull platform (Android, iOS, OSX, Windows) has one. OK, I don't want API like Win32, that sucks, but any other from that list looks good enough. That would enable existance of "clean Ubuntu Apps ecosystem". Ubuntushould define:

2) You can use any other language as long as it has wrapper around our primary API and doesn't go around our API to lower levels of OS (say, kernel) in order to get "Clean Ubuntu App (tm)" label in our repository.

3) Current desktop for Ubuntu is Y (Unity?) so you must use that and not KDE, Swing, .... Therefore, Unity API is part of Ubuntu API.

4) Ubuntu API should have complete refference manual of what you need to write destop application, coverying everything from multimedia to 3D, to GUI, to USB, to I/O, to GPS, to Network, to panel apps/notification windows etc.

5) There should be Eclipse plugin for deveopement of Ubuntu apps with possibility to easily build and publish apps with usage of complete Ubuntu API and witout need of any library downloading/configuration etc... unless you use some 3rd party libs.

6) Any HTML5 application (like gmail) should be considered valid Ubuntu app automatically.

Obviously, some current applications coudn't enter "Clean Ubuntu App" repository without major rewrite (K3B, OpenOffice), but thats not major problem, they would still be available and they would still work. Also, changing API each 6 months would require developers to target specific release and do little changes every 6 months, but thats better then current state, me think. Game distribution would be _possible_.

You sound like a developer for Haiku, you might like it over there if you aren't already over there.

BTW I agree 100%, but breaking the api version to version seems silly unless your going to have a longer version history, better to extend a api vrs break one. Lets you keep backwards compatability without stiffling forward design, as things become unused just deprecate them.

Comment

I have to disagree with this one... If Ubuntu were to start defining their own API for "Ubuntu Apps", we'd very quickly run into the situation where people would be writing applications that would work on Ubuntu, but nowhere else.

Yes, it would be ok if Ubuntu recommended using C++, GTK+ 3.0, OpenAL, and other specific libraries for a consistent look and feel, but defining their own specific API/libraries would quickly result in Ubuntu-only applications, and it would seriously piss off the other distributions/BSDs/etc.

So ??? at least they would work properly and drivers would become more dependable.Not only that but c++ is pretty portable. what he is proposing is exactly what makes osx and windows so successful.

You can't bitch about standards and then not have any.

Comment

Current proposition of Ubuntu for desktop developer is this: First learn C/C++ (well, OK) Autotools and M4 language (???) and bunch of APIs for unrelated libraries without clear distinctiion what is ?official? and ?supported? (sound, desktop panel, video, net, ?) . If this is step one, there is really nowhere you can go. Ten years earlier, only choice was Win32, which is closed source, so even Autotools looked acceptable in comparison. Now, young developers have multiple alternatives (Android, iPhone, OSX, Java, .NET) and all those have full APIs, default stable and usable IDE and complete unified documentation.

Note: I am discussing only Ubuntu here mostly because I don't think other distros are even on average developer's radar of possible target platforms.

Comment

First, imvho mizra is absolutely right in his first post ("Ubuntu API"), and i'm afraid that he might also be right in his second post in this thread ("State of The Ubuntu").

I should point out for the record that there is an official page about the ubuntu api, namely:http://developer.ubuntu.com/resources/platform/api/
However, when you actually visit that page, you discover that there's no api to be found there. It's almost as if they don't really know what an api is.

Now, Thatguy makes a good point about Haiku. And there are a lot of good things about Haiku. But, afaik, it still is lacking some very important features, such as (simultaneous) multi-user support, and i'm not sure there's a functioning emacs for it. And the linux kernel is probably the best possible foundation layer just due to the huge amount of scrutiny and debugging it has been through. So ubuntu really has some strong points that are not there yet with Haiku. Too bad that having an api is not one of them. (Similar remarks for Syllable --- they're right about the need for an api, but still lacking many things, including lots of modern hardware support.)

Regarding Veerappan's remarks --- it is true that if ubuntu actually had an api, then apps developed for ubuntu might not run on other distros (at least until they adopted the api).

But this is an engineering question, and every engineering decision there are trade-offs involved.

We would be trading portability for ease-of-development and application quality.

So i would welcome an ubuntu api very much (or, an api for any linux distro, for that matter).