hackergotchi

treitter

Let's Push Things Forward

Maximizing social utility for fun and (modest) profit


Previous Entry 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.

I agree with the anonymous poster above

(Anonymous)

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

Yeah, Travis, let me read your mind for a second: "you will think, these guys are just the typical trolls; if you care, you should have come to the hackfest..."

And I understand that. I understand also what you explain in the beginning of your post: there has to be "a language", to avoid confusion for newcomers. There has to be consensus inside so much diversity. I agree.

But the decision you made I think has been the worst of the ones that you could have possibly had done. Seriously, if I were to choose such a crappy language, I would have come around again to the initial question and said: ok, maybe instead of choosing one language between hundreds of languages, why not choose 2? It would still mean focusing more, 2 is much less than the number of languages/platforms that are out there (around the Gnome ecosystem).

And then if you do that, you could choose a 2nd language that overcomes the disadvantages of the 1st selection: poor OO paradigm, dynamically typed, garbage-collected (runtime required)... How about if the 2nd is Vala?

Just my 2cents as always.
Thanks for spending your time improving the ecosystem in the hackfest, guys.

Re: I agree with the anonymous poster above

treitter

2013-02-02 06:08 pm (UTC)

Yeah, Travis, let me read your mind for a second: "you will think, these guys are just the typical trolls; if you care, you should have come to the hackfest..."

Some of the responses are clearly trolling, and there's no excuse for that. We all understand not everyone will be happy with this choice but we agreed that it would be better in the long term for us to improve one language to the point that development is as smooth as possible.

And I certainly don't blame anyone for not making it to the hackfest. Not everyone can make it, it was intended to be a limited-size, focused event, etc. We welcome constructive feedback on the desktop devel list.

But the decision you made I think has been the worst of the ones that you could have possibly had done.

Sorry, we disagree (after carefully considering the options).

And then if you do that, you could choose a 2nd language that overcomes the disadvantages of the 1st selection: poor OO paradigm, dynamically typed, garbage-collected (runtime required)... How about if the 2nd is Vala?


I really like Vala as a language. And if you like it, please go ahead and keep using it. But we think that JavaScript is a better fit in the long-run and will get much more buy-in (especially in terms of attracting more developers not already in our community).

Two languages to recommend is certainly better than the full set we have now, but I think it's significantly harder to give a clear answer when there's any variation in the message, and it'd still require twice as much work in documentation, tools, etc. The benefit for 1 language over 2 is much higher than 2 over 3.

Re: I agree with the anonymous poster above

(Anonymous)

2013-02-02 06:40 pm (UTC)

> to improve one language to the point that development
> is as smooth as possible

The amount of improvement required to bring the GJS bindings up to the level of Python support is just ridiculous.

The amount of improvement to have an ecosystem of commercial quality javascript libraries to compare with the python ecosystem is equally ridiculous.

I can't believe this decision was made.

My speculation is the primary reasons that JavaScript was chosen c.f. python/other is

* shiny (i.e. moustached brogrammer community)
* gnome-shell extension community
* embeddability (especially as it relates to some future app distribution model)

Re: I agree with the anonymous poster above

treitter

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

My speculation is the primary reasons that JavaScript was chosen c.f. python/other is

You're right. That's speculation and not what happened.

We spent two days with experts in the top several most-popular GNOME programming languages before reaching our conclusion (based entirely on technical and process merits).

It's disingenuous (at best) for you to claim that we chose JavaScript because it's "shiny". I personally would have done all I could to prevent a choice on that criterion (but it honestly never came up).

Edited at 2013-02-03 02:26 pm (UTC)

Re: I agree with the anonymous poster above

(Anonymous)

2013-02-04 12:21 pm (UTC)

We consider the reasons given

> Our language of choice needs to be dynamic and high level.

sure.

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

shiny

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

Well the work is going into the engines, all N of them, yay.

What does embeddable have to do with GNOME (my point 3). What does framework agnostic even mean here. This whole GNOME chosen language is very framework gnostic (GNOME).

> 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.

shiny

> 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.

My point 3.


Re: I agree with the anonymous poster above

(Anonymous)

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

In summary, JavaScript is the trendy new hotness. Totally fad-tastic!

