Tag Archives: Gnome

www.gnome.org

My GNOME of the future: People

I asked people to write up their realistic visions for GNOME. So here’s the part that I find most inspiring. Sorry if this seems like a mad rant – it seems sensible and feasible to me.

Obviously I am personally interested in directly giving end users what they want, both because I write software for users, and because I hope users can drive demand from the actual decision makers. That’s not an argument against other GNOME marketing strategies. It’s just a statement of what I myself am able to be motivated about. People should go ahead with whatever they see clearly.

To make most of the following happen just requires work, and perfection of existing stuff. It’s not something that I’m likely to work on much myself, but it feels like we could agree that we want it.

GNOME Is People

  • A contacts panel applet lists people with whom I most often communicate, with pictures of their faces. A search entry helps me to find other people, in my local list of people, and in lists on the internet.
    • This isn’t a separate application. It’s right up front. There’s a little picture of my face on the panel, and clicking it shows me a list of other people, with their faces.
    • gossip-telepathy‘s various experimental panel applets are already going in this direction.
    • Update: Gimmie is also partly there. I had no idea that it could be a panel applet on a regular GNOME panel. And you can change the preferences so it shows just the People menu. I’d like it to use telepathy and e-d-s, or generally something that can be shared across applications. It uses Gaim at the moment, which is understandable as a short-term hack.
    • The faces thing really makes a difference to the experience. And let’s call them hackergotchis. It’s our word so let’s make this our feature.
    • We would need some automatic way to make a hackergotchi from any random picture. The least the user would have to do is sometimes identify a square region of a photograph. It would rarely be perfect, but it would be good enough.
    • When these people are on my local network, that’s obvious. Avahi makes this possible. File-sharing with these people is easy and actually works without any configuration.
    • Optionally, this could integrate with a corporate contacts server, such as an LDAP server, but this really has to work without any central administration.
  • Every mention of a person is a way to contact the person via a variety of methods, and a way to view the history of my communication with that person. I can easily see what groups that person is in, both groups I have defined, and groups that people have defined on the internet.
    • If I have one way of contacting the person (email, IM, etc), my system can discover all of the other ways of contacting that person (email, IM, skype, SIP, blog, etc), either automatically, periodically, or on request. This would require some kind of standard, maybe a vcard would do.
    • There’s an über-simple way to back this up, ideally to an internet service. Otherwise, I will lose it when doing upgrades and reinstalls. This backup should be frequent and automatic, so I don’t have to think about it until I need it.
    • Ideally this would integrate with the various social networking sites such as LinkedIn, Xing (OpenBC), Facebook, Orkut. Most of them will be too greedy to risk offering the advantage of the freedom-to-leave, speeding their own demise, but we should give them the chance. If none of them do it, we can live without them.
  • The applet needs to be on the panel by default. A notification needs to encourage people to use it, with some very easy way to register yourself, so that people can ask to add themselves to your list. It needs to be useful quickly. Let the system administrators remove it if they don’t like it, but don’t force regular users to find it and add it.
  • Without adoption of standards, this might not work with all computer users in the world, but it can be made to work between all GNOME users, and probably all Linux users. That alone would be an attractive scenario. I’d be happy to hear about how Linux is the social desktop.

Roadmapping GNOME

Yesterday I mentioned GNOME’s time-based releases. But what about aims?

The RoadMap

We can aim for features while still doing time-based releases. The time-based schedule just releases whatever features are ready on time. If people feel there’s now a lack of long-term vision, well that’s not caused by our current release process. On the contrary, now that we don’t have to worry about how to release stuff when it’s ready, we are free to worry about what we want to actually implement.

