Toronto Hackfest

22. March 2011

Tomorrow will be the last day of the Toronto Documentation Hackfest so I would like to summarize what happened to the developer documentation:

developer.gnome.org

A bunch of tutorial-style demos (online preview) have been added to the gnome-devel-docs though I would wish there were even more. If your favourite programming language is missing demos it would be great if you could add them following the style of the existing demos. P. F. Chimento did a great review of these demos. Thanks!

Germán worked on updating the platform overview and I guess he will blog about the results himself. The website that is currently shown as image on developer.gnome.org should be mostly in a good state though some links need to be checked and I hope the marketing-team will review it once the awesome F?ederic Peters gets around setting up an instance for testing somewhere.

Help on setting up the development environment

Furthermore I created a bunch of wiki pages explaining how to install a decent development environment for GNOME 3. It currently contains information on Ubuntu and Fedora that has to be tested and I would love to see people adding more distributions.

Those installation instructions are linked from developer.gnome.org and the demos itself so we should take care that they always work and install the versions required.

Related to that, Michael Terry from Ubuntu made sure that the gnome3 ppa will have new version of Anjuta, Glade and Devhelp so that people can follow the tutorials and have an easy start on GNOME 3 Development. Thanks a bunch!

Anjuta Help

The Anjuta manual is quite outdated so I stubbed out a new task-based help for it. Unfortunately I won’t have time to fill that with content but it would be great if people would fill this with live. It is really easy with the mallard format and the help of the GNOME Documentation Team.

These and that

Of course, there are plenty of things discussed in a hackfest between the lines like Ubuntu/GNOME relations and GNOME3 in general. As we have people from all side involved it is always amazing how sane everybody is about all this and how few practical problems exist despite all this flame-war.

We switched to the hotel today as the internet connection at the university broke down (they apparently fixed that already…):

For people closely following the development of Anjuta that feature is actually quite old as I presented it on GUADEC but it didn’t get included until the upcomming 3.0 release.

Thanks to GtkBuilder signal autoconnection you actually don’t need to care about manually connecting signal anymore but can defer that job to glade. And as glade is integrated pretty much into Anjuta you also don’t have to care about creating correct prototypes for the signal handlers as you can just drag them into your code:

Before:


After:

This does not only work for for C but also for Vala and Python. It is actually even clever enough to detect if the handler is already present and to add the handler to the header file if the header file is open.

Documentation Hackfest

Apart from that I am sitting at the documentation hackfest in Toronto fixing up the developer demos we started in Berlin and fighting with various programming languages and bugs.

Gnome 3.0 UI – fail!

13. March 2011

Actually I didn’t mean to blog about that issue because I felt discussing things in bug reports is more useful but today it was just too much annoyance. Comments are disable anyway.

In GNOME 3.0 there is no obvious UI how to shutdown your system. All that is available is “Suspend” and “Log out”. “Shutdown” is only available when you hold the “Alt” (or “Meta”) key down which isn’t an obvious user interaction. If you log off there is a chance that you find that you can shutdown within the gdm screen but people using auto-login aren’t very familiar with that screen I guess.

So far, I kind of understood that the designer think that for many devices the power-down button actually put them in a kind of standby-mode, like TVs. That is actually true for the buttons on the remote controls, not for the buttons on the device itself.

However, I assumed that pressing the “Power” button on my laptop would actually show me the power off dialog but instead it suspends the system. This is wrong in two ways:

* Power is the button to switch on/off any device. It switches off my mobile phone, my TV and the even dish washer.
* There is a suspend button on this notebook so this is duplicating and misleading

Of course, I might be less annoyed if suspend (or more precisely wake-up) would actually work

(This is rather long, non-technical and doesn’t have any bling, so feel free to skip it.)

This is my personal analysis of the desktop market and an approach to change it.

Successful Linux Stories

When looking into Linux success stories in the past years it is evident that those are mostly not happening on the Desktop but in other spaces:

  • Android
  • WebOS
  • Servers

