Tag Archives: Gnome

www.gnome.org

GNOME Foundation Board candidates, 2006

It always happens at the last minute, but we again have a great list of candidates for the GNOME Foundation board, possibly the best ever, and quite diverse. Dave Neary’s candidacy statement is promising yet pragmatic, and shows what the foundation is achieving, really fulfilling its purpose now that it’s cleared up the dull stuff. He’ll be chairperson again, I hope. And it looks like he’ll have a motivated and decisive set of colleagues. It’s getting better all the time.

GNOME Germany also has elections in December. We’ve become slightly better organised, but opportunities have been wasted over the last two years, mostly through lack of clear leadership and openness. We’ve failed to expand the membership past a small bickering core, and we’ve failed to navigate German beaurocracy. Reliance on donated server space even means that the web site is now offline, and even before it went offline there was a useless plan to move it to yet another wiki engine and CMS system, wasting more time and effort and reversing what’s been achieved. So it’s time for a completely new start and it’s time to get results. I think Jörg “Josh” Kress is providing the best leadership right now, so I hope he is enthusiastically elected as president. I’ve already posted him my “Vollmacht” so he can vote on my behalf at the meeting. I’ll get more involved again if he is elected.

Probably not running for the GNOME Foundation Board again

Since taking a high-level view of things again at the UDS, I am very tempted to run for the GNOME Board this year. Today is the last day for candidates to declare themselves. Apart from the general wish to help out, I’m mostly tempted because it’s a lot of fun and you get to chat with people you respect and hear about stuff you otherwise wouldn’t. They don’t seem like virtuous reasons though. And I’m concerned that I’d hit conflicts of interest because I view several of the Advisory Board companies as potential Openismus clients. So I probably won’t.

Ubuntu Developer Summit, Mountain View

I’ve covered the food and the flight, so now for some actual details about the Ubuntu Developer Summit in Mountain View.

Canonical (or Ubuntu, or even Google, not sure) sponsored travel and accommodation for “upstream” participants, including several people from GNOME and associated projects. Now that’s really working with upstream. We were new to the Ubuntu Summit way of doing things but figured it out quickly. I think we all felt we should be doing more to justify our presence, but hopefully we provided at least some valuable input and advice, and some of us even started implementating specifications. But most of the specifications being considered were lower down in the system, dealing with things such as drivers, devices, X, etc.

The Ubuntu Summits work by discussing specifications and gradually fleshing them out and turning them into definite actions over the week, with Launchpad (trying to) generate a meeting schedule for each day that gets all the relevant people in the right place at the right time to get this done. This Linux.com report about the UDS has a good overview. Matt Zimmerman does a great good-natured job of keeping things on track without being unpleasantly authoritarian. He should have a blog.

