Windows Mobile syncing made easy

So somehow, last night and today, I've more or less dropped everything else and been working on making it really easy to use Windows Mobile 5 and 6 devices connected via USB in 2008 Spring. Happily, I'm making a lot of progress.

This was the state of play as of a couple of days ago:

Nothing at all worked because the kernel modules didn't have the necessary code to handle WM5 / 6 devices. If you fixed that, sync-engine wouldn't run as it couldn't create a default config file. If you fixed that, it wouldn't remember any partnerships you created across sync-engine restarts or device reconnections, so you had to keep creating new ones. sync-engine wouldn't run when needed, it had to be run manually. odccm wasn't set up to start by default and was missing some dependencies in its initscript. synce-kpm, the best graphical tool for setting up sync partnerships and installing software on devices, wasn't packaged. there were no metapackages to ease the pain of getting the necessary stuff installed. we had opensync 0.36, which is entirely broken.

and on, and on, there's lots of other things I've fixed.

Now, I've fixed bugs, added a dbus activation script so sync-engine is run when anything tries to activate it, fixed odccm's initscript, packaged synce-kpm and added an autostart file so it runs when you log in, created metapackages, and reverted opensync to 0.22, which works...and lots of other stuff i don't even remember. it's late. Adam Pigg suggested the odccm stuff. Thomas Backlund added the kernel module fixes to kernel-tmb. John Carr suggested the sync-engine dbus activation trick, for which I'm forever grateful.

there's still lots of rough edges to sand off, but I can see the light at the end of the tunnel. On my own system, with a clean test user, I was able to log in to KDE, plug in my phone, configure a partnership (with kpm), set up a synchronization (with kitchensync), and actually do a successful sync - all without touching a console. Given that the status yesterday was "just don't bother", I consider this pretty good progress. :)

I'm hoping to have this working really smoothly for final release, so you can just install a single metapackage, restart your session, plug in your phone, and set up a sync really easily. I may also get time to look at Blackberry, Nokia and Sony Ericsson sync too (those are the other devices I have on hand).

I like being able to work on really useful stuff like this :)

Meet the new stuff

So as the Bugzilla mail piles up happily in my inbox (I'm glad it's an electronic inbox, if it was a real one, it would have toppled over and caused me a serious head injury by now), I spent today doing...other things. :)

The What's Coming in Mandriva Linux 2008 Spring page on the Wiki is now in good shape: spent a few hours polishing it up and submitting stories about to various news outlets. Also had to post stories for our latest Store offer: it's called OS Refugee, it's actually a resurrection of a program we ran a LONG time ago, and it goes like this: if you've got a license for any other commercial operating system (i.e. Windows) you can trade it in for a 35% discount on 2008 Powerpack, 2008 Flash, or a Powerpack subscription. Neat, yes? Details are here.

Also spent a bit of time booting RC1 on my systems and filing bugs on the stuff that doesn't work. It can be surprisingly hard to find time to actually test the product 'clean' in between all the time spent promoting it, fixing it, and discussing it :). My systems all run Cooker, so there's some stuff I don't get to see unless I burn a One CD and test it out (like the installation process, hardware detection, and state of the default desktop).

In between, a bit of packaging: Mandriva now has a package for BillReminder, in both Cooker and 2008 /contrib/backports. I updated avant-window-navigator's applets (awn-extras-applets) in 2008 /contrib/backports, which I forgot to do before, and updated swi-prolog to 5.6.51 in both Cooker and 2008 /main/backports. Finally, I continued to keep the packages for Elisa up to date. I picked up Elisa for packaging months ago as I found it an interesting package, but now it seems we're going to have some kind of deal to promote it in 2008 Spring, so I have Anne and various others on my ass filing bugs on every little thing that doesn't work. Eek! The packages are now in decent shape and we should ship a nice clean Elisa 0.3.4 in 2008 Spring. I am also in the process of backporting the packages to 2008. In case you didn't notice - I love /backports. :) Also updated: Conduit, Tracker, Mediatomb and Deluge.

Mandriva Linux 2008 Spring RC 1 "Serapia" released

