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!

GtkNotebook action widgets

9. November 2009

Remember the good old days when bug nummers started with 1xxxxx? Well, now we have one bug less in this area, GtkNotebook finally supports widgets in the tabs area:

GtkNotebook with action widgets

GtkNotebook with action widgets

(Note that the buttons here are just examples and this was done mainly for testing purposes).

Why could this be useful:

  • Firefox-style “Add tab”-buttons
  • Saving space when dealing with notebooks that have a constant (and low) page number
  • probably much more

There is nothing in the HIG yet of course and you should use it with care. I hope it’s useful though.

Credits go to Carlos Garnacho for the original patch and to Mathias Clasen for reviewing my patch and adding GtkBuilder support. Also thanks to Openismus for letting me finish this!

Glom on maemo fremantle

5. September 2009

Glom now bascially starts up on maemo fremantle which means that gtkmm, libgda, libgdamm and pygda are working together now on the maemo platform. Of course lots of bug-fixing and UI work left to make this really cool.

Screenshot:glom-shot

As Murray already mentioned we updated the Clutter Tutorial over the last weeks for the upcomming Clutter 0.9/1.0 release. Clutter 0.9 makes some hacks obsolete that were necessary to archieve some functionality in the past so we could concentrate more on straight-forward ways this time.

The tutorial features some new sections:

  • The new GtkClutterViewport widget allows scrolling of GtkClutterEmbed widgets and is decribed in the new Stage Widget Scrolling section.
  • Some notes were added for using Timeline markers.
  • ClutterAnimation has replaced the obsolete ClutterEffects API and thus ended up in the new Animations section. This section also explains how to use ClutterAlpha properly.
  • The biggest new API is probably the new ClutterText widgets that allows use-cases from a simple label over a single-line entry to a full-featured multi-line text input box.

Unfortunately some links to the API documentation are not working yet because the clutter-gtk API documentation for 0.9 is not yet available online. The tutorial is also available as pdf.

Development of the tutorial happens in the clutter-tutorial module on GNOME git.

Yesterday, I started to implement Murray‘s/Mathias‘ idea to add the ability in GTK+ to add a widget beside the tabs of a notebook. This makes of course only sense in application where only a few notebook pages are used usually and there is a lot of space left in the tab area. But of course it will also allow to add little combo boxes in this area like Mozilla Firefox, to give the user some additional features for the notebook navigation.

gtknotebook

The basic code is now in place and it is less complicated then I expected. Anyway, there is still some stuff to do:

  • Position of the widget (like GTK_PACK_START/END)
  • whether the widget should take the whole space available (GTK_EXPAND)

The API is pretty simple up to now and only consists of gtk_notebook_set_tab_widget (). Patch coming soon to your nearby bugzilla.

Since viewing log files can be some kind of annoying when you are only interested in a special problem I wrote a patch to filter/highlight specific sections of a logfile with gnome-system-log. A screenshot says more than thousand words:

Screenshot of gnome-system-log highlighting all gdm messages

Screenshot of gnome-system-log highlighting all gdm messages

The filters are based on regular expressions and should thus be quite flexible. The work was done (and paid) by Openismus Gmbh!

Dear lazyweb

25. February 2009

Has anybody experienced with gtk+ an idea about this bug?

Thanks!

P.S.: Hello Planet Openismus! And yes, I am working on this hackergotchi thing…

libgdamm 3.99.0 released

11. November 2008

After working the last couple of weeks for Openismus on updating libgdamm to the new API of libgda 4.0 I can finally announce libgdamm 3.99.0, the first unstable release of what will eventually become libgdamm 4.0.

It breaks API with the existing libgdamm 3.x line and replaces various classes with superior implementations. This should bring a lot better performance. Thanks to Vivien Malerba for his great work on libgda and for fixing all the C++ relevant bugs I filed.

You can download libgdamm here: http://download.gnome.org/sources/libgdamm/3.99/

Now, we can finally start to port glom to the new API and fix bugs!

svn:externals for noobs!

20. February 2008

As I am usually far to lazy to RTFM I had to learn how to add externals definition to subversion the hard way. But as other might probably need it, too, here is how it works (mind the dot at the end…):

svn propset svn:externals "<directory name> -r<revision> http://svn.gnome.org/svn/yourmodule/trunk/your_directory" .

The problem is that after that command it will not work because you have to commit the property change first:

svn commit -m "Changed external property"

So here is the final example:

svn propset svn:externals "eggtoolpalette -r853 http://svn.gnome.org/svn/libegg/trunk/libegg/toolpalette/" .
svn commit -m "Added eggtoolpalette"
svn update

And now you will have eggtoolpalette revision 853 in your tree. Thanks to herzi for helping me solving this problem on IRC.

Joining the recent discussion about Ubuntu packaging policies I would really prefer if they would update their versions to the stable branch. For us developers it’s a lot of work to backport things to the stable branch and fix the major bugs in it. We do that because we don’t want to force people to use unstable versions and because the stable version has lots of users and therefore lots of testing. In general it is unlikely that a x.0 version will ever be released without some minor/major bugs because the development version has never enough testers and something will be missed. Anyway, we do more stable releases for the one and only reason that distributions can update their packages and give their users better software. If you don’t trust us that our new stable version won’t brake everything than we really can’t help you that much.

Anjuta 2.3.3 was released yesterday and this will mean that UI should now be frozen. We did a lot of bug-fixing in the last weeks. Thanks to all those people testing and reporting bugs and writing patches. Also thanks to my two GHOP Students, Philipp Kerling and Boleslaw Kulbabinski for their work and I hope to see future constributions from them. [EDIT] Forgot that I wanted to ask for some volunteer artists to have a look at #511000 and maybe also #510047.

In the meantime I have been working on the Glom drag & drop stuff for Openismus. Unfortunately there is still nothing that could be shown but be sure that I will post a screencast once it is finished.

There has been a lot of discussion about locking upstream translations in Launchpad. Many translation teams agreed here but we probably have to sent some official request to the Launchpad people. I hope that is no big deal as we usually have a good relationship with Ubuntu.