Over the last two years, we’ve tried to do this via the RoadMap on the wiki. It’s been better than nothing, and it’s gradually getting better. I’m glad that Lucas Rocha is pushing it again, so we shouldn’t stop that effort. But I don’t think it’s working out quite as hoped. I wonder why this is. I can guess at these reasons:

  • Not enough awareness:
    People don’t know it’s there, and people forget that it’s there. We’ve had the same problem with the ReleaseNotes pages, which list features already done, which should be easier. How could we dramatically improve this?
  • Not enough agreement:
    Naturally there are some differences of agreement about how to achieve things. For instance, dependence on Mono splits us down the middle. But there’s no harm in stating what different large groups are working on, even if they appear to be working towards similar goals.
    And I think there’s plenty that we do agree on, even at the technical level. For instance, increased use of Avahi and Telepathy.
  • Implementation takes time:
    We often know what kind of features we want, but we can’t be sure about which implementations will be best for that. The more important it is, the more cautious we are about locking ourselves into technologies that might not be good enough. I think we need to list them as candidates anyway, and provide some criteria for eventual acceptance. And we need to be patient because good work does take time. But if we list them, there’s more chance that people will work on them.
  • Reluctance to lead:
    The road map would probably be more coherent if it was regularly updated by particular people, as part of our schedule, rather than being occasionally updated by whoever looks at the wiki. It’s best to get the plans directly from the maintainers, but they aren’t all doing that now, and that isn’t providing a coherent plan across modules.
    We’d have to be very careful because there is at least a perceived risk that this could be hijacked by someone who didn’t represent the consensus, pushing their own agenda, or it could fail under someone unreliable. We’d have to be very careful to stick to what we agree on, and be diplomatic about what we don’t agree on, much as the release-team is when deciding on new modules. And we’d need to demand that it gets done regularly.
    I find this scary but it’s probably worth a try.

However, I absolutely do not believe that you can point at our mailing lists and say that we lack decisiveness because there is too much discussion. Discussion and open development are valuable quality controls to us, and should not be scape-goats for real disagreement and lack of diplomacy. That’s the same knee-jerk reaction that assumes that open source could never get anything done. We know that’s wrong.

Vision

As a start, I’d like to see sane people suggesting their own medium-term road maps for GNOME, with some expected implementation details. This should not include wild vague silver-bullet notions with no connection to reality and no awareness of past mistakes. It should include things that are genuinely useful to users, admins, and developers, rather than change for the sake of change or buzzword compliance. This should be stuff that we would like to do and that we are fairly sure we can do, and that we are probably working on now.

And I’d be happy to see different plans, aiming at different target markets, or different plans based on clearly different implementations. Just keep it positive and fun and let the good stuff show through . If enough people do this then we should be able to pull out the best pieces to make some attractive shared visions.

I seem to remember Havoc and others doing this around the GNOME 2.0 time. So who are the new Havocs? I know we have a few.

Glom 1.4

Glom 1.4.0 is out. Glom is an easy-to-use database system, which is gradually becoming more useful. It’s already available in Ubuntu 7.04 (Feisty, not yet final) [1] thanks to Daniel Holbach and Martin Pitt.

New features in Glom 1.4

  • Self-hosting: Databases can now be created in a local directory, without the pain of configuring a central PostgreSQL server. PostreSQL is still used to host the database on your local computer. You may, for instance, send an archive of this directory in an email. PostgreSQL is therefore now a non-optional dependency.
    In future, a client-only version of Glom might be available for embedded devices.
  • Details view:
    • Related Records: Allow viewing of doubly-related records.
    • A vertical scrollbar now allows the window to be smaller when necessary on your screen.
  • List View: Now supports static text items, static pictures, and script buttons, as the Details view already did.
  • Field Formatting: Allow the user to remove a previously-chosen Also Show field.
  • Translations: Added Import and Export buttons, so you can use the standard .po format.
  • Calculated Fields and Button Scripts: Now uses Python syntax highlighting, via GtkSourceView.
  • Added a Script Library to the Developer menu, for Python code that should be reused (via Import) in several scripts.
  • Added –debug_sql commmand-line option, which prints out the generated SQL commands.

Thanks to Johannes Schmid, Armin Burgmeier, Dodji Seketeli, L Davison, bugzilla, Openismus, and me.

Features planned for Glom 1.6