Linux has been a successful server operating system with (depending on statistics) 40-80% market share or years now. This is were the good old Linux companies (Red Hat, Novell/SuSE) gain most of their profit. The other two Linux based operating systems are targeted on end-users instead and are shipped together with mobile devices. While Android is created by Google and used by a wide range of device manufacturers, WebOS is exclusively used by Palm. Both are for the most part not free software.

Success stories for Linux on the Desktop are rather rare with few companies and some governments actively pushing it sometimes. The market share is marginal and stagnated mostly over the past years.

Microsoft and Apple

The same theme as with Android and WebOS can actually be seen in the non-Linux world. On the one side there is Microsoft which is (mostly) a software company and sells its operating system to OEMs and on the other side Apple which is exclusively using their operating system(s) on their own hardware. Obviously both works for different companies in different market segments.

The key difference is that Microsoft profits from being the industry standard for desktop computer operating systems and it is very hard for a computer manufacturer to ignore that. This is not god-given of course, but Microsoft is very clever to lock people into their ecosystem with a very good (probably besides usual glitches the best) office suite and good software development tools, including Visual Studio and .NET). MS Office is probably even more important in a operating system decision than the operating system itself. Needless to say that a lot of specialed, in-house and other software is exclusively available on MS Windows.

Apple started from a rather small niche of creating computers for designers and media production to extend its market share to the market of lifestyle-oriented customers. It profited in some cases a lot from being able to design products from the ground with extraordinary hardware and user-friendly software. The in-house and specialized software market is still closed to Apple as the market share is too small but they more than compensated this with innovative devices that aren’t seen as traditional computers.

Are you going to buy a desktop?

The free software world offers solutions for most problems an average user might ever face. But it seems to fail to actually deliver their solution to the end-user. One of the reasons is rather simple: There is no product. Nobody want to buy a desktop, people want to buy a computer, actually they would even like to buy a solution to their problem. But apart from some alternative offers it is nearly impossible to buy a computer with GNOME preinstalled and if you can buy one it is normally not any cheaper than to buy the same hardware with a proprietary operating system and installing GNOME yourself. In addition it is mostly like buying a computer + GNOME but not like buying a carefully assembled product.

So, in conclusion, GNOME offers something that only geeks demand.

Of course GNOME isn’t actually a project aiming for end-users but something that should be integrated by distributions. But even if you replace all occurrences of GNOME in the previous paragraph with “Distribution XY” it remains mostly true.

GNOME OS and the Ubuntu Vision

The term GNOME OS was brought up by Jon McCann at GUADEC ’10 as an idea to bring the different components of a Linux system closer together and remove the barrier between “system” and “desktop” to create a seamless experience. This is certainly needed as a first step to create some kind of product that has unique point of sale but hardly enough to succeed.

In a similar fashion Ubuntu was the first distribution to actively target user-experience and simplicity. While I often disagree with their particular design decisions they still brought Linux on the Desktop to a different and better level. But overall they weren’t able to increase the whole market share of the Linux Desktop significantly.

One of the reasons (if not: the reason) for it is that there is still no way to reach out to the end-user. Even Ubuntu’s program with Dell is hardly visible if you not look for it closely and it is definitely not available at the electronic market round the corner.

Start creating a product: Control the hardware

A big part of the common complains about Linux are basically: “I doesn’t work on my hardware!” And this is actually something the end-user doesn’t need to care about at all for all other platforms, operating systems or products he uses. Ever found somebody complaining that Android is not working on this phone? Ever needed to switch your keyboard layout on a preinstalled Windows machine? No, the keys work as printed on the keyboard. I am sure everybody could add a hundred more examples.

Controlling the hardware has a lot of other advantages of course because you can build a complete user experience. Think of an “Overview”-Button for GNOME Shell or “Add workspace”-Button. Creativity is the key here but I am pretty sure there are enough smart people out there that can create a computer that is all but ordinary featuring free software.