These specifications were relevant to us GNOME people:

  • Easy Codec Installation: Tim Mueller and Wim Taymans are adding additional details to GStreamer’s error reporting, and Ryan Lortie is implementing an asynchronous (returns immediately, calls a supplied callback later) C API (libgimme-codec) that can take this information and request that an appropriate GStreamer plugin be installed if one exists to support that codec/muxer. I think Canonical’s Ian Jackson is working on the command-line tool that Ryan’s library will use. The idea is that each distro can provide their own implementation of this command-line tool, so that no distro-specific stuff is needed in the applications. We agreed on this really quickly, and most of it was done by the time UDS was finished.
  • Composite By Default: Discussion about installing Compiz (or the Beryl fork of Compiz) by default as an option, though it obviously isn’t ready to be used by default. Beryl was favoured in general, I guess because the maintainers were there, and because it was the only one that was currently packaged for Ubuntu. But the maintainers, though nice people, don’t understand the pain that’s involved in being a window manager maintainer, and I think they are more concerned with gimmicks and their settings than with subtle usability or with juggling the often-conflicting needs of various fanatical WM users. People seemed to believe that composite support in Metacity has been abandoned by the Metacity developers, but I haven’t found any evidence of any such decision, and I still hope that can be done, to avoid years of regressions and hate email from bearded types. Packaging it as an option should deal with the feature parity issue for now.
  • Face Browser: Mirco Mueller might implement a snazzy 3D face browser for GDM’s login screen, for small business and home users (who don’t have too many users to choose from).
    This started out as general discussion about how to make sensible use of 3D effects during login. I don’t think anything more is still specified, but we realized that we could do quite a bit just by handing control of the background to a separate process, much as you can tell xscreensaver to render on the desktop background (X’s root window), with some extra information about the location of the foreground widgets. Of course, this could be abused for irrelevant gimmickery, but I think something subtle and slow could have a nice effect both on the login screen and the desktop background. How can we get Olafur Eliason (not my photos) to design a background theme?
  • They had some questions about a couple of items in the Common Customizations spec, about:
    • a numlock-on-startup setting. I discovered that the numlock setting is meant to be saved automatically, so no setting should be needed, but that probably only works when session saving is enabled, and it usually isn’t.
    • dial-up configuration with the Networking control panel, though I’m not sure whether they have problems with the current “Modem Connection” feature or they were missing support for DSL. The spec has been approved, though it’s still vague about these things.
  • Various X specifications: Keith Packard had lots of good news about X.org 7.3, though that won’t be ready for Ubuntu’s next release. All kinds of things should just work, even without a configuration file, and without restarting X, and be configurable generically (without driver-specific APIs) where necessary, such as projectors and multiple screens. He also has high hopes for the new open source (mostly reverse-engineered) Nouveau driver for nVidia cards. I like how Keith can shift from technical-level to user-visible-level easily where appropriate. He’s not your average geek.
  • Tab Consistency: Over the last couple of years, several GNOME applications (gedit, gnome-terminal, epiphany, gaim, firefox) have implemented their own closable/reorderable tabs. mostly for document-based applications, but they are inconsistent in how they place the tab close button, how they do drag-and-drop reordering, scrolling of excess tabs, which tab is selected when one is closed, where new tabs are added, etc. Gaim actually has options for most of this, really. Luckily, Firefox 2.0 solves the major problem – it previously had one tab close button while every other application had one on each tab, and GTK+ 2.10 has API that applications could now use to do consistent reordering. GTK+ still needs API for the tab close button. However, the spec was being pushed in the direction of changing all applications (and/or GTK+) to be consistent with the old Firefox way (one close button on the right), which would be a silly amount of work just to be inconsistent with every other distro.

The meetings about the Ubuntu release process were interesting, after my experience on the GNOME release team. It’s mostly similar, though they have a much wider set of things to worry about. I do think they suffer from the tendency that prevailed sometimes in the GNOME release team of looking on the bright side and persuading ourselves that everything would be OK. In particular, I think a mere one week gap between a release candidate (when far more people actually start testing) and a final release is wildly optimistic and probably unnecessarily painful. Anecdotally, Ubuntu Edgy shows the result for me, with at least 5 very user-visible bugs, while Ubuntu Dapper (with a longer stabilisation phase) was remarkably polished.

But I’m just a first-time spectator to that process, and it’s genuinely difficult to schedule enough time for boring bug-fixing and testing while still keeping developers enthused enough to actually do that work. Occasional long-time-support releases are probably a good way to balance that, though I wish there was a way to get more upstream bugfixes into the LTS releases without forcing use of backports of completely new major (with new features) versions.

Otherwise, I spent the time on the GNOME couch (Mirco’s photo) goofing around with the GNOME people more than I have a chance to at GUADEC, such as Ryan Lortie, Christian Kellner, Raphael “unpronounceable” Slinckx, Lennart “Milkybar Kid / Doctor Zee” Poettering, Danilo Segan, and loveable Ubuntu/Canonical people such as Daniel Holbach, Michael Vogt, and Sebastian Bacher (the Frenchest accent since Daniel Veillard). I agree with Ryan – these are people I’d just hang out with for the fun of it if we lived in the same place. It’s also intellectually simulating to meet the other people who deal with such different parts of the system.