Yep, the 2008 Spring pre-release cycle just hit the late beta...err, I mean, release candidate...stage. RC1 has lots of juicy stuff, including the new look for 2008 Spring (which is very pretty), KDE 3.5.9 and 4.0.1, some new default applications, the drakconnect / ndiswrapper bug finally fixed!, WPA-EAP support, new NVIDIA / ATI drivers, and - as the publicists say - Much, Much More. Details on the Wiki, please do test it and post bugs.

Plea for help

So, um, I don't do this often, but I could do with some help.

Basically: I am drowning in an unending sea of bugs.

Last year we set up a much better process for handling bugs than we previously had. There is now a proper policy for bugs defining exactly what can, should, and can't be done to them, in what order, and by whom. This includes a proper triage process, which means that all bug reports are / should be handled by the 'triage team' before being passed to the maintainer of the package involved. During this process the triager ensures the bug is one that should properly be handled by the Mandriva bug process (or re-directs it elsewhere if not), ensures that all necessary information to fix the bug is present, and that all the attributes of the bug are set correctly.

I haven't run any statistical analysis of this yet, but I'm about 95% sure that this process means we're handling bugs a lot better than we used to. More of them are getting fixed and people are happier with our responses and response times.

So, what's the problem?

The problem is that it's eating, on average, about four hours of my life per day.

The way this was envisaged to work was that I would be the Bugmaster - in overall charge of this process, but not actually in charge of doing it all. There is a Bug Squad, the members of whom are supposed to make up the triage team, and the plan was for them to do most of the work of actually triaging / wrangling bugs. My role was to be overseeing the whole process, managing the Bug Squad, resolving disputes about the policy and so forth.

In practice, it's just not happening this way. Aside from the superhuman Pacho Ramos, without whom this whole process would have fallen apart months ago, most of the people who signed up for the Bug Squad just don't do much or any triaging work.

This isn't their fault - it's a volunteer system and anyone will tell you that most volunteer systems have this problem; people sign up from the best intentions and then, for a variety of reasons, many of them just can't commit to doing the work they originally thought they could. I'm certainly not blaming any of those people for this situation. It just happens.

The problem is that that means, between us, me and Pacho are doing over 90% of the actual triaging work. At this point of the release cycle, bugs change fast. There's a mailing list where notifications of any significant change to a bug are sent. I basically have to read all of those mails, every day (I have a few tricks for skipping some, but not really many). At present it gets about 250-300 mails a day. I'm averaging something like 50 bug actions per day. This is taking up, as I mentioned at the start, an average of four hours per day. That's 50% of 'normal' working hours, or about 30% of the hours I actually work - a ton of time that I wasn't envisioned to be spending on this, that could at least in theory be entirely covered by other people, and that I could otherwise be using to write newsletters or invent more stories to try and get into the news about Mandriva or work on packaging or finally merge the Knowledge Base and the Wiki or any of the other fifty dozen things that I just never have time to do.

This is a common problem at Mandriva - ask anyone who works here and they'll probably be able to tell you at least two or three things they do not because it was really formally planned at any stage that they should do it, but just because someone has to and it doesn't look like anyone else will. As I wrote on the forums lately, we're trying to do something (develop a completely independent, full-size, commercial and supported Linux distribution) that most of our competitors use about 3-4x as many resources to do, and that means this kind of situation is sort of inevitable. However, in this case, it's actually one that doesn't have to happen. So this is a really long-winded plea for some people to please, please, PLEASE join the bug squad and volunteer a bit of your time to triage and generally herd bugs.

It's actually a really good thing to volunteer for. It gives you an immediate and visible impact on the process of actually developing the distribution. You can see exactly the consequences of your actions, right away. It gives you a nice warm fuzzy glow when you know you've been part of the process of getting someone's problems fixed, and you often get actual thanks from people just for helping out. It's also something you don't need masses of technical knowledge to do. You do need kind of a baseline level of knowledge in order to be able to understand most reports filed and know what information is needed before they can be fixed, and in general as you develop more knowledge you will be able to triage more efficiently, but you can help out even with just moderate experience, and it's quite easy to learn. It's not something you need to be a Perl black belt or whatever to do.

It doesn't need to be a lot of time, either. It's taking me a lot of time but that's because, as I said, there's really only two of us working on it. The more people there are, the less time each has to spend. If we really had, say, ten people working on this, it'd only take a half hour or so per day from each person to cover just about every report. That's not a big time commitment.