If they are finished in the next six months:

  • Drag-and-drop layout editing.
  • Relationships Overview.
  • Locking, when multiple users access the same record.
  • Port to libgda 3.0.

More details of the development plans are online.

[1] Ubuntu 6.06 LTS (Dapper) has Glom 1.0, and Ubuntu 6.10 (Edgy) has Glom 1.2. Both should be updated to their latest upstream Glom 1.0.x or 1.2.x versions to fix crashes, but there is still no way for me, a fully-FOSS-compliant software vendor, to deploy bug fix updates to my software on Ubuntu. Using a different .deb repository does not seem to be an acceptable solution.

Martin Michlmayr’s research on time-based releases

I recently had the opportunity to proof-read Martin Michlmayr‘s PhD thesis on release management in large open source projects. Martin is an ex Debian project leader, so he has personal experience. His research confirms what I believe to be true about the benefits of a time-based schedule rather than a feature-based schedule, based on GNOME’s release planning:

  • Coordination: This allows sub-teams to coordinate their work, by specifying certain times when it’s most appropriate for them to do their work, and preventing them from interfering with each other.
  • Decentralization: This coordination happens without much central coordination, because the schedule is known and reliable.
  • Quality: This allows more features to be released in a suitable state over the long term, without finished features having to wait for not-yet-ready features.
  • Modularity: This encourages us to question the suitability and stability of individual features rather than attempting to judge only the whole as all or nothing, and allows us to create a whole out of parts that are ready. The schedule encourages major long-term changes to happen in branches without disrupting regular development.
  • Iterative Development: This keeps quality under control, because the difference between releases is small.

(This are my wordings of my favorites after reading his text. For accuracy, read his actual conclusions when they are online.)

Update: His PhD is now online.

It’s obviously easier to get detailed evidence from open source projects, so he must restrict his conclusions, but I think the conclusions apply equally well to software projects in general. Given any two large projects, with existing sub-teams of developers, pay alone is not a sufficient factor to achieve a feature-based schedule on time, given all the other things that can and do go wrong. It’s easy to feel that it should be, but reality isn’t what it should be, and time-based schedules are all about managing reality. Blame doesn’t get things done. So I think a time-based schedule is the best way to make your developers release software, regardless of how you acquired those developers.

Of course, you decide which of these releases to actually release to the public.

Note also that I think the GNOME schedule could do with more occasional adjustment to emphasize different needs at different times, such as sometimes having a longer stabilization phase, or a longer features phase. But the adjustments would have to be small, because we need to be careful about breaking our stride. I’ll post more about features-based planning tomorrow.

I’m not fan of the repetitive high-word-count form of most academic texts, but Martin does a good job of getting the ideas across, based on specific studies and interviews, with some good quotes. He has just started blogging some of it, and I suspect that this will be more direct than the thesis itself. I hope he keeps blogging it, particularly his conclusions, but here’s some links into what he has online so far:

ABI Stability of C++ Libraries

ABI Stability Is Difficult

It’s easy to break the ABI of a C++ class. Just add a new member variable to a public class or add a member variable to an implementation class that’s used a a member instance in a public class. C has the same problem, though it’s not quite as bad because they tend to use pointers more rather than member instances.

I have mostly had the luxury of working in these two situations:

  • The code is used by a closed group of people, who expect to rebuild their entire set of software often.
  • The code is open source, even during its development, so the API and ABI can become quite mature before it is declared ABI stable. However, there are still things that I wish I could change now.

But what if it’s a toolkit whose first public version will be released as ABI-stable?

Pimpl?

Pimpl is the only real solution that I know of. You use an opaque pointer as a member variable. The class to which the pointer points is not fully defined in the header. For instance:

class PrivateThing;

class Something
{
   ...

private:
  PrivateThing* m_priv;
};

The instance of PrivateThing is then created in the Something constructor.

