GNOME 3 and beyond

5. May 2011

Actually I am been pretty busy writing my diploma thesis so after the Toronto hackfest there wasn’t much activity from my side regarding GNOME. However, as I finally unsubscribed from gnome-shell-list it’s time to write something about my personal experience with GNOME 3 and the feedback that was mentioned on the list.

Personally, I use GNOME 3 on my Desktop and Netbook for some weeks now, both with Fedora 15 Alpha/Beta. It took me some minutes to get used to the concept and reorganize my workflow a bit but overall the experience was quite good. I especially like the way multiple monitors work, so I can always have empathy with IRC and chat on my secondary monitor. This is particularly useful as I definitely use much more work-spaces now than before to organize my tasks. There are still some rough edges, especially when it comes to all the “Finding and Reminding” stuff and the chat integration. Actually, I really don’t want to have both empathy and the shell displaying my chat messages and I don’t want to have the “Contact List” around all the time. But luckily some discussion started on desktop-devel-list to improve the situation. The point annoying me most is that I always have to press Alt/Meta key to switch off my computer as I have connected it to a plugbar to save the energy consumed in standby normally by the computer and the monitors and my secondary monitor doesn’t go into sleep mode when connected via HDMI. Another reason for not using standby is that I cannot sleep when the blinking “Standby-LED” of my desktop is lighting the room. I want a “Power Off” menu item – Period!

Besides my personal experience I followed gnome-shell-list for quite a while until the signal-to-noise-ratio became much too low. I would really like to have some kind of gnome-shell-devel-list that just summarizes all the technical discussion that only seems to happen on IRC currently as IRC is hard to follow normally. Anyway, I want to summarize some of the more interesting feedback:

  • Window title bars seems to be too big for many netbook users and are seen as a waste of space. Allan has a blog post explaining the reasoning behind this though but it might not be ideal for small screens. I know that I reduced the font size on my netbook to have more space.
  • Merge title bar of maximized windows into the top panel. This goes in the same direction as the first one and seems to be useful for smaller screens especially as the top panel is quite empty usually in GNOME 3.
  • Dont’ hide stuff in “System Info: Actually this control-center panel groups a lot of stuff like “Favourite Applications”, “Fallback mode” and (guessed?) “System information”. Seems this is poorly labeled and people are actually not finding what they want to change. Things should be grouped differently here.
  • Persistent notifications are difficult for external developers that are used to the old-style notification system. That probably would be that bad if it would be easier to reach developers by mail as it is quite hard for external people to ask on IRC (in the right time-zone). As mentioned before, it would be important to have developers read & answer at least the technical posts on gnome-shell-list which doesn’t seem to happen. (See this thread).

The rest was a lot of noise in the style “I don’t like it”, “Fedora vs. Ubuntu”, “GNOME vs. Unity vs. KDE”, “But *I* want a task bar“, “I still don’t like it”, etc.

Together with the release of GNOME 3 the new GNOME developer center was launched today. This is just the first step to make GNOME 3 a great developer platform but I hope it is already a big step!

There is still a bunch of things missing, like proper API documentation for languages using introspection (Javascript, Python) but things got a lot better with the new platform overview and will certainly improve in the future.

I have to especially thank Fréderic Peters who did all the dirty backend work on the infrastructure in the last days & weeks so everything could be launched on time.

However, this wouldn’t have been possible without many amazing people (in no particular order):  Andreas Nilson, Julie Pichon, Phil Bull, Shaun McCance, Daniel g. Siegel, Patricia Santana Cruz, Ekaterina Gerasimova, David King, Jon Nordby, Chris Kühl, Jonh Wendell, Andre Klapper, Germán Poo and P. F. Chimento, hoping I didn’t forget anyone.  And of course the beautiful cities of Berlin and Toronto!

Thanks!

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

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:


Small Anjuta feature update

24. November 2010

After we have bothered a lot in the past months to build everything against the GNOME 3.0 stuff and fixing lots of bugs it is time to introduce a tiny new feature:

Compiler errors shown as tooltips of the editor marker

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!

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!