Selling a product also has the advantage that you can make some unpopular but probably convenient decisions for the end-user. Nobody prevents you from shipping necessary codecs or proprietary browser plugins when you can pay license fees for an individually sold item for example. Don’t get me wrong, I don’t encourage you to use that technologies but I am not living in a perfect world and a user-friendly product might mean to allow the user to play DVDs for example. (Ubuntu gets some of this right, btw)

Nevertheless creating and marketing a product like this is definitely not an easy tasks. Still I wonder why it hasn’t been done before. Companies like litl got some things started and I am pretty sure that it is possible to go further. With all the discussions about privacy and security there more reasons for bringing Linux to the Desktop than ever before.

$1.000.000 for the startup, anyone 😉

So, the hackfest is over but I hope you are interested in the results. You should already have read some rumours on Planet GNOME.

Planing phase

Before we actually started to write documentation or improve our tools we clearly needed to define our goals and our target audience. The target audience broke down to various types of developers:

  • Students/Hobbyist
  • Freelancers
  • Companies (products and in-house development)
  • Web developers
  • Teachers

All of those have different motivation and goals but we concluded that we can still fit most of these with the same documentation. Teachers were a really interesting side-discussion as it would be great if GNOME development would be tought in schools and universities but we didn’t know how to dive deeper into that topic.

The other difficult thing was to define which are the components of the GNOME Development Platform. This belongs a bit to the GNOME OS discussion and was clearly something we couldn’t solve in that room but we ended up mostly copying from the release-team proposal here, making some additions.

Central starting point for GNOME Development Platform

Daniel pointed out that here and there people asked him where they can find information about getting started on the GNOME Platform and he couldn’t really point them somewhere.

In the discussion we looked into various development sites (Apple, Django, Microsoft, etc.) to see how they solve that problem. We concluded that such a page is about 50% marketing and 50% information. It has to serve mainly two purposes:

  • Attract people to GNOME development
  • Convince managers that GNOME is the way to go

As there is no better place than developer.gnome.org we put it there. What you see there is no mock-up but an actual screenshot of the site on Fréderics local webserver. The site itself is mostly finished in a joint work between Phil (html mockup), me (Javascript for carousel and search), Andreas (awesome design) and Fréderic (ugly technical details…). It depends on some other stuff in the gnome.org redesign process and some final polishing to really go online and it the information targets GNOME 3 only. It is available in the web-devel-2 module.

10-minute-tutorials

  • Fun to follow while teaching limited subsets of the platform
  • Show various interesting and useful technologies (no “Hello World”)
  • Complete them in your (extended) lunch-break

We wrote five different tutorials at the hackfest and tested them with our GTK+ newbies. In the end, all those tutorials should be available in the five major programming languages (C, C++, Python, Vala, Javascript). If you have other interesting ideas to show off in about 100 lines of code or want to convert one example to your programming language, please contact the documentation team.

As we didn’t want to annoy people with build system issues we decided to use anjuta for the tutorials. Once Shaun adds expandable notes to mallard we might extend the tutorials with some notes how to do the same on the command-line. The tutorials live in the gnome-devel-docs module. Please note that they haven’t been fully reviewed, yet.

There is also draft documentation for installting the required packages to start GNOME development. Please complete this for your favourite distribution as there are only stubs except for Fedora by now.

Problems we couldn’t solve (yet?)

Best pratices: We really also need some more in-deep guides for application development. That should cover basic things (like 5 things every GNOME developer should know) to more in-deep things (explaining the GObject-framework, desktop integration, etc.)

Deployment: This is a non-trivial thing on Linux/etc. as there is no AppStore and also no ecosystem like Windows where you just ship installers. We don’t have an ultimate solution here so what we though about was writing an Anjuta plugin interacting with the OpenSuSE build service to build packages for the popular distributions, while auto-generated debian/ or .spec-files at least for the case where the package contains a single application. Some people pointed out that having a build service instance on GNOME infrastructure for the applications moduleset would be great.

Up-to-date versions of tools: Neither Fedora nor Ubuntu ship the current version of Anjuta which really needs to be fixed. The Fedora guys seem to take the bug report serious though and Phil promised to talk to the Ubuntu people so this will hopefully be solved soon. OpenSuSE is the shiny example to do the right thing here by shipping 2.32.1.

