hackergotchi

treitter

Let's Push Things Forward

Maximizing social utility for fun and (modest) profit


Previous Entry Add to Memories Share Next Entry
hackergotchi
treitter

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.

Re: I agree with the anonymous poster above

(Anonymous)

2013-02-02 10:11 pm (UTC)

"We all understand not everyone will be happy"

But do you understand "why"? Actually, does it matter to you guys or you just dismiss it as "unavoidable"?

Re: I agree with the anonymous poster above

ext_1629969

2013-02-03 12:35 am (UTC)

Let me turn the question around, do you understand why the decision was made? Also, you're not really losing anything, you can still write apps in whatever language you want. A lot of this stuff is still using gobject-introspection to generate the bindings.

I would like to understand what you feel was wrong about this situation?

Re: I agree with the anonymous poster above

(Anonymous)

2013-02-03 09:09 am (UTC)

The reasons exposed in this post are poor, I'm not blaming Travis (in fact, thanks for sharing!). Obviously I can be wrong and prioritizing Javascript can be a brilliant idea.

What I'm saying is that if Gnome people know this decision is going to make lots of people unhappy, may be they should invest resources in make the point clear and convince unhappy people that they are wrong.

To be honest, I think we're going to lose. For example: there's no Python documentation for building apps in Gnome. Check:


is very deficient and unsuitable to attract developers.

Focusing in Javascript means nobody is interested any more in improving that.

I'm not a Vala fan. I'm not a C# fan (Mono). I know that some people are against Python because app startup times, because it's too versatile and it's too easy "not doing things in the Gnome way", but having two languages in a very good start position... I can't help think Javascript was the worst decision.

Re: I agree with the anonymous poster above

treitter

2013-02-03 02:50 pm (UTC)

What I'm saying is that if Gnome people know this decision is going to make lots of people unhappy, may be they should invest resources in make the point clear and convince unhappy people that they are wrong.

I hope I've made the various points clear and others at the hackfest and others who agree with us can elaborate even further. But there's no way to convince everyone that they're "wrong". The best we can do is explain ourselves, do the work we plan, and show the benefits of our conclusions over time.

Focusing in Javascript means nobody is interested any more in improving [Python documentaton].

We absolutely welcome people working on the Python documentation to keep doing what they're doing and we'll happily continue to incorporate it.

But, in a way, having people not work on that is a side goal -- if we want to maximize the efficiency of our platform developers, we'll want them to focus their time on our primary development stack (C and its docs/tools for libraries, JavaScript and its docs/tools for applications). Focusing time on our primarily-supported stack necessarily means spending less time on our secondary ecosystem.

But that's incidental. Nothing about our choice to improve JavaScript support prevents anyone from spending as much time on, eg, Python, as they do now.

Re: I agree with the anonymous poster above

(Anonymous)

2013-02-03 04:58 pm (UTC)

Thanks for you reply and for explaining your point of view. Although we don't agree, I really appreciate your effort.

Re: I agree with the anonymous poster above

(Anonymous)

2013-02-04 11:48 pm (UTC)

"What I'm saying is that if Gnome people know this decision is going to make lots of people unhappy..."

I think they are already used to making people unhappy ;)

You are viewing treitter