A few months ago the Apple Store accumulated more than 500,000
approved applications available for download. This is a very
remarkable fact for a relatively new platform using somewhat obscure
technologies. It is, also, a very profitable situation for Apple.
It is a bit besides the point of this post whether a platform is
popular because it has half a million applications or whether it has
half a million applications because it’s popular; the truth is likely
that popularity and a lot of applications go hand in hand in a
self-reinforcing loop. That being said, the fact remains that any
platform that aims to be relevant needs to both convince developers to
create applications for it and to provide them with the means to do
so. If you start with an eye-popping, years ahead of its competition,
money-making miracle thing like the iPhone you might end up convincing
large amounts of people to target your platform specifically, but
usually having a great platform won’t be enough to do so. Think of
WebOS.
The question for us is, then: how are we going to get from where we
stand today to a vibrant constellation of applications centered around
the GNOME platform? Is there a path from today to 500,000 GNOME
applications in the future?
Developing GNOME and for GNOME.
The way things have worked so far is that we expect people to develop
for GNOME in a similar way to what in which we develop its core
applications. This is not only natural, but also has some great
qualities like making us dogfood our own development processes. It has
also some disadvantages, like expecting (perhaps unreasonably) all
developers to appreciate the perhaps too hacker-like tools we use and
routines we follow. Maybe not everyone wants to use the shell, emacs
and git from the command line? Perhaps we can jump without problems
from C or JavaScript to Vala (the 3 languages currently used in the
core module set), although I have my doubts, but surely offering 5
different language alternatives in developer.gnome.org, with tutorials and API documentation, without really telling newcomers which one is recommended, encouraged or best supported might be too much for most people?
To the extent that our core development practices are reflected in our
third party developer story we need to keep our house in order. Being
able to use any language to target GNOME might be a strength, but the
fact that we cannot decide which language we want users to learn first
might perhaps just be the result of our internal confusion. The core
libraries are still overwhelmingly written in C, but all the new
generation applications and UI modules are being written in higher
level languages (finally?!). Which ones? Well, guess it
depends. Some use JavaScript, some use Vala, others might come in the
future, and it seems that the winner mostly depends on the tastes of
the module owners. Surely not all languages would be tacitly accepted
(sawfish was dropped, among other reasons, because it was written in a
dialect of Lisp), but I can see the situation getting worse before it
gets better.
Even if we sort out the language issue there would be further barriers
for new developers. Our platform has been massively cleaned up in
recent times, but the road to GNOME 3 has created new ambiguities: a
parallel, mostly internal, toolkit built on top of Clutter is used by
the Shell or Sushi, and if certain animations or effects are desired
in GTK+ projects the only choice seems to mix and match a bit of the
old and the new in the same application. Efforts are underway to unify
things, but again it’s not complicated to see how someone new to
the whole thing might be confused.
I could go on mentioning communication channels, tools, etc, but I
think the point has been made: as far as we expect people to develop
native GNOME applications in a way similar to how we work we need to
spend energy in clarifying our internal procedures, documenting them
and publishing easy to follow and simplified instructions for third
party developers. Otherwise GNOME will likely be perceived as a
platform that is difficult to develop for, best suited for expert
hackers, with few quality applications and not much appeal for the
mainstream. This would have been a reasonable conclusion some years
ago, and has been a repeated call to arms in the past. While I think
it still makes sense to do this, I believe we live in a time that
offers us new strategies that we can combine with this one, perhaps
better suited to our current capabilities and resources.
The Web.
The Web is winning. This horse has been beaten to death, so I won’t
dwell on the details at this point, but web technologies are here to
stay and are only becoming more and more important each day. Those who
repeatedly announce the imminent failure of the web as an application
development platform on the basis that it, well, sucks (and it kinda
does) miss two important points: first, the web is winning not because
it’s a beautiful platform, but because of its reach. Second,
whatever its flaws, the web platform has so much momentum and energy
put into it that it’s quickly overcoming most of the defects that it
had at some point, and things will only improve. Do you want an idea
of how big this is getting? Windows 8 applications will be built
using HTML and JavaScript. You don’t get more mainstream than that.
A new array of solutions designed to build web applications (packaged,
delivered to the user, run locally) is being created as we speak. From
Tizen’s endorsed WAC, to Mozilla’s OpenWebApps, to Chrome’s
Applications the list keeps growing in expansionary fashion, but
all the specs share the same father: a thin layer on top of HTML5, CSS
and JavaScript, bridging the gap between the W3C standard’s and the
needs of the apps. As the standards grow, those platforms will shrink,
and it is likely that in good time a reasonably standardized solution
will emerge.
Why is this relevant for GNOME? Never mind iOS, never mind Android,
one thing is clear: most of the next million apps written will be web
applications. Some huge players like Microsoft are already moving
there as fast as they can, and the rest will follow sooner or
later. Native apps won’t go anywhere for a long time, but developers
willing to maximize their reach will, increasingly, prefer web
applications over anything else. At least as their first choice. This
brings us a great opportunity. If we jump on this bandwagon, support
web applications as first class citizens on top of world-class
runtimes, and accept and even encourage people to run their web
apps on our operating system we can maximize our reach with a
fraction of the effort of fighting in the native SDK war against Apple
and Google. I think being smart in how we spend our scarce resources
is important, and I believe this is a fight that we can win if we put
our minds to it: let’s not forget our own platform, but let’s embrace
the web as it is emerging.
Most of this was shared with those present at this year’s GNOME Boston
Summit (in Montreal), and although there was a lively debate my
impression is that most of it was well received by the core hackers
present. We at Igalia believe that this is a promising way forward for
GNOME and we happen to have the skills necessary to make it happen, so
we are committed to keep investing in the foundational platform bits
like WebKit and to bring Web Application support to our OS: our plan
for the next months is to explore all the new technologies I have
mentioned, and start to implement a well integrated runtime to run the
next generation of web goodness at home.
Fuck the web, fuck it in its soft rotting eye socket.
[WORDPRESS HASHCASH] The poster sent us ‘0 which is not a hashcash value.
I’m one of this Developer who want to write GNOME Apps. But i have a big problem if i get stuck in using the Framework. There is nobody, who can be asked. I go everyday in IRC and ask my question. And nobody gives me an hint or nudge me in the right direction. Then i tried the mailing list – no answer. Its the feeling that im alone in my quest. Thats dumb…
[WORDPRESS HASHCASH] The poster sent us ‘0 which is not a hashcash value.
I couldn’t agree more!, when I was thinking about writing a smartphone app in my spare-time I began looking at android apis and I quickly concluded that the learning curve was too steep just for a spare-time project.. until I found phonegap which let me re-use my web developer experience to write such app in no time.
So GNOME could do something like that to attract webdevelopers into the GNOME platform..
[WORDPRESS HASHCASH] The poster sent us ‘0 which is not a hashcash value.
Couldn’t agree more. Rock on! =)
[WORDPRESS HASHCASH] The poster sent us ‘0 which is not a hashcash value.
When the iPhone was first released it lacked a SDK so the alternative was web apps. Well, what happened is that people started using some web apps, but as soon as a native SDK arrived, native applications blew web apps out of the atmosphere. The quality and user experience of great native applications is a winning factor for a platform, otherwise stuff like ChromeOS would be a success, yet it isn’t. What we need in GNOME is a much better set of developer tools, a much better user interfaces toolkit (so that we -also- have an amazing set of core applications) and a flagship manufacturer that ships beautiful hardware products running GNOME.
Regarding WebOS, I think the product had huge potential, it had something magical about it that’s not in Android and other competing platforms to iOS.
[WORDPRESS HASHCASH] The poster sent us ‘0 which is not a hashcash value.
if anything, the iDevices have been greatly successful doing exactly the opposite: bringing the cool back to the desktop, giving new life to it.
even popular websites are going desktop-app (think Facebook) on the tablet.
why, then, focus on the web platform?
ease of developing comes not only from high level programming languages, but mostly from good tools, powerful API and good documentation.
[WORDPRESS HASHCASH] The poster sent us ‘0 which is not a hashcash value.
Apple has so many apps because developing for Apple is — aside from dealing with iOS App Store policies — a delightful experience, and because you can make a lot of money by doing so.
Ubuntu’s new developer outreach program seems to be emphasizing both points, with a streamlined process for learning to write and then getting your apps in its store.
Looking at GNOME, I’m not sure what to write in, or how to get it in front of people. There are a tiny handful of GNOME apps listed on gnome.org, but no explanation of how to get yours there. And the add/remove programs feature in (for instance) Fedora is a mess, that’s only there for people who can’t use the CLI.
The GNOME platform has a lot to offer developers. It doesn’t have a compelling answer to either of Apple and Ubuntu’s advantages for developers, though, which is why it is being bypassed in favor of them and of web apps.
[WORDPRESS HASHCASH] The poster sent us ‘0 which is not a hashcash value.
Well meaning thoughts…
But please – give us an IDE and the developers will come, no matter which language, API’s and whatnot. Anjuta is very promising, but very unstable and insufficient.
Please!
[WORDPRESS HASHCASH] The poster sent us ‘0 which is not a hashcash value.
“Windows 8 applications will be built
using HTML and JavaScript. You don’t get more mainstream than that… . Most of the next million apps written will be web applications. Some huge players like Microsoft are already moving there as fast as they can, and the rest will follow sooner or later.”
Actually Microsoft are fragmenting their development approaches for Windows 8 with their new Metro platform, rather than continuing to major on dotNET and their CLR languages. Because of developer demand they are returning to C++ (the windows equivalent of GNOME’s C) and also adding Javascript support to their new COM-based windows runtime, supposedly as equal citizens with their CLR languages (C# and basic).
Microsoft see a significant future for web/html5/javascript applications but contrary to your vision, they are most certainly not betting the farm on it.
As I see it, the main problems with developing for GNOME 3 are two fold: first, the poor documentation. gnome shell extensions have now been available for some 8 months but no attempt has been made to provide documentation for them or for the toolkit they use. This makes them inaccessible for new developers.
Secondly, the “bundle of parts” approach makes it unclear what it is that new developers should be targetting. For example, as well as GTK+ and clutter being used, there are two different clutter based UI libraries used – mx and gnome-shell’s shell toolkit. Even more bizarrely, there is a dependency on two different html/web engines – mozilla’s spidermonkey/xul (for gnome-shell and gjs) and KDE/Apple’s webkit (for a number of other GNOME applications). We also of course have both the seed and gjs javascript introspection bindings for the glib/gtk/gnome stack.
[WORDPRESS HASHCASH] The poster sent us ‘0 which is not a hashcash value.
The platform you support is largely irrelevant, as long as it has the three big “pillars” to support it: tools, documentation and process. The successful ecosystems have all of these in abundance. GNOME doesn’t.
[WORDPRESS HASHCASH] The poster sent us ‘0 which is not a hashcash value.
The HTML5/Win8 remark is just wrong. Win8 applications will be build on top of WinRT. WinRT is accessible (among other things) via HTML + JavaScript. But it’s also accessible from C++ and C#.
See http://www.i-programmer.info/news/126-os/3055-winrt-the-new-windows.html
[WORDPRESS HASHCASH] The poster sent us ‘0 which is not a hashcash value.
@jpo: I don’t really agree that the remark is “just wrong” when I simply said they’ll be implemented using HTML5/JS (in fact that will be the *recommended* way). Whether the runtime is done on top of WinRT or not does not seem to be very important for this debate.
[WORDPRESS HASHCASH] The poster sent us ‘0 which is not a hashcash value.
So it’s time you start pushing seedkit a bit more 🙂
[WORDPRESS HASHCASH] The poster sent us ‘0 which is not a hashcash value.
@xan: I don’t really agree that the remark is “just wrong” when I simply said they’ll be implemented using HTML5/JS (in fact that will be the *recommended* way)
Javascript/html5 is not “the” recommended way. It is “a” recommended way (together with C++ and C#/VB).
[WORDPRESS HASHCASH] The poster sent us ‘0 which is not a hashcash value.
@xan: I’m sorry if I sounded harsh. It’s just that I have heard the “Win8 will require all programs to be written in HTML5” theme so often that I’m somewhat allergic on this topic. I seriously doubt that the majority of Metro-Apps will be written in this way. Most of them will be written by current Windows programmers who are at home in .Net and won’t switch without a very good reason.
[WORDPRESS HASHCASH] The poster sent us ‘0 which is not a hashcash value.
Strangely that you didn’t mentioned GTK+3 websockets/broadway backend, which allows GTK+ apps to be run on server. I think this is serious killer if deployment, usage, etc. are documented fully and people who are writing applications in-house is given full support.
[WORDPRESS HASHCASH] The poster sent us ‘0 which is not a hashcash value.
I wanted to use Gnome Epiphany for a browser, but it lacked speeddial, so I looked for information about developing or converting an extension….
Developer Docs, Tutorials?
[WORDPRESS HASHCASH] The poster sent us ‘0 which is not a hashcash value.
I’m looking for contributors. 🙂
http://code.google.com/p/owe/
Current pass rate of ~85% of the widget interface spec.
Cheers,
[WORDPRESS HASHCASH] The poster sent us ‘0 which is not a hashcash value.
totally agree!! that’s way
[WORDPRESS HASHCASH] The poster sent us ‘0 which is not a hashcash value.
You’re thinking the right way. The future tookit involves HTML, CSS, & JavaScript; the question is how the resulting code gets to the user.
@jan, @jv are right that Apple and Android encourage native apps. That’s what successful commercial platforms will do to achieve lock-in, but it’s not to the benefit of users.
Every computer user in the world currently suffers an uneasy split between stuff that works in a browser and stuff that doesn’t. No one has really figured out what to do about that split: does the browser grow to encompass functionality like local file management and access to connected hardware, or does the desktop become more browser-like, do apps become fluid things that can run in a browser or drag to your start screen, etc. I hope Gnome can participate in all of the experiments (BrowserLinux, Boot2Gecko, ChromiumOS-alikes, WebApps, W3C widgets, app tabs, etc.); as you say, “support web applications as first class citizens on top of world-class runtimes”
On desktops and notebooks my non-tech friends do 80% of their work and play in a browser. They also know how to fire up a handful of desktop apps (MS Office & Outlook for old people, games & a music player for younger), and dimly realize the hell of forgotten updaters and setup.exes and mismanaged files randomly strewn all over their hard drive that the 20% is creating. They’d probably benefit from a Linux distro as its package manager addresses the update issue, especially if it had great file management and integrates perfectly with the browser. But once browser alternatives to their desktop apps that can work disconnected become available, they’d *all* be better off with something like Chrome OS.
[WORDPRESS HASHCASH] The poster sent us ‘0 which is not a hashcash value.
Pingback: Freie Freude » Blog Archive » First ideas for a better GNOME browser - Design, Free SW and related topics
Pingback: Announcing the WebKitGTK+ hackfest 2011 « Here we are