So, again, please - if you're reading this, and you'd like to help out Mandriva, and you have moderate experience with Mandriva and with Linux, please volunteer for the Bug Squad. It's not too hard and pretty rewarding (I should say "it's drop-dead easy and super-fun!" but I don't like to exaggerate, possibly not a good quality in PR :>). You can read how to volunteer on the Bug Squad wiki page. Thanks!

Multiple external monitors, on a laptop, on Linux, with Tritton See2 USB video adapter / sisusb

UPDATE UPDATE UPDATE: for anyone coming to this post via Google, one, what's written in it is mostly impossible with modern distributions, since you can't use the old i810 driver any more with recent X.org releases. Two, there'll soon be a much better option - DisplayLink drivers for Linux. See here.

I decided today that I really hadn't had enough crazy hardware hackery in my life lately.

I've been planning for a while to buy a new desktop, replacing the laptop I've been using as my only client system for the last year and a half. This was mainly due to a few irritants with the laptop:

one, it overheated all the time two, the CD/DVD writer doesn't work three, I can't have two external monitors on it as it only has one VGA port four, intel driver bug causing periodic screen blankings that only a reboot can fix

In the end, though, I've decided to try and address these problems with the existing system, which is really a fine system if I can just deal with these things.

So first I tackled the screen blanking bug, which has been driving me nuts. Turns out to be related to a new feature of the X.org intel driver since 2.2.0, called framebuffer compression. Disabling framebuffer compression fixes that problem. This is being addressed by the intel driver developers currently, so hopefully 2.2.1 (or 2.3.0, whatever they call it) and later releases will work fine.

Today, I tackled the overheating and external monitor problems.

Overheating turned out to be easy, once I stopped being pissed off by it and started looking for a solution. One, I did a couple of good hard blows in through the vent where the heatsink is located. That knocked an easy 10 degrees C off of my temperatures. Two, I bought one of those janky 'laptop coolers' - basically a chunk of plastic with a couple of fans in it that you sit your laptop on top of. The fans are powered by USB. Okay, it's janky, but it works; my temperatures are 20 degrees down from where they were, and I can now actually compile things without the system hitting 100C and shutting itself down.

Having two external monitors on a laptop with only one VGA connector is, heh, somewhat more fun.

The most obvious thing to look for is an ExpressCard graphics adapter.

ExpressCard is the successor to PCMCIA / PC Card, for those who don't follow the laptop hardware scene very closely. It's basically a 1x PCI Express socket in a different form factor.

Inexplicably - given the amount of laptops with only one external display connector and no upgrade path - there does not seem to be such a beast.

Back at the start of 2006, Asus announced something called the 'Asus XG Station', which is basically an ExpressCard to PCI Express adapter specifically designed to house a PCI Express graphics card. The idea is to sell it with a mid-range card for $300 or so, but it's really just a generic adapter, the card could be swapped out (with due consideration given to power and cooling issues). However, it's still not on the market. And anyway, the price doesn't really ring my bell; I'd prefer to pay $100 for the adapter and buy a cheap card. I don't need any 3D capabilities.

Aside from this, there's nothing except a workstation-class thing I found (can't find it again) which looks like exactly what I want, with the minor drawback that it costs $800. Which is about how much I was going to spend on the entire new desktop system.

The second most obvious thing to look for is a mini-PCI graphics card.