I also found time to do some mindless hacking that I don’t have time for normally, such as continuing the port of libgdamm, pygda, and Glom to libgda 3.0, and writing some documentation.

I’m still feeling the Jet lag. Yesterday I woke up after a full night’s sleep, drank 2 cups of coffee, and fell asleep for 5 more hours.

What I’m doing now

OK, so I can’t tell you much about what I’m doing, but I can tell you that I’m busy.

Tomorrow I fly to San Francisco to attend the Ubuntu Developer Summit, at the Googleplex for the week. This is unrelated to everything else that I’m doing, but should be fun.

Since the start of September I’ve been working on a small experimental project for an Openismus GmbH client. It’s secret but not currently part of any actual product or strategy for the client. It’s using the C-based GObject API, so I’m playing lots with GObjects properties, interfaces, vfuncs, inits and constructors, etc. This is full time for me until approximately early January 2007.

I’m also steering some work that Daniel and Johannes are doing for a client, which is mostly about creating documentation at the moment. That’s secret for now, though not for any particularly good reason, and will definitely be public and generally useful eventually, at a secret time in the future. They can’t say, so don’t ask.

I’m also doing bits and pieces and general support here and there for another Openismus GmbH client, and working on the repository analyzer for them.

I’ll likely have some work to do soon for yet another locally-based (more or less) client who have some long-term plans to use gktmm on embedded devices for a specialized market. They’ve already started and are doing well, but would like some advice and manpower.

In general, I’m busier than I’d like to be. I’d like to always have some excess capacity so that it’s easier to accept work for new customers, with the added avantage of being less stressed and thefore more productive. An extra full time employee would make that happen, but I’m not quite ready to do that yet, given the lack of guarantees of enough work in the longer term. Possibly I’m being too cautious.

/tmp does not belong in file save dialogs.

Here’s something that shouldn’t happen.

  • User reads her email with a web-based email service, using Firefox.
  • User opens an MS Word document (something.doc) that someone sent her via email. OpenOffice opens it.
  • User changes document and saves it with a new filename (something_changed.doc). OpenOffice offers to save it next to the existing document, which Firefox put in /tmp, because Firefox thinks it’s just saving a temporary copy so it can tell OpenOffice to view it. User says OK, because what does the User know about “tmp”?
  • User shuts the computer down.
  • User starts the computer.
  • User tries to find the document. After much difficulty, she finds /tmp, but the document has been deleted (because it’s deleted at startup, though the user doesn’t know this).

This happens in Ubuntu Dapper and Edgy at least. I think that Firefox in Ubuntu Breezy used to save the temporary documents to the Desktop, instead of /tmp, which was also annoying.

I’m not sure what the best general solution is, but I can imagine that some of these might help:

  • Temporary documents could be read-only.
  • GtkFileChooser could warn about saving documents in /tmp, and/or not allow /tmp to be shown when saving documents.

Glom 1.2

Glom logo Glom 1.2 is now out (see the announcement). It has a few new features and less bugs than the 1.0 branch. It should be available in Ubuntu Edgy soon. Glom 1.0 is apparently now available in Fedora 5 and 6, and I expect that to be updated to 1.2 soon.

For Glom 1.4, I hope to finally port to the latest libgda API, and add a dependency on gtksourceviewmm, to do source-code highlighting of Python code in calculated fields and buttons scripts. And hopefully Rasmus Toftdahl Olesen‘s Relationships Overview feature will also be added.

Updates of non-essential stuff in Ubuntu

Ubuntu 6.06 (Dapper) will be the recommended stable and supported Ubuntu release for a while yet. It only has Glom 1.0.3, though a 1.0.8 version exists with lots of bugfixes. I can understand that a stable version of a distro doesn’t want to add features by jumping to Glom 1.2, but I don’t understand why bugfix updates aren’t allowed. Generally it seems that updates are only allowed for security bugfixes.

