Let's Push Things Forward

Maximizing social utility for fun and (modest) profit

Previous Entry Share Next Entry

Answering the question: "How do I develop an app for GNOME?"

During the GNOME Developer Experience Hackfest this week, one of the major goals we identified was the need to pick a single language to give a simple answer to "how do I write a GNOME app?".

Right now, if you ask that question, you'll get about 8 different personal-preference answers, which drives people away from our platform. Having to potentially evaluate several different languages and their stacks gives potential developers a lot of unneeded extra work.

There was broad consensus in the hackfest for this goal because it allows us to:
  • It allows us to focus when we write developer documentation, fixing bugs in the development environment and the development of tools. This reduces our maintanence costs and enables us to be vastly more efficient.

  • It enables code and knowledge sharing to occur, so that people can easily copy and paste code from existing applications, or find information about common problems and challenges.

  • It provide a coherent and easy-to-follow path for new developers.

  • It allows us to include the full GNOME framework within the language itself.

We spent a long time discussing the different options that are available to us, and there were a variety of opinions. However, at the end of the day, we had to recognize that no language is perfect and there will always be disagreement. The important thing was that we had to make a decision.

It's critical that everyone understands this decision as a plan to elevate the language, bindings, tools, and documentation to a level of quality we have not yet achieved. It is not a decision to abandon any other language bindings. We will continue to distribute other bindings and documentation as we do now and compatibility for the other languages will continue to be developed as they are today by the developers involved with those modules.

Our decision is to support JavaScript as the first class language for GNOME application development. This means:
  • We will continue to write documentation for other languages, but we will also prioritize JavaScript when deciding what to work on.

  • We will encourage new applications be written in JavaScript.

  • We will be working to optimize the developer workflow around JavaScript.

C will remain the recommended language for system libraries.

Why JavaScript?
  • Our language of choice needs to be dynamic and high level.

  • There is already momentum in the GNOME Project for JavaScript -- it's used in GNOME Shell and GNOME Documents.

  • There's a lot of work going into the language to make it especially fast, embeddable, and framework-agnostic.

  • JavaScript is increasingly being seen as a first class desktop programming language -- it us being used in Windows 8, mobile platforms, and for local web applications.

  • JavaScript is self-contained -- it doesn't come with its own set of core libraries, which makes it more convenient for us when integrating it into the platform.

This is the start of a process and there's obviously a lot of work ahead of us. However, prioritizing a single language will enable us to turn GNOME into a compelling platform for application developers in a much more effective and efficient manner.

  • 1
I personally agree with those who think that your reasoning and therefore decision to concentrate on JavaScript is flawed. In same time I mean no disrespect and I can't say thank you enough for your work on development side of GNOME. I suspect that main argument for your decision is because new comers simply don't know Python or Vala and therefore they quickly turn away. However, my question is this - do we really are interested in such people who can't even Google for these languages? Python has tons of excellent small step intro examples around the web. Vala also has nice documentation. Do we really need to try to fishing in such shallow waters to get ball rolling?

I have tried to help several such new comers to GNOME/Gtk+ during last year and I have encountered several other problems, who aren't related with popularity programming language brands at all. For example, GObject Introspection - while moving fast forward, there's still lots of things which don't work, or don't work properly. Also another "popular" platform/language like .Net/C# - it's bindings for newest GNOME/Gtk+ libraries are seem to be lacking, and Gstreamer 1.0 support is absent. Does anyone know can C# have proper GI support, is it even possible? (Not a rethorical one, really want to know :)).

Of course, this is not biggie - everyone who wants to see to have Python or Vala equal footing can vote with his code/edits/patches. However, I still don't fully buy this. But decision is decision.

I suspect that main argument for your decision is because new comers simply don't know Python or Vala and therefore they quickly turn away.

This point came up a few times in our discussion. New developers not knowing the language already wouldn't, in itself, wouldn't disqualify a language. After all, they're still going to need to learn the GObject system and the libraries built on it. And Objective C being only used around Mac and iOS development didn't stop the iOS app store from exploding in popularity. Not to mention plenty of people (including a significant chunk of our developer community) are already familiar with Python.

But there's a big difference between "new developers don't know our language (but we have all the tools and docs they need inside and we have a huge pool of people already familiar with it)" and "new developers don't know our language (and we have limited tools and only a small number of people within our community are already familiar with it)"

  • 1

Log in