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 strongly disagree with the decision

(Sorry to be posting this anonymously...)

I strongly disagree with the decision. Just to give you some feedback based on my personal background (so maybe you could see why I'm a gnome user but not a gnome developer): I am a long time (amateur) developer. I've developed with GTK+, Gtkmm, Cocoa, some Windows stuff that I've forgotten, mostly C++, some experimenting with the D programming language and python, and some Java courses.

I've never developed with Vala, C#, JavaScript, or Go, but I've looked at each of them. I've never even done a whole app in python, just some Blender scripts.

I'm a long time Gnome user. I used KDE at first, somewhere around the year 2000, but I was unhappy with its design. I tested almost all of the alternatives too, but always came back to Gnome (even if it was not perfect!)
When Unity came, I found it to be awfully designed (and buggy). But... I really liked Gnome 3 (or Gnome Shell). It had its bugs, but it was greatly designed. I still have to tweak it (three round ubuntu style close etc. buttons on the LEFT side of the window header), but it is almost as good as Mac OS X! ;) And in some ways it is better.

But the Gnome developer story has never appealed to me. I didn't like C. I liked C++, but Gnome had so much better design than KDE, that as a user I chose Gnome.

Anyway, I'll probably keep on using C++, but I think Gnome should go with either Python or Vala. JavaScript has such a bad reputation, even though Gnome shell is great. And I think that a reputation in programming languages is usually a very good metric on deciding what is good and what is not.

There's a lot of experience with Python on Gnome, and I associate it as the semi-official language of Gnome. (And hey, Blender uses it!) I would never touch it myself, but it should be the language of Gnome.

Re: I strongly disagree with the decision

While i agree with you totally (except i prefer C over C++), python or vala would be a better choice.

BUT ... i think they intent to publicit javascript for new comers ... the old developpers already know gnome's corners so they can use what ever they like (c, c++, python, vala, java, C#). To make it easier for new developpers they will improve javascript documentation and tools, so that new developers can adapt easilly to the gnome platform (not only gnome, but mostly glib, gonject, gtk+, and so on). The reason to use javascript is because it is widely spread now, with so much web development.

Later, even the new developers will be bored with javascript and use other binding,

Re: I strongly disagree with the decision

JavaScript has such a bad reputation

Not entirely a justified one. Much of that reputation comes from a) poor implementation and misuse going back 10-15 years, and b) major cross-platform compatibility issues between browsers. Neither of those things applies to desktop use.

I'd also note that while Javascript might be the standard here, the platform would also be usable by CoffeeScript and any of a number of other languages that 'compile' to Javascript. I'm not a fan of that kind of thing myself, but I know some people doing server-side development on Node are very fond of it...

Re: I strongly disagree with the decision

Ok, I posted that long anonymous rant about strongly disagreeing with the decision,

but now that I've slept on it... and done some more research about JavaScript, I've changed my mind and I think it is probably an "okayish" decision.

JavaScript seems to be quite fast (depending on the implementation of course), and that's a good enough reason to win me over. And as someone pointed out, the bad reputation doesn't necessarily apply to desktop, as there'll be only one engine running the code (in Gnome), and that engine will be the one used in development.

I hope you make a great (small and efficient) IDE or something like that to make development truly fast. Geany might be a good start...

And as I already said, I really really love Gnome shell (which I believe uses JavaScript), and so it seems that it can be used to create fast enough UI code.

Maybe its just me, but maybe JavaScript really needs a name change! (I believe it used to be called ECMAScript or something like that, before weirdly branded with the Java thing, but ECMAscript doesn't really cut it neither.)

Re: I strongly disagree with the decision

"Maybe its just me, but maybe JavaScript really needs a name change!"

Used to be LiveScript. Then it got submitted to the European Computer Manufacturers Association for certification as ECMAScript. If you want to know more about it, watch Douglas Crockford from Yahoo! talk about it, he's very entertaining as a geek.

  • 1

Log in