Archive for the ‘openSUSE’ Category

Mono 2.0 LiveCD

Monday, October 6th, 2008

The Mono 2.0 LiveCD was delayed a bit from the Mono 2.0 release but it is available now. The delay was cause by me culling unneeded packages too aggressively. On the upside we’re down to only 562MB!

Help your neighbor and join the torrent or grab it from ftp.novell.com.

The content is very nearly the same as the VMware appliance released this morning, including:

Update: New images have been uploaded, now with sound! It turns out you couldn’t do sound of any kind. The missing package (aside from alsa)? hal-resmgr, which sets ACLs on sound devices amongst other things.

Top-level Projects for Upstream

Thursday, October 2nd, 2008

One of my favorite ways to abuse the openSUSE Build Service is to link the packages I want to use into my home project. This is remarkably convenient but it wastes CPU cycles and disk space. It’s generally considered A Bad Thing™. But there are some good reasons why I do it and some ways openSUSE could change so that I won’t need to.

Executive Summary: Let upstream projects have their own top-level projects.

Currently it’s very difficult to get a top-level build service project created. You file a bug saying that you want one and they close the bug WONT-FIX. It’s a win-win. There’s a desire inside SUSE to keep the top-level as clean as possible. The solution, from their point of view, is to limit top-level to categories. People who think categories are a good thing need to read Everything is Miscellaneous by David Weinberger, or at least watch the Google Tech Talk. The result is massive projects like GNOME:Community.

GNOME:Community is not all bad but it has some fundamental problems, most prominently that there are often at least a few packages there which are older than the packages on your system. The underlying cause of this is that there are too many packages and not enough people interested in maintaining them. In some cases someone volunteers to maintain a package and does a fine job for a while but then loses interest and the package stagnates.

On the other end of the spectrum we find projects like Banshee. The Banshee developers maintain their own build service project. When they have a release they will update their packages because they want to be able to publish a 1-click link. If I add the Banshee repository I will always have the latest version and I won’t get any fluff I don’t need. This is the right way to do it. I would like to see top-level projects for every major project that wants to participate in openSUSE. There should be top-level projects for Pidgin (well, purple anyway), F-Spot, GIMP, Ekiga, etc. That way I can choose to get the latest GIMP without getting the latest F-Spot if I want to and I know that it’s maintained by people who care about it and are committed to quality.

Not every piece of software should have it’s own top-level project, of course. Some are closely related to each other such that it doesn’t make sense to keep them separate: Pidgin and Finch, for instance, or Firefox and Thunderbird. Others share a release schedule and have interdependencies that would prevent them from splitting up effectively, like GNOME. These should be brought under a single project, but this is not strange because they are already under a single upstream project (GNOME, Mozilla, etc.).

Many upstream projects do not distribute binaries. When they do it’s often just the Windows and Mac binaries because it can be difficult or expensive to build your own. openSUSE could be the place to get binaries of your favorite software, but not if we try to pigeonhole them into someone else’s project. It’s a risk for GIMP to advertise that high quality binaries of 2.6 are available from openSUSE if adding the repository is also going to upgrade your Tomboy.

It’s also difficult to properly categorize a project. Suppose there were a slick new open source file-sharing application and we put it under file-sharing but a year down the road it gets an instant-messaging feature and this feature becomes the feature people really like about it. Should we move it to an IM category? What about a nice DAAP server. Does it go under multimedia or file-sharing? Let’s toss out categories right now and make decent use of tags instead. The technology is already there, tags have been an underused feature of OBS since the beginning.

Making OBS more appealing to upstream projects is good for everyone. Upstream gets a release build system and a network of willing mirrors for free. openSUSE gets free publicity and better coordination with upstream. Users get repositories they know are well maintained by people who care about the project without any extra fluff they don’t want or need.

Package Dependencies

Tuesday, September 16th, 2008

When packaging a new program for the first time one of the big headaches is figuring out where all your dependencies are.  This difficulty is greatly mitigated on openSUSE by a little tool called webpin.  It’s available in the openSUSE:Tools repository.

When you first build out your basic spec file you have little or no idea what goes in BuildRequires.  For a few projects you don’t need anything there at all so I like to just go ahead and run osc build and see what happens. If you’re not using OBS to build your software then I’m very sorry for you. Usually the configure script will stop somewhere saying that it couldn’t find something it needs, usually a header file or a pkg-config (.pc) file. This is where webpin comes in.

Suppose you get a line that says:

No package 'avahi-sharp' found

This means that configure is looking for a pkg-config file called avahi-sharp.pc. So with webpin installed we type webpin avahi-sharp.pc and we get a result that looks something like this:

1 results (1 packages) found for "avahi-sharp.pc" in openSUSE_110
* avahi-mono: Mono Bindings for avahi, the D-BUS Service for Zeroconf and Bonjour
   - 0.6.22 [suse-oss]
     >> /usr/lib/pkgconfig/avahi-sharp.pc

Now we know to add avahi-mono to our BuildRequires.

Later we might get an error that looks like this:

session-glue.c:5:26: error: X11/SM/SMlib.h: No such file or directory

Unfortunately for us this kind of error comes from gcc and is harder to see in all the gcc error: gobbledygook. If the upstream maintainer had been more careful we would have seen a configure error instead. But no matter! we just type webpin X11/SM/SMlib.h to find that this header file is found in xorg-x11-libSM-devel.

My new package packaging time is as much as cut in half thanks to this excellent tool. Many thanks to those responsible. There is also a web interface for webpin (I’m pretty sure it started out that way, hence the name).