This has some disadvantages:

  • It requires more runtime allocation of memory, in more pieces, which is slow.
    However, I wonder whether this is significant in the average application, given that the public class is probably a member of something that’s allocated dynamically anyway.
  • It causes a slight slowdown, because an extra dereference is necessary whenever the member data is accessed.
    This might not be significant.
  • It makes the code less easy to read, and adds repetitive code to each class method.
  • You cannot provide protected (rather than private) members for use in derived classes while simultaneously hiding those members.
    Many would say this is a good thing. I would probably make m_priv protected though, so that derived classes in the toolkit itself can access members directly, with their knowledge of its definition, while preventing use from applications.

I am fairly confident that this is the best solution, particularly as it’s equivalent to what GTK+ does in C. But please do comment if you have opinions or alternatives.

Nokia’s N800 “Canola” media player

Here are some of my thoughts after trying the latest beta version of Canola. The smooth über-simple UI very nearly turns the N800 into a home internet media player, but falls slightly short. If it was open source then it would get there sooner. If Canola doesn’t then someone else will first, which would be a waste of the developers’ hard work.

Installation

This is great. Just open a link from the browser and the thing is installed after a few straightforward button clicks. It seems that Maemo supports .INSTALL files, offering to add a line to the apt-get sources.list file, and then using it to install the specified package. Well done, someone.

Separate configuration

Canola can use UPnP and Dmap (part of DAAP, I think) servers to get shared audio and video from your PC or media server device. I think this concept has encouraged the developers to take the client/server idea a bit too far. So there is a separate Canola Configuration menu item, which starts a web page which connects to a local web server. There’s no reason for this to be a web UI, and no reason for it to be a separate application, interrupting the user experience. It’s an implementation detail that has been exposed to the user unnecessarily. For instance, there’s no good reason that I should have to use a web page to change Canola’s UI theme. If the developers want to get and set application configuration via a local http service then that’s fine, but it doesn’t need to be exposed to the user via a web UI. This is architecture astronautism at the expense of user experience.

The same goes for radio stations and podcasts. Please let me choose them from a list or wizard via the regular UI. At the moment they are even hidden under a “plugins” section in the web UI. Give me instant gratification now, please.

Too many clicks

I can’t click on things as soon as I see them. The simple menu is nice, but quickly annoying for one reason: To select something I have to scroll with the arrows until the item is in the selection rectangle and then click it. I should be able to click it as soon as it comes on screen, as I keep trying to do. Then the selected-item rectangle would be meaningless and could be removed.

It would also be nice if I could scroll with a sweep gesture, as I can in the browser. Trying to do this causes me to accidentally select one of the horizontal icons when my stylus touches it.

When I select an “iRadio” station, it should start playing. Don’t make me click the play button too.

Bugs

Something is causing the list of radio stations under each category to be different each time I open the category. I think it’s doubling the list each time.

Media Server

I haven’t tested the Shared Audio and Shared Video features. What upnp server should I use on Ubuntu? The Canola web-page recommends Twonky, which seems to be proprietary.

Scratchbox on Ubuntu Feisty