(That's fine, but just be honest about it and don't act like it's a well considered opinion.)

Re: I agree with the anonymous poster above

treitter

2013-02-05 01:01 am (UTC)

JavaScript isn't a passing fad. It's been here a long time, it's widely-used, and thus won't be gone any time soon. All important things when choosing a language to promote for the future of our ecosystem.

Re: I agree with the anonymous poster above

treitter

2013-02-05 12:57 am (UTC)

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

shiny

No, "shiny" is "we're going to use this language because it has some neat new (unproven) technology"

Developer buy-in for a language is absolutely one of its most important features because it determines how much collective effort will be put into further development of the language, its supporting tools, etc.

> 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.

shiny

Again, developer buy-in drives a lot of what makes a language useful.

Re: I agree with the anonymous poster above

(Anonymous)

2013-02-05 09:54 pm (UTC)

Developer buy-in for a language is absolutely one of its most important features
Pretty much all the developers I know don't like javascript and just have to deal with it because of web development. I'm like many here, I really don't understand the choice...

Re: I agree with the anonymous poster above

(Anonymous)

2013-02-05 01:02 am (UTC)

I've been reading in a lot of places that the Gnome devs arrogantly think they know what's best and forge ahead without regard for the community. Treiter, every single thing you've said so far, and the way you've said it, has only confirmed in my mind that the Gnome core devs are exactly a bunch of arrogant, mustachioed hipster, fad-chasing, brogrammers.

I considered Gnome 3 a pretty serious error. Now... Gnome is dead to me.

Re: I agree with the anonymous poster above

ext_1629969

2013-02-02 09:06 pm (UTC)

Hi Travis,

Thanks for taking the heat on this decision. As Travis said, you can still develop against whatever language GNOME has bindings for.

I think what people are concerned about is the fact that one language could lag behind others. A situation we already have today. So if you do decide to use another language there is a risk that important updates will not propagate to the language they are using. There should be some assurance that developers who do use something other than javascript will be able to see timely updates on the bindings of the language of their choice.

Strategically, of course there are a lot of Javascript apps on there mostly in the embedded world. The next question, given the strategic decision to use javascript, what will project do to attract these developers for the long term? For instance, let's say we want to approach Rovio to port Angry Birds to GNOME.. What would be the strategies involved?

My questions aren't meant to be hostile. But rather I'm interested in whether your decision also takes into account of the need for a wider plan to attract developers and users to the platform. Meaning this decision you're making is part of an overall plan in doing that.

See, I have to take this decision and figure out how I'm going to market it to other developers and users. I expect gjs to get better very quickly, I expect documentation to also get better very quickly. I think that is already part of the plan given your update.

Anyways, thanks! I know people get emotional about these things. But it will only cloud judgement. Javascript is perfectly fine, but we will need to fix gjs's shortcomings, and provide excellent documentation to do attract people. WIthout it, we won't be going anywhere.

Re: I agree with the anonymous poster above

treitter

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

Strategically, of course there are a lot of Javascript apps on there mostly in the embedded world. The next question, given the strategic decision to use javascript, what will project do to attract these developers for the long term? For instance, let's say we want to approach Rovio to port Angry Birds to GNOME.. What would be the strategies involved

We didn't get to that point yet, but I think once we're happy with the state of our app development offerings, we'll push hard to get more people using it.

It's also important to note that JavaScript on other mobile platforms and JavaScript on the web (with another set of support libraries) is not the same as JavaScript + GObject. A fundamental difference is the stack below JavaScript (GNOME's or someone else's), but a near-term issue is different "dialects" of JavaScript. That last point should improve quite a bit once ECMAScript 6 is finalized in the next year or so.

So it's not necessarily compelling to port existing JavaScript apps, already written on another stack, today. It may be once we're farther along in our process, and I'm sure we'll encourage app developers once we think we're ready (or earlier, for adventurous types).

I expect gjs to get better very quickly, I expect documentation to also get better very quickly. I think that is already part of the plan given your update.

Yes, we considered documentation in our discussion; it certainly needs to improve for JS and it will be a high priority. Similar for the interpreter and developer tools.

Thanks for your questions!

Edited at 2013-02-03 02:41 pm (UTC)

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