Glade: It’s completly broken for the moment and this is really a show-stopper for 3.0. I hope we will be able to fix that but that really needs people with a lot of knowledge on gtk+. Hopefully Tristan will be able to donate some time on this and others will help him.

Other stuff that happend

  • Frederic put a lot of work into library.gnome.org
  • Phil converted the HIG draft to mallard
  • Andre (who actually just happend to be around…) started to convert the evolution docs to mallard
  • Konstantin just happend to ring on Sunday morning because he read about the hackfest on Planet Ubuntu and was instantly recruited by the documentation team. It’s nice to see random interesting people showing up!

I hope everybody had four fun and productive days in Berlin and that things will continue to improve. Thanks again to Openismus and especially Kat for the fantastic hosting and the GNOME Foundation for making this happen. Thanks to everybody who attended. Just remember that people don’t mind having 22-hour flights just to attend a four day hackfest – that’s amazing commitment!

Hackfest Update

4. December 2010

Day 1

We ended up doing a lot of planing of how to organize things and ran into quite some discussion. One of the surprisingly difficult points was to define what the “GNOME Platform” is. In the end we came up with this (and a lot more):

  • Create a central entry point for developer documentation
  • Add a platform overview
  • Write 10-minute-tutorials for the most important libraries with interesting examples. Of course we won’t be able to create all of them (especially not in out five target languages: C, C++, Python, Vala, Javascript) but we try to come up with some that can be extended over time.

Day 2

Today (well, yesterday) we finally started to get things done. Phil and Andreas worked on creating the platform overview page and templates for the 10-minute-tutorials. Most of the others started to write cool small applications in different languages show-casing our platform and make tutorials out of what they wrote.

After lunch, Shaun gave a very nice introduction to mallard and André decided to port the evolution docs to mallard, but he didn’t finish it (yet).

The worked quite nice for C and Vala but Jon and Jonh ran into many introspection issues and Jon got really annoyed by trying PyGI with cairo but he is making progress now.

In the meantime, Fréderic worked on secret improvements for library.gnome.org but I will leave it to him to present those.

Some impressions:


After we had a great dinner (thanks Openismus) with most people already there yesterday, the hackfest will officially starting today. Everything is well prepared except that weather which is super cold here in Berlin.

Our beloved interface designer used in about any non-trivial GNOME development isn’t really in a good shape for 3.0 currently:

  • Doesn’t build against 3.0 libraries
  • Doesn’t include all the fancy new GTK+ widgets: GtkComboBoxText and friends

Even worse that really few people are working on it, most important Tristan, but he is busy making GTK+ awesome and so has little time to fix things up. And in addition, glade is one of those many applications that aren’t trivial to port to GTK+ 3.0 because they use a lot of API that has been deprecated while not having an obvious replacement.

While taking about all the bad things there is some light on the horizon. I created the offscreen-gtk3 which can be build against the latest GTK+ stack. It even starts up and you can see windows, unfortunately though you cannot see any widgets because the offscreen rendering is broken. Offscreen rendering is needed as glade cannot any longer embed GtkWindows directly as GTK+ expects windows to have no toplevel and GTK_WIDGET_SET_FLAGS to hack around this is gone. The basic idea is to render everything to an offscreen window and then embed it inside the glade window. In the past hours I played a bit with this but couldn’t figure out how to make it work.

So, this is your turn: For experienced GDK/GTK+/Cairo hackers it shouldn’t be too difficult to make this working. If you have an idea that works, just commit it to that branch. When we have a half-way working glade I am pretty sure it will be possible to add the remaining widgets and make a rocking release for 3.0!

If you wonder, there already is a discussion on this bug report.

Today, I got the long awaited approval mail from the board for the hackfest (well, for the travel sponsership for people attending). This means the hackfest will take place as planned from

December 2nd to December 5th 2010

This also means this is your last change to think about attending! All the people listed in the wiki should have received additional information about the next steps. If not or if you have any questions, please contact me!