Again somewhat inexplicably (though slightly less, given the trouble you'd have with connectors given that mini-PCI is conceived as an internal form factor), none of these seem to exist either. MSI apparently made (or, at least, listed) one - possibly only usable with a specific set of MSI motherboards - with an ATI Rage chipset, back in 2002. Since then, nada.

The next thing I came across was something Matrox make, called the DualHead2Go. This, in some way, converts a single VGA output into two (there's a TripleHead2Go as well). I imagine it relies on the underlying hardware actually supporting multiple outputs, and just tricks it into forcing them all through one physical port, or something. I don't know if there's any Linux support for it, because I quickly lost interest when I found in the specs that it doesn't go past 1280x1024 resolution per monitor. I had my heart set on dual 20" 1680x1050 monitors.

So the final, least obvious but actually (more or less) working solution is...

a USB video card.

Yes, you can stop laughing now. These do in fact exist and - miraculously - actually work. More or less.

The one I got is branded a Tritton See2, but I think there's really only basically two types in existence. This one looks like this and pops up under many names and several color schemes, but always looking basically the same (a slightly curved, rounded chunk of plastic around the size of a mouse, with a USB plug on one end and a VGA port on the other). Here's another example. From what I can gather, it basically contains a cheap USB->PCI bridge and an equally cheap SiS graphics chipset. Mine has the USB ID 0711:0900, and identifies via lsusb as a "Magic Control Technology Corp. SVGA Adapter".

The alternative is this. This is built on a system called DisplayLink. It seems to be a rather more sophisticated setup which actually uses customized hardware and has custom drivers which use a lot of compression tricks to substantially increase performance. The drawback is that there is, as far as I can tell, no Linux support at all for this hardware. I have contacted DisplayLink and also the X.org mailing list to see if they know anything at all about each other, we'll see where that goes.

So, as the DisplayLink option seemed to be a non-starter, I decided to go with the more janky alternative, and picked up the Tritton See2 thing (which, rather amazingly, my local retailer - NCIX.com, AKA Netlink - had on hand at their local branch).

To my considerable surprise, it actually works more or less as advertised with a minimum of faffing about. It uses a kernel module (sisusbvga) and an X.org driver (sisusb). With an appropriate xorg.conf, it just works like any more conventional graphics card.

The fun came in trying to get it working along with my laptop's internal chipset, an Intel i945. The intel driver is one of the first to be using the new RandR 1.2. It turns out that trying to do a multi-adapter setup where one of the adapters uses an RandR 1.2 driver and one uses an RandR 1.1 driver just won't work. And the intel driver has no option to disable RandR 1.2 (it has no RandR 1.1 fallback, it relies on RandR 1.2 to work at all).

So I mailed the X mailing list to complain about this (boy, those guys sure love me today!), and devised Plan B.

Plan B is, basically, going back to the old-school iteration of the Intel X.org driver, known as i810.

Again surprising me (I was planning on at least two days of fun-filled poking before I got this all working), this works fine. With a fairly basic Xinerama xorg.conf (setting up Xinerama is documented in tons of places on the Web, and in man xorg.conf), dual displays - one connected to the USB adapter, one to the internal Intel adapter - was pretty much a snap to get working.

So, problem solved, right?

Well, not quite. One, RandR 1.2 is really nice. Without it, I can't just disconnect my laptop and walk away any more; I have to switch xorg.conf files and restart X if I want to go from the stationary dual-external-head setup to the mobile one-internal-head setup. It would be far nicer if RandR 1.2 drivers played nice in a multi-adapter setup with RandR 1.1 drivers. Or if RandR 1.2 drivers played nice in a multi-adapter setup with other RandR 1.2 drivers (apparently this doesn't work either, though I don't have the means to test), and sisusb was ported to RandR 1.2.

Two, those of you who know much about hardware may have already guessed this one: doing graphics over a USB connection with no compression is not exactly an exercise in pure speed. AGP 1x had more bandwidth than a USB 2.0 connection, so you can imagine what AGP 8x has. And PCI-E 16x. That's not even thinking about latency. And the sisusb driver is not accelerated in any way. This means...it's slow. Redraws are noticeable in just about all operations. It's not a deal breaker for me, as the monitor connected to the USB connection is basically going to spend 95% of its time showing Evolution. But you should take it into consideration if you're thinking about a similar setup. Playing video, for instance, would be just a complete non-starter. The DisplayLink option would be much better in this area, if it worked in Linux.

Three - and this one surprised me the most - the quality just isn't great. The quality of the display from the USB adapter is massively worse than the one from the internal Intel adapter, at 1680x1050 (and 1440x900, I tested that too in case it was better). Basically, it's very slightly fuzzy and colors are just not well separated. Even after tweaking the monitor settings extensively to make the best of it, using Evolution with the Clearlooks GTK+ theme, when looking at the mail list - where each line is supposed to have a slightly different background color, as lists do in GTK+ these days - you can't tell the two colors apart. Each line just looks white.

In the end I switched to the Darklooks theme. The adapter seems to do a bit better with dark colors than light ones, and using this theme, the quality is acceptable. It's still obviously inferior to the quality on the other head, though. So that's something else to take into account.

Still, overall this is an acceptable solution to the situation of wanting another external VGA connector on a laptop that only has one. And probably to several other situations where you want another video adapter in a system which has no spare PCI, AGP or PCI-E slot. These adapters do work rather easily in Linux, they're reasonably widely available, and not expensive (I paid CAN$80 for mine). So it's an option, and it's out there.

The only other real reference I could find that said "yes, I have one, and it works" was a guy in Japan (in Japanese) using one on his OLPC. So I figure this should act as a useful bit of Google bait for anyone in a similar bind. If you want to ask any questions, feel free to post a comment, and I'll answer as best I can.

Busy times and browsers

Some of you probably noticed I haven't been around as much as usual this week. Been doing some major furniture rearrangement here at Monkey Central, so now I have my own desk in a corner of the living room and my feet aren't being warmed by the rear vent of my server machine and cramped by my scanner sitting on top of my printer any more :). Also, we have more shelves. Took a while but it's definitely a lot nicer now.

Edit: illustration is always appreciated, isn't it?

Monkey Central (2008 edition)

This morning I've been looking at the world of browsers again. I'm still keeping Midori up to date in Mandriva; it's a lot more mature than it used to be, now, but it still has some deal breakers for me: if you set it as your default browser then click on a link in another app it opens a new window (not a new tab as I'd prefer), and it has no capacity for ad blocking. It's definitely improving at a fast rate, though.

