Archive for the ‘Technology’ Category

Mono 2.0 LiveCD… Now with Mono!

Wednesday, October 15th, 2008

Okay, it’s not quite that bad but that’s how I feel. It’s been a long and dusty road fixing the major bugs in the Mono 2.0 VMware Appliance and LiveCD.

Fixed in 2.0-1: mono-debugger was missing. This is a big deal because this is the first release where the debugger is released at the same time as, and with guaranteed* compatibility with, the mono release.

* no guarantees, implied or otherwise, unless you have some other agreement with Novell :)

Fixed in 2.0-2: No sound support. This took a while to fix. Why is hal-resmgr not required by any package or pattern?

Fixed in 2.0-3: Absolutely no scalable (truetype) fonts installed. You wouldn’t have noticed probably but it breaks Moonlight which, though not included (until the 1.0 release probably), we definitely want to work properly.

Those of you who had problems with ftp.novell.com should find that it’s working much better now. Please use the torrents.

Since I’m not at all confident that nothing else will go wrong I’m not going to link directly to anything this time. Find the LiveCD or VMware Appliance at the Mono download page. Bonus points to whoever finds the next bug serious enough that I have to fix it and re-release… again.

Coming soon for Mono 2.2…

Mono on SUSE Studio

Color Scheme Adjustments

Monday, October 13th, 2008

Dear Lazyweb,

Some time ago I read on planet gnome that someone wrote some code that would take an existing color scheme and adjust it automatically such that where a pink is too close to white it would get darkened so that there was enough contrast, and if you changed the background to blue or whatever it would change the scheme to cope with the new background. I think it was proposed that this code go into xchat at least but would be useful in vte and other terminal and IM applications. Can someone please find me that article? My google-powers have utterly failed me here so far.

Thanks in Advance,
Andrew Jorgensen

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.

Utah Open Source Conference 2008

Sunday, August 31st, 2008

The 2008 Utah Open Source Conference was amazing.  It was quite literally too legitimate to quitimate.  Last year was great but everything this year was double that.  Twice as professional, twice as engaging, twice as many high profile keynote speakers, and more than twice the attendance (an undisclosed number >= 500).

Paul Frields, Fedora Project Leader and Joe Brockmeier, openSUSE Community Manager both flew out to keynote at the conference.  Novell brought up some of the Hack Week participants and UTOS arranged a room for us to hack in.  In fact Novell was, appropriately (this is Utah), the best represented company at the conference with 10 presenters and many more attendees.

We wanted to get Jono Bacon, Ubuntu Community Manager to keynote as well but he declined.  In fact Canonical didn’t deign to represent themselves at all.  Ubuntu Utah pulled something together for a booth but Canonical didn’t even send pressed CDs.

Favorite Sessions

Panel: Open Source And GovernmentPhil Windley, former CIO of the State of Utah and Pete Ashdown, Founder and CEO of Xmission (Utah’s First and Best ISP) discussed everything from transparency in legislation to voting machines.  Pete talked about how he solicited outside contribution to his policies during his United States Senate campaign using a Wiki.

Fedora: The Future First.  Paul Frields discussed the history and goals of the Fedora Project as well as their completely open source infrastructure and community policies.  Did you know that Fedora has their own VoIP system?  I didn’t.  They can schedule conference calls, have them recorded, and post them publicly so that everything they do is in the open.  Cool stuff.

Banshee Media PlayerAaron Bockover was too tired to be coherent but we love him anyway and the software, new features, and T-shirts spoke for themselves.  I wish I’d got a photo of him drinking that nasty Sugar Free ROCKSTAR at the podium.

The Free Content Business ModelHoward Tayler is a web cartoonist and small business owner.  He’s also a brilliant speaker.  If you missed this I feel sorry for you.  Excellent points about how to monetize something you are comitted to keep free.

Dialplans for Dummies: An introduction to the Asterisk DialplanJared Smith is hilarious.  To decide who would get a copy of his book he had those who wanted it do a rock, paper, scissors tournament.  After a vigorous and tense last round the loser sadly handed the book over to the winner, and Jared pulled out another copy for the loser.  Perhaps that didn’t sound as funny as it was.  You should have been there.  Jared is also a great presenter, and Asterisk is awesome.

openSUSE Build Service

I gave a hands-on presentation on the openSUSE Build Service.  This was my first time presenting at a conference but I thought it went very well.  All the demos were successful and I was able to cover everything I had planned in the allotted time.  I even got to demo SuSE Studio.  An audio-only recording should be posted at the conference website soon.  If I had known there wouldn’t be video I would have setup a screen recorder.

Update: Audio now available on Utah Open Source Podcast.  I’m pretty sure my voice is not actually that low.

RPM Guides

One of the attendees asked me where he can learn more about RPM.  It is lamentable that there are no published guides written in the last 5 years.  Here are some links that should help.

There’s also the SuSE Packager’s Manual but this appears to be an internal document and is admittedly very specific to SuSE.

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.