I’m using a dodgy fork of Scratchbox 0.9.8 so I can use apt-get through https instead of http, but the following tips should be relevant for the regular Scratchbox 1.0.x that I’d rather be using.

  • Make sh point to bash instead of dash (probably not necessary for Scratchbox 1.0.newenough):
    sudo rm /bin/sh
    sudo ln -s bash /bin/sh
  • Install linux-image-2.6.20-6-generic and boot from it. You’ll probably need to press Esc when booting to see the boot menu. This vdso bug might be fixed in Ubuntu’s linux-image-2-6.20-10 soon.
    If you don’t do this then you’ll see this error after logging in:
    Inconsistency detected by ld.so: rtld.c: 1192: dl_main: Assertion `(void *) ph->p_vaddr == _rtld_local._dl_sysinfo_dso’ failed!
  • If you see this error while installing some packages, such as docbook-utils,
    ERROR: ld.so: object ‘/usr/lib/libfakeroot/libfakeroot-tcp.so.0’ from LD_PRELOAD cannot be preloaded: ignored.
    then fix your fakeroot like so, while logged in:
    sbox-config –copy-libfakeroot
  • Update: You’ll need to correct the hosts line in your /scratchbox/etc/nsswitch.conf file, so that apt-get can resolve domain names (wget will work without this, which is confusing).
  • Update2: That nsswitch.conf corrections seems to still be necessary with Ubuntu Gutsy and the latest Scratchbox version (as of July 29th 2007).

Ross Burton helped me with most of this. Thanks, Ross

FOSDEM and the Dreaded Lurgy

I spent the weekend at the FOSDEM conference, an impressively chaotic meeting of diverse software developers. At any one time, there were three talks that I’d like to have seen, and there were so many great people there that I usually got waylaid on the way to talks. All of these people really need to move to Munich.

The GNOME room was a well-organized safe haven. Thanks to Christophe Fergeau and Vincent Untz and GNOME.fr friends. As a GNOME Foundation member, I was entitled to a free T-shirt. It’s the best yet, and actually fits me. It’s a tasteful shade of gray with a small logo, so it can be worn in real life. Conferences normally discriminate against Mediums. For instance, XL was the smallest FOSDEM T-shirt available.

I did a little introductory talk on Glom, which was just an update of my GUADEC talk, and I suspect was very dull. Glom’s a lot more interesting than a bunch of bullet points. Some time I should dedicate a few days to doing some screencasts. Preceding me was the Bling talk by Mirco Müller. When talks are too successful at FOSDEM, the vibrations from the applause trigger the fire alarm. So I had to delay for a few minutes to let people get back into the room. We should maybe alert the authorities before Mirco’s next talk.

I caught some kind of cold on the early morning flight to Brussels, and my voice was almost completely gone by Sunday night. I had planned to spend Monday looking around the town, but instead I went to the airport early in the hope of an early flight back to a warm bed. That didn’t work out, so I shivered on an airport bench for 8 hours. Not being able to speak above a whisper is a really odd experience. It turns out that speaking is really useful.

The are various important things that I need to do, but I’m knocked out for a day or two.

Linux-compatible wireless USB adaptor: Results

After my 3 previous posts, I decided to get serious. I tried four different USB wireless adaptors – the most widely available ones that were most likely to work based on my previous entries. I knew one of them would work, but I wanted facts.

My interpretation of “widely available” is “available from Amazon”, partly because they have a wide range, including products from extra sellers. And because I’d like to fund my research through the Amazon associates links, by creating an über-simple page of just-works Ubuntu hardware. If that works then I can use the income to keep the results up-to-date by buying new devices for testing. It’s unlikely that I’d make a profit on that.

Maybe it’s a silly idea, but nobody else is offering a list of just-works hardware for just one distro, for the people who want a simple answer. All the lists I’ve seen so far are vague and out-of-date and/or have a bizarre understanding of “works out-of-the-box”. It’s time to simplify the question that we are trying to answer.

IMG_2166

Summary

Update: Get a ZyXEL ZyAir G-220 v2. Otherwise try to get the MSI US54SE (more difficult as time passes). The ZyXEL ZyAir G-220 v2 now works perfectly in Ubuntu Gutsy, and it’s still available. There is no improvement in the support of the other cards in Ubuntu Gutsy.

Old text: Get an MSI US54SE if you possibly can. That seems difficult in the USA, but it’s on Amazon Germany. It works out-of-the-box on Ubuntu Edgy, and Feisty, but not Dapper. There don’t seem to be any alternative non-working versions with the same model number. This is how it should be. If someone finds a source for MSI US54SE sticks in the USA, please let me know. Richard Hughes’ experience with a 3CRUSB10075 suggests that it might be just as good, probably with the same chipset, using the same zd1211rw driver, but the model name is vague and I suspect there are various different versions.

And Linux Emporium generously sent me a sample of their Edimax 7318USg wireless USB stick. They know this doesn’t work out-of-the-box, due to driver problems with the new RT2571 chipset, but they’ve done lots of research and testing on various Linux distributions, and provide drivers on a CD, with a very simple command-line script that installs everything, and then works on Dapper, Edgy, and Feisty. This model is not available on any Amazon sites, so they seem to have found something special. They’ve spent considerable time on a product that probably has a very small profit margin, because they want to give back to the community, out of the goodness of their hearts. So buy stuff from them.

Note: This test was only on an open wireless network. Frankly I was glad to get something that worked at all, and more detailed tests can happen later.

Details

ASUS WL-167G

  • Ubuntu 6.06 “Dapper”: Not recognized in any UI, and not even by iwconfig on the command-line.
  • Ubuntu 6.10 “Edgy”: wlan0 and wmaster0 show up in the Networking control panel, but can not make connections. Shows up as “Unknown USB Vendor Specific Interface” in the Network Manager applet, without a list of access points.
  • Ubuntu Feisty: Recognized by Network Manager applet, but could not connect to any of the listed access points, which are also listed as having zero strength. Listed as wlan0 and wmaster in the Networking control panel, but trying to configure either crashes the control panel.
  • Ubuntu Gutsy (as of 7th September 2007): Hangs the entire system when it’s inserted, or when logging in with it inserted.

Notes:
It’s no longer available from Amazon.com right now anyway. You can still get it from amazon.de.
The script/driver from Linux Emporium for the Edimax 7318USg also made this ASUS WL-167G work, though with the same lack of integration with the Network Applet or Networking control panel.

Edimax 7318USg

  • Ubuntu 6.06 “Dapper”: Not recognized in any UI, and not even by iwconfig on the command-line.
  • Ubuntu 6.10 “Edgy”: wlan0 and wmaster0 show up in the Networking control panel but can not make connections. Shows up as “Unknown USB Vendor Specific Interface” in the Network Manager applet, without a list of access points.
  • Ubuntu Feisty: Recognized by Network Manager applet, but could not connect to any of the listed access points, which are also listed as having zero strength. Listed as wlan0 and wmaster in the Networking control panel, but trying to configure either crashes the control panel.
  • Ubuntu Gutsy (as of 7th September 2007): Not recognized by Network Manager applet.

Note that this worked on all vesions of Ubuntu with the supplied driver, though you’ll need to use the command-line to connect, and you’ll need to rebuild the driver every few months when your Linux kernel is automatically updated.

MSI US54SE

  • Ubuntu 6.06 “Dapper”: Not recognized in any UI, and not even by iwconfig on the command-line.
  • Ubuntu 6.10 “Edgy”: Works out-of-the-box. It is recognized by the Network Manager applet, which lets you choose an access point from a list. You may also configure it via the Networking control panel.Slight imperfections: The Network Manager applet lists all access points with the same 80% signal strength, though I know some are very weak. The Networking control panel does not show a list of access points, so you must type in the access point name manually.
  • Ubuntu Feisty: Works, as in Edgy.
  • Ubuntu Gutsy: Works, as in Feisty.

Note: I also tried to get the MSI US54G, because it’s available in the USA, and I suppose there’s a remote chance that it’s similar to the MSI US54SE, but after two weeks Amazon.de has not yet been able to deliver it. Frankly, it’s not very likely that it works. I’ll update this information if I get my hands on one.

ZyXEL ZyAir G-220 v2

  • Ubuntu 6.06 “Dapper”: Not recognized in any UI, and not even by iwconfig on the command-line.
  • Ubuntu 6.10 “Edgy”: Not recognized in any UI, and not even by iwconfig on the command-line.
  • Ubuntu Feisty: Recognized by Network Manager applet, but could not connect to any of the listed access points, which are also listed as having zero strength. Listed as wlan0 and wmaster in the Networking control panel, but trying to configure either crashes the control panel.
  • Ubuntu Gutsy: Works out of the box.

This was a wild-card choice, because I’d read somewhere that some of their other models, now unavailable, worked out of the box. I think this one has a zd1211b chipset. In Ubuntu Gutsy it seems to use the “zd1211rw” driver. I’d love to hear reports about the more recent ZyXEL models.