Sure, you have to be careful. If Ubuntu updated OpenOffice in Ubuntu Dapper to fix a crasher then they’d have to be very careful that they weren’t introducing new bugs. But nobody is using Glom for anything critical yet, and it’s not in the officially supported repository. Just because an X update broken things once, it doesn’t seem necessary to freeze the Glom version. Of course, I want people to get my bugfixes so I can get more feedback, so I can make Glom good enough to be relied upon.

Ubuntu Mountain View Summit

Canonical has generously offered to pay my way to the Ubuntu MountainView developers summit in November, to bring some extra points of view from the GNOME project.

I’ll arrive on Thursday evening, so I can spend Friday taking a look at San Francisco. I need to find a relatively cheap place to stay for 2 nights. This will be my second free junket of the year, though the last time I spent most of my tourist day in the hotel with a nasty cold. The California sun should make that unlikely this time. If anybody would like to meet to eat vegetarian on Friday night (3rd November), just comment or email me.

I have a strange adolescent star-truck enthusiasm about visiting the west coast for the first time – and only my second time in the states. Back in my early pre-internet twenties, I wanted nothing more than to go work in Silcon Valley, because it seemed like the center of the software world. I probably would have done it if the visa restrictions hadn’t required a university degree. Now I feel that southern California’s urban sprawl is probably as characterless and disfunctional as the U.K.’s Thames Valley where I lived at the time, and I’m content to enjoy the quality of life in Europe, working with the world’s best software people via the internet. But I suspect that visiting the Googleplex will still feel special.

Overselling Portland

I have nothing against promotion, but overselling your product becomes a mistake pretty quickly. Statements such as “For the first time, ISVs are able to port their applications to Linux regardless of desktop environment.” will just ruin OSDL’s reputation and kill OSDL’s opportunity to help those ISVs. This isn’t a one-off mistake either.

Let’s make it clear:

  • a) Portland 1.0 is a set of command-line tools to help applications to integrate with the Linux desktop. That is useful.
  • b) When ISVs think of porting their applications to Linux, they think first of GUI toolkits, file handling, networking.

a) is not b). We have lots of great b). For instance, ISVs who have suffered with MFC or win32 love GTK+ (or gtkmm, etc) or Qt. They are a bit annoyed that they can’t really use win32 or MFC on Linux, but they aren’t surprised and they are pleased that the alternative is a good one.

But if you tell them that Portland 1.0 is the alternative platform they are looking for, they will very quickly conclude:
1. “Erm, command-line? So, Linux hasn’t done much in the last 10 years. Bye.”
2. “Platform? No it’s not. How stupid do you think I am? How stupid are you? Bob, don’t forward me any more calls from OSDL.”

And Portland is never meant to be a desktop-agnostic GNOME/KDE-combining GUI toolkit. If you let people think that then it’s your mistake not theirs.

OSDL (and the Portland project) are doing great stuff, making a better Linux desktop, and creating a marketplace for ISVs. Don’t ruin it with this nonsense.

Glom 1.1/1.2

Glom logoI’ve been working on a Glom 1.1/1.2 branch recently, trying to quickly add some features in time to release a stable version for the Ubuntu Edgy release. The Glom 1.1.6 announcement has a list of what’s new. My favourite new features are:

Add Related Table

This is a time-saver that lets you quickly add a table and a relationship that uses it. So, for instance, if you have

Album
Nebraska
Asbury Park
Closing Time

you can quickly add an ID field, and a related table, so you have:

Album Artist ID
Nebraska 1
Asbury Park 1
Closing Time 2

with

Artist ID Artist Name
1 Bruce Springsteen
2 Tom Waits

In future, I’d like it to take existing data from existing fields and put that into the related record, so that in one step we could get those two tables from this:

Album Artist Name
Nebraska Bruce Springsteen
Asbury Park Bruce Springsteen
Closing Time Tom Waits

Use of the pygda API

Via the records.connection object you can now use the whole pygda API (The libgda Python API) from your button scripts and calculated fields, so there is no limit to what you can do with the underlying database. Be careful with this great power. More details on the Glom API page.

This feature was easy to implement thanks to the wonderful pygobject_new() function from pygtk, which is a lot like gtkmm’s Glib::wrap().