Epiphany has one deal-breaker: its in-built adblock is nowhere near as good as AdBlock Plus for Firefox. It lets a lot more ads through and doesn't re-flow pages. Using the Webkit build of Epiphany (which you can do pretty easily just by rebuilding the .src.rpm with a different option on Cooker), the adblock extension doesn't work at all. The developers tell me they may have this working by March.

So I'm still stuck on Firefox, sadly. I'd really like to get onto something that's less of a memory hog and better integrated into GNOME. I tried running Firefox 3 beta 2 for a week or so, and it's just a trainwreck...it doesn't seem any faster to me, slower if anything, and whoever designed the new URL autocomplete system thingy was clearly on more crack than Amy Winehouse. That thing is hideous. So I don't have very high hopes for Firefox's future, it just seems to be going the way of Netscape; every new version proclaims that it's faster and sleeker and smoother and the echo chamber blogs all agree and hype it as the Best Thing Ever, till somehow we'll wind up at version 5.0 knee-deep in useless features and options and memory wastage and someone will have to come up with a new Phoenix to start the cycle all over again.

Sign o' the times

Just idly browsing through IGN, noticed a rather interesting juxtaposition. There's a review of Bubble Bobble, which just came out as a downloadable for the Wii. This is notable because it's written in a way which assumes no prior knowledge of the game. Many of the reviews of these ports of old arcade titles are written with the assumption that the reader at least kinda remembers what they're about, but this one, nope.

On the other hand, the review of the second Super Swing Golf game just tosses out a description of it as a 'chibi' game without defining the term at all.

So, timeless classic arcade titles need full-on descriptions, but Japanese character design slang you can assume your readers understand? The times are sure changing :) Maybe this is what it feels like to be last-generation...

Lazyweb: Firefox option?

Lazyweb, O Lazyweb...

Is there a Firefox option to disallow sites from resizing the browser window? I am finding more and more sites which resize my browser when I try and open them (usually sites with Flash), which I find intensely annoying. I want my browser window to be the size I set it to, thank you very much.

Alpha 2 released

So the second alpha is out today - codename Neottia. New NVIDIA and ATI drivers, nouveau driver for NVIDIA cards is available to test, KDE 4.0 is going into Cooker as we speak, and Thierry did automated rebuilds on several thousand packages since the last alpha. Should be fun!

Full details are in the Club story, and download information is in the Wiki page. Get it, test it, tell us what's wrong :)

The BBC, again

BBC journalists do have moments of magnificence that very few can ever hope to match...

"The sight of two men pushing a partially-dressed, pale, stiff body on an office chair raised the suspicions of a passing policeman."

Well...you hope it would. You really, really do.