Side note: RPM really needs to have automatic provides for pkg-config files so that we can use BuildRequires: pc(avahi-sharp) >= 0.6 instead of explicit package names. pkg-config is one of the best things to happen to software in a long time IMHO and RPM should be taking full advantage of it.

The package used for this example was Tangerine, a very nice little DAAP server written by James Willcox.

Hack Week Three

Saturday, August 30th, 2008

It’s been another exciting and worth while Hack Week.  Sadly I had a number of high priority Mono updates to push to SuSE so I probably spent only about half of Monday through Wednesday hacking.  Thursday through Saturday were spent at the Utah Open Source Conference (more on that soon).  The real highlight for me was spending the week with Aaron Bockover, Hubert Figuiere, Sandy Armstrong, Gabriel Burt, Brad Taylor, Mario Carrion, Brian Merrell, and Jared Allen.  Technically I’m not on their team(s) but they kindly let me bum rides off them and eat their snacks.  Good times.

I’m really looking forward to new features for Banshee like the Muine-like interface and the new track editor.  Good stuff happens at Novell.  Seriously.

DigitalMe

My hack week project was to package DigitalMe and get it ready for distribution.  DigitalMe is Novell’s Open Source, Open Standards, InfoCard (CardSpace) Selector, part of the Bandit Project.  I am not the best person to ask but I think I can summarize it as like OpenID but you can also generate your own credentials.  The project needed some help or it would not get into openSUSE 11.1 or SLE 11 so I volunteered my time.  We’re almost there, but not quite.  I will post a link to the package repository when it’s done and with some luck we’ll get it submitted to SuSE before feature freeze.

Hack Week Two – Day 5

Friday, February 15th, 2008

day-5.jpeg
Numbers dwindle at Hack Week on the 5th floor of Novell Provo

It’s been a good week. Reportedly last year’s Hack Week was more… enthusiastic. Hopefully this isn’t the last one. I got a handful of little things done and gave a shot at a couple of others.

Giver on Mono.Zeroconf

Giver, a simple file sharing application, was written against avahi-sharp for service discovery. This means it can only be used on a system that runs Avahi (which excludes SLED 10, Mac, and Windows). Using avahi-sharp can also be error-prone because you have to write your own event handlers and resolver thread. Aaron Bockover recently released a DNS-SD abstraction library called Mono.Zeroconf (which has actually been used for some time in Banshee). I ported Giver to Mono.Zeroconf. In theory this should mean that Giver can run on SLED 10 now and could be more easily ported to Mac and Windows. I’ll have a go at getting it to build on SLED 10 next week.

Tasky

Tasky for openSUSE 10.3 1-Click

Tasky is a simple task management app (TODO list) for the Linux Desktop and probably this year’s best hack week project. Aside from being a pretty sweet app it has a back-end to synchronize to Remember The Milk. Let it be understood that I am not claiming a developer role. I did the packaging for it, put it in the openSUSE Build Service, and got it ready for submission to SuSE for inclusion in future distributions.

tasky.pngtasky-prefs.png

Tomboy Remote

Wade Berrier has been working on an sqlite data-store for Tomboy (some of that work was already done). He got some criticism from a user who likes to look at his notes from the command-line while logged in remotely. I wrote a simple console application called tomboy-remote that can list and search your notes, show you a specific note, and allow you to safely edit a note. It should be trivial to add other features. Underneath it uses Tomboy’s D-Bus interface. This requires that Tomboy be running already but Boyd Timothy and I have talked about turning Tomboy into a D-Bus-activated service with a separate front-end.

Update: A short screencast is available.

Hack Week Two

Friday, February 8th, 2008

Hack Week Two
Novell’s second ever Hack Week
February 11 – 15

I didn’t get to participate in last year’s Hack Week because I was working in another part of the company at the time. This year I may get interrupted occasionally to help get Mono 1.9 out the door on time. In any case I may try to hack up an XRandR 1.2 preference management service for GNOME. I’d like my laptop to automagically switch to my desktop monitor when it’s plugged in, and ask me what I’d like to do if it doesn’t already know.

Update: Simon Holm Thøgersen wrote me to point out that Søren Sandmann is already well into this effort.

I had another idea for a virtual bluetooth keyboard (so that I could type at my N800 from my desktop) but that’s not as interesting now that I’ve got an N810. Maybe I’ll work on specs for a geo-location extension to XMPP instead? Aw nuts, that’s already in progress too!

Bluetooth in openSUSE 10.3

Tuesday, November 13th, 2007

There’s some great new bluetooth stuff available now for Linux but it didn’t quite make it into openSUSE 10.3. Most important to me is the ability to add a bluetooth mouse from a GUI and have it work every time you turn it on. GUI for using bluetooth audio devices is coming soon.

bluetooth-preferences.pngadd-device.pngauthorization.png

To get this stuff into openSUSE you’ll want to:

Add the GNOME:Community repository and install / upgrade bluez-gnome and bluez-utils.

Enable bluetooth using the YaST Bluetooth tool or by setting START_SERVICES="yes" and running SuSEconfig.

Have a look at /etc/bluetooth/hcid.conf and make sure it doesn’t have much more than this:

options { security user; }

Some of the other stuff that gets put in there by default can get in your way. It’s safe to just delete the other stuff. In fact it’s probably safe to remove this section as well.

Then log out and back in again or reboot or start the bluetooth services and run bluetooth-preferences.