Saturday, September 10, 2011


There was a very good interview with Jon McCann recently about GNOME 3 and GNOME OS.  Reading public comments on this interview showed a lot of negativity which I think missed the good points.

GNOME OS is unfortunately very loosely defined, but from what I can gather it's essentially controlling the entire stack that GNOME is to make a better experience and make it easier to work on the project.

What I like about this strategy:
  • It's focuses on the users that GNOME is targeted at.  We've had a strong direction since GNOME 2 days and the focus on features that these users need through design is the right way of getting there.
  • It's dropping old desktop metaphors and moving to new ones.  There are other desktops like XFCE which will continue the Windows 95 desktop metaphor and be successful with it; it's right for GNOME to move on and be more cutting edge.
What I don't like about it:
  • It downplays the value of GNOME as a "box of bits".  The drum I'm banging at the moment is about sharing infrastructure.  This is something GNOME has been very successful with in the past and discouraging this cuts off a lot of places where GNOME can get investment from other projects.
  • It puts very strong requirements on distributors which they don't want to / can't meet.  GNOME is not like Apple, it can't control the entire stack from hardware to sales.  It needs to work with distributors or have a distribution strategy.  Building a perfect desktop is not enough.
The impression I get is GNOME OS is now effectively the strategy of GNOME and it's generally a good direction.  We need to make sure to flesh it out and ensure that we can have sustained development in GNOME and get wide distribution.

Desktop common ground

There's a common argument that you hear about open source desktops which goes something like "we have less than 1% market share; the other desktops are laughing at us; we should pool together and make a real contender".

And you know what, they're right!  We don't have a significant market share, and we're not at the point where we have a truly amazing desktop experience (but we're getting closer).  Anything we can do to get there faster must be a good thing.

And you know what, they're wrong.  We don't have a finite developer resource.  Open-source is amazing like that - when a project starts that people care about suddenly the community grows.  Trying to mash everyone together into one project wouldn't work and would probably make us even slower.  Putting all our eggs in one basket is a big risk.

How can we share resources to grow that market share without pushing us together into a big compromise?  We need to share infrastructure.  What we need is a POSIX for the 21st century.  We've been slowly building this with things like the Linux, D-Bus, X, GStreamer.  We can do more.

There's been a rise in design thinking in Open-Source which has been really good for everyone.  But I think the pendulum has swung too far.  User experience is not the only factor in deciding what to do.  Infrastructure is expensive.  Every bad API is slowing us down progress on the layers above it.  Every desktop developer that dives into infrastructure is not working on those layers either.

Sharing is hard.  But the cost of not sharing is huge.  Lets make sure the infrastructure we're building for tomorrow works cross-desktop and we can share those costs.

Friday, September 02, 2011

Desktop Summit 2011

Last month I attended the Desktop Summit 2011 in Berlin.  Unfortunately I was only there for the core days because Berlin is an awesome city and the summit is awesome too.

The quality of the talks this year were great, and I only had one or two slots the whole time where there was nothing I wanted to go to.  This summit felt more integrated than the last one and I hope this continues into the future.

Some highlights:
  • There was a good response to LightDM.  I felt my talk had a lack of GNOME people present, but I think the GTK4 talk may have absorbed them.
  • Lennart did a well researched talk on revamping the login system which sounds very good and left me wanting to know more.
  • From what I heard the future of GTK+4 and Clutter looks very promising, but I haven't been able to see the talk as I was doing mine.  Can't wait for the videos to come out so I can find out more.
  • Vincent Untz is did a really thoughtful talk on his experiences as a GNOME release manager.
  • GNOME Shell seems to be progressing very well and there were a lot of talks on it.
  • Plasma/KDE also seems to be doing a lot of innovation.
Some negatives:
  • There was basically no mention of Unity.
  • There was the usual amount of Canonical bashing and it's not helping anyone.  The GNOME State of the Union had too many cheap jabs and the half hearted laughter shows it's just not funny anymore.
  • There was a lack of Canonical people present, and it was commented on numerous times.  I'm personally not surprised, as every year more of my colleagues just don't want to be there.  Andrea Cimitan, who is a great guy, summed it up when he said on Google+ "when I say around here I'm working for "Canonical", people stop smiling :)".
  • There was little mention of GNOME OS.  Sometimes we need to be more than just hackers talking about technology and really talk more about planning and strategy.
What I'd like to see at the next summit:
  • Increased visibility of other desktops - it still feels very GNOME and KDE centric, I think we can learn a lot from projects like XFCE, LXDE, Elementary, Unity etc.
  • Increased collaboration on infrastructure - we need to get in a better shape so we can pool out resources on the boring stuff and focus more on the user facing component which make us successful.

Thursday, September 01, 2011

Broken PDFs in Simple Scan

Since version 2.32 Simple Scan has had a bug where it generates PDF files with invalid cross-reference tables.  The good news is this bug is now fixed, and will work correctly in simple-scan 3.2; thanks to Rafał Mużyło who diagnosed this.  You may not have noticed this bug as a number of PDF readers handle these types of failures and rebuild the table (e.g. Evince).  It was noticed that some versions of Adobe Reader do not handle these failures.

I've added a command line option that can fix existing PDF files that you have generated with Simple Scan.  To use run the following:

simple-scan --fix-pdf ~/Documents/*.pdf

It should be safe to run this on all PDF documents but PLEASE BACKUP FIRST. It will copy the existing document to DocumentName.pdf~ before replacing it with the fixed version so you have those in case anything goes wrong.

If you can't wait for the next simple-scan, you can also run this Python program (i.e. python broken.pdf > fixed.pdf)

import sys
import re
lines = file (sys.argv[1]).readlines ()
xref_offset = int(lines[-2])
xref_offset = 0
for (n, line) in enumerate (lines):
        # Fix PDF header and binary comment
        if (n == 0 or n == 1) and line.startswith ('%%'):
                xref_offset -= 1
                line = line[1:]
        # Fix xref format
        match = re.match ('(\d\d\d\d\d\d\d\d\d\d) 0000 n\n', line)
        if match != None:
                offset = int (match.groups ()[0])
                line = '%010d 00000 n \n' % (offset + xref_offset)
        # Fix xref offset
        if n == len(lines) - 2:
                line = '%d\n' % (int (line) + xref_offset)
        # Fix EOF marker
        if n == len(lines) - 1 and line.startswith ('%%%%'):
            line = line[2:]
        print line,