May 24, 2013

daily log May 24th 2013

  • Woke up to find a fix in my inbox for the XFS setattr bug. Bug turned out to be a few years old, and also highlighted a broken test in xfstests. Two bugs for the price of one.
  • Applied the daily “fix trinity compile on old distros” bug.
  • Briefly looked at Boehm-Demers-Weiser garbage collector with a view to maybe using it in Trinity in the absence of better allocation tracking.
  • Updated a triage script to add all the aliases we have for fedora kernel bugs. Hoping that in time that script can grow to be even more useful.
  • Tried out another potential fix for the RCU problems I’ve been seeing. Seems good so far.
  • Looked at a bunch of “can’t boot” bugs that came in since F18 got rebased to 3.9. Found a thread upstream that seems to be discussing the same bug.
  • Spent the afternoon compiling OCLint out of curiousity. Had no idea how long it would take, or how much it would increase the temperature in my office. After four hours of sitting in a simulated sauna, llvm finished building, but oclint wouldn’t build. Ran out of time to play with it. Something for next week.
  • Seeding improvements from Kees to trinity.git

and now: three day weekend. \o/

daily log May 24th 2013 is a post from: codemonkey.org.uk

Weekly Fedora kernel bug statistics – May 24th 2013

  17 18 19 rawhide  
Open: 276 380 104 66 (826)
Opened since 2013-05-17 4 32 6 3 (45)
Closed since 2013-05-17 3 11 4 3 (21)
Changed since 2013-05-17 16 48 14 5 (83)

Weekly Fedora kernel bug statistics – May 24th 2013 is a post from: codemonkey.org.uk

daily log May 23rd 2013.

  • Continued chasing the xfs bug. Confirmed that with the pending fix in the XFS tree, I can no longer reproduce the bug I saw. Then 3-4 hours later, it popped up again.
    Annoying. Finally got some debug info to Dave Chinner at the end of the day.
    Timezone differences making it even more annoying to debug.

  • Fixed up a compile problem on older distros in trinity since the recent perf changes.
  • Vince Weaver’s perf specific trinity fork is finding more bugs in the perf syscall already [1], [2].
  • Merged trinity patch from Daniel Borkmann to add randomized seccomp filters generated by markov chain. Interesting stuff.
  • Planning for some interesting testing work next week.
  • Started some prep work for trinity 1.2

My 3.10-rc2 outstanding issues:

  • RCU/NOHZ_FULL bugs [1], [2]
  • RCU bootmem allocator trace.http://codemonkey.org.uk/?p=477&preview=true
  • tickbroadcast bootmem allocator trace.
  • XFS Slab corruption (pending fix)
  • XFS xfs_setattr_size assertion
  • T430s Lid events no longer put machine to sleep (actually an old bug since 3.9-rc1, but laptop is out of action until next week)

Puzzling website of the day: pain registers.

daily log May 23rd 2013. is a post from: codemonkey.org.uk

May 23, 2013

Flock deadlines approaching - May 31, 2013

The call for talks (and workshops/sprints/hackfests) for Flock 2013 is due to close on May 31, 2013. We've got some great submissions already, but we really would love some more.

Flock is your chance to present your project or your ideas to the Fedora Community for consideration. Think we should do something differently? This is the forum to do that. Want to influence the future for releases like Red Hat Enterprise Linux and CentOS? It happens in Fedora first. Want to teach others how to do something in Fedora? Propose a workshop. Want to build something new for Fedora? Lead a hackfest!

It is easy and cheap to complain about something, but it is more worthwhile to contribute to solving a problem or making something better. Flock is that chance, and we need you!

To register: http://register.flocktofedora.org/new
To propose a talk/workshop/hackfest: http://register.flocktofedora.org/submit_proposal

For more details on Flock: http://flocktofedora.org/

daily log May 22nd 2013.

Going to try and continue yesterdays daily log format for a while.

  • Grumbled at openvpn changing pathname for ‘plugin’ to ‘plugins’ breaking my vpn script.
  • Bugzilla seemed unhappy. Gave up trying to look at it after it kept timing out.
  • Continued poking at the XFS assertion from yesterday. Downgraded the compiler from f19′s 4.8.0 to 4.7.3. No luck. Couldn’t reproduce on 3.9, so started bisecting. Seemed to be caused by a patch I added recently to work around another XFS bug (slab corruption). I can’t win. Dave Chinner confused by my diagnosis. Bisect take 2 on that tomorrow.
  • Vince Weaver posted a perf_event fuzzer based on trinity. Spent a while reading it over. Neat. Glad to see people taking an idea and running with it in new directions. The more test programs the better.
  • Diagnosed yesterdays “microcode loader got slow” bug. Turned out that I had somehow inadvertently set CONFIG_FW_LOADER_USER_HELPER, which incurs a 60 second timeout.
  • While waiting for bisections, looked over some bugs in coverity’s database. Around 1500 untriaged. Would like to find time to work on that some at some point.

Spent so much of the day bisecting/building/rebooting that I didn’t write much new code today. Ho-hum.

daily log May 22nd 2013. is a post from: codemonkey.org.uk

May 22, 2013

a day in the life..

Got back from vacation today (since last Thursday). Here’s how I spent the day.

  • Caught up (skimmed) the 1500 postings to Linux-kernel and related mailing lists that had accumulated.
  • Reviewed, applied and cleaned up my patch backlog for trinity.
  • Caught up with direct mail that needed a response.
  • Brought my test machines up to 3.10rc2, and restarted tests.
  • Caught another pair of RCU/nohz bugs pretty quickly. [1][2].
  • Checked on the RMA for my failed SSD. Still awaiting shipment of replacement.
  • Received my ultrabay adaptor for my thinkpad. Surprised to find out that a full height SSD would fit into it.
  • Pushed out a 3.9.3 update for F18
  • Looked at bugzilla backlog. Swore a lot. 3.9.x rebase bugs started to trickle in.
  • Rewrote a bunch of code surrounding trinity’s rand() usage.
  • Finally got F19 installed via NFS on new test machine.
  • Hit an XFS assertion.
  • Then hit an i915 pineview kms console blanking bug.
  • Noticed that x86 microcode loading had gotten really slow. It seems to be waiting a whole 60 seconds for each core.

a day in the life.. is a post from: codemonkey.org.uk

May 20, 2013

At the Wikimedia Foundation (for, um, three months now)

Since it was founded 12 years ago this week, Wikipedia has become an indispensable part of the world’s information infrastructure. It’s a kind of public utility: You turn on the faucet and water comes out; you do an Internet search and Wikipedia answers your question. People don’t think much about who creates it, but you should. We do it for you, with love.

Wikimedia Foundation Executive Director Sue Gardner, from http://blog.wikimedia.org/2013/01/14/wikipedia-the-peoples-encyclopedia/

As Sue says, the people who create Wikipedia are terrific. I’m lucky enough to say that I’ve just wrapped up my first three months as their lawyer – as Deputy General Counsel at the Wikimedia Foundation. Consider this the personal announcement I should have made three months ago :)

Wikimania 2012 Group Photograph, by Helpameout, under CC-BY-SA 3.0, available from https://commons.wikimedia.org/wiki/File:Wikimania_2012_Group_Photograph-0001.jpg
Wikimania 2012 Group Photograph, by Helpameout, under CC-BY-SA 3.0.

Greenberg Traurig was terrific for me: Heather has a wealth of knowledge and experience about how to do deals (both open source and otherwise), and through her, I did a lot of interesting work for interesting clients. Giving up that diversity and experience was the hardest part of leaving private practice.

Based on the evidence of the first three months, though, I made a great choice – I’ve replaced diversity of clients with a vast diversity of work; replaced one experienced, thoughtful boss with one of equal skill but different background (so I’m learning new things); and replaced the resources (and distance) of a vast firm with a small but tight and energized team. All of these have been wins. And of course working on behalf of this movement is a great privilege, and (so far) a pleasure. (With no offense to GT, pleasure is rarely part of the package at a large firm.)

The new scope of the work is perhaps the biggest change. Where I previously focused primarily on technology licensing, I’m now an “internet lawyer” in the broadest sense of the word: I, my (great) team, and our various strong outside counsel work on topics from employment contracts, to privacy policies, to headline-grabbing speech issues, to patent/trademark/copyright questions – it is all over the place. This is both challenging, and great fun – I couldn’t ask for a better place to be at this point in my life. (And of course, being always on the side of the community is great too – though I did more of that at Greenberg than many people would assume.)

I don’t expect that this move will have a negative impact on my other work in the broader open source community. If anything, not focusing on licensing all day at work has given me more energy to work on OSI-related things when I get home, and I have more flexibility to travel and speak with and for various communities too. (I’m having great fun being on the mailing lists of literally every known open source license revision community, for example. :)

If you’d like to join us (as we work to get the next 1/2 billion users a month), there are a lot of opportunities open right  now, including one working for me on my team, and some doing interesting work at the overlap between community, tech, and product management. Come on over – you won’t regret it :)

May 18, 2013

Organizing photo libraries

The weather’s picking up so it’s time for spring cleaning around the house. When I moved back to Barcelona three years ago I took with me my old analogue photos and negatives, with the idea of sorting through them at some point and getting them digitized. And while I’m at it, maybe it’s time to pull all my various folders of photos together too and organize them.

Well, I finally started. I grouped the negatives, labeled them by year, put them in individual envelopes, and handed them off to a professional lab to scan them after doing a quick test run on one set (which turned out great, but it’s *really* annoying me that they scan to JPEG by default, charge 40% extra for TIFF, and use a non-multiple-of-8 resolution to scan at which means I can’t losslessly rotate the negatives. Yes, I’m anal.)

So now I pulled together all my various folders of photos, and before I start doing tagging and stuff like that, I want to organize them in a decent folder layout. Googling for ideas pretty much suggests that the way to go is

YYYY/MM/DD

with possibly some description together with the DD

I’m not really happy about that, however, because there are certain things I’d like to be able to do:

  • easily see where photos come from – did I make them ? did I get them from someone ? Did I download them from Facebook ?
  • Are these original files from a camera without editing ?
  • Are these the original scans ? From negatives ? From actual photos ? Or are they retouched, rotated, denoised, …
  • Are these photos SFW ? Can I point my media center slideshow to this directory and have it safely show any photos under it ? (What do you mean, you’ve never snowboarded at night in only your underwear, and mooning the photographer ?) Or maybe not even SFW, but simply watchable and reasonable quality or subject material?

I realize some of these issues can not be resolved simply with a directory layout. But I’m sure some of you must have had similar issues or come up with a slightly better layout ?

Point me in the right direction please.

May 16, 2013

Joe Arnold on Software-defined Storage

At Havana summit they were giving away a paper version of Joe Arnold's "Software Defined Storage with OpenStack Swift". Very useful book for anyone dealing with Swift, I would be glad to pay the cover price of $25. But even more interestingly than tips on care and feeding of Swift, Joe opens the whole book thus:

[...] a de-coupled management system so customers could achieve (1) amazing flexibility in terms of how (and where) they deployed their storage, (2) control of their data without being locked-in to a vendor and (3) private storage at public cloud prices.

These features are the essence of Software Defined Storage (SDS), a new term the meaning of which is being defined. [...] Key aspects of SDS are scalability, adaptability, and the ability to use most any hardware. Through this de-coupling, operators can now make choices on how their storage is scaled and managed and how users can store and access data — all driven programmatically for the entire storage tier, regardless of where the storage resources are deployed.

Parts of the above prompt questions. Firstly, what good is de-coupling in respect to lock-in? SwiftStack effectively locks in by owning the de-coupled management. Sure, you own your data and could, in theory, manage your Swift with another management plane... I do not expect anyone crazy enough to try switching by anything less than standing up a new cluster. In any case, that part is not important, IMHO. The important part is programmatic control.

The phrase "SDS" jumps off "Software-Defined Networking". When SDN came into OpenStack, I was quite skeptical about it. It seemed too much like vendor-driven marketing bullshit. However, as users deployed the Project Formerly Known as OpenStack Quantum, it became clear that SDN answers their needs. The chief need was the ability to shape networks programmatically, overlaid on top of the physical networking plant, in service of the VMs.

Before SDN, when all this cloud thing came about, practitioners also struggled with the definition of it, and in particular the difference from the plain old datacenter virtualization. The difference is the programmatic control throughout. RHEV (now oVirt) eventually grew an API, which blurred the lines. But in OpenStack it was the main feature from the start. So you can manage everything and anything programmatically, including, for example, running on bare hardware. One can say that cloud is "Software-Defined Computing".

So, how does this programmatic thing apply to Swift? Joe had interesting insights cunningly hidden in the book, like these:

In an SDS system, reliability is the responsibility of the software, not the hardware. Replication and data integrity tactics are used to ensure that data does not become corrupt and that lost data is recovered.

[...]

A crucial function of an SDS system is to orchestrate capacity — storage, networking, routing & services — for entire cluster.

Swift covers the first part well already. The second is missing, or "de-coupled".

For galactic fairness, he also wrote things that seem wrong-headed to me:

There is no application sharding or managing volumes which can drive operational knowledge and complexity into applications because the SDS system is one cohesive system. Users do not need to ask for or know 'which storage pool' should be used because there is only one namespace.

The problem with hiding the pools outside of namespace is that they become invisible to the programmatic control as well, and such control is essential to the very definition of SDS. Someone at Amazon made a brilliant decision to make buckets a unit of replication in S3, so they can be linked to a region. In effect this hides the complexity but exposes knowledge that an application needs. Thus, any S3 client can do what Joe coniders SDS, but without any de-coupling, through the namespace and inside the API (or it can chose not to do it and just use a default region, for simplicity).

Joe's employees are hard at work implementing the vision as he outlined it, using the concept of regions that are internal to Swift cluster. The problem for everyone else, however, is how the programmatic control of that stack is exclusive to SwiftStack (with some useful things leaking into Swift, such as changeable replica count).

So, in the end, today Swift offers a solid foundation and parts of an SDS system, but the orchestration is "de-coupled" away elsewhere. Seems like a clear challenge to OpenStack to (re-)create the missing pieces.

P.S. I'd love to see the missing parts inside the Swift API and even namespace, although we have a problem here. Our Accounts and Containers are not guaranteed to live anywhere specifically or even on the same nodes. Changing that would be a step that I prefer. But Joe prefers to give up on plugging programmatic orchestration into the Swift API and just "de-couple" the heck of it. John, our benevolent PTL, seems to toe that line. Maybe they are right.

P.P.S. The deal with the programmatic orchestration is something that "unified" storage projects have to address too. E.g. in GlusterFS a program can issue mkdir(2). Is this programmatic control? No, not enough. Okay, they have glusterfsd nowadays, I can create volfiles in there, is that SDS? That is getting closer!

PSA: OCZ Vector SSD firmware.

My bad luck with hardware continues.

At the beginning of this year, I bought an SSD for my laptop

I previously wrote about the need to update smartmontools, which should now be updated everywhere. One thing I was not aware of at the time however, was that there’s a firmware update available. Had I known this, I would have applied it, because as soon as I hit the “400GB of lifetime writes” counter (coincidence?), it lost the ability to write to any block. It won’t even respond to secure erase commands.

The failure is exacerbated by the fact that the disk contains journalling filesystems in need of recovery. So if anything tries to mount them, it tries to write to the disk, and then falls off the bus requiring a power cycle to even see the disk again. The recovery tools provided by OCZ apparently try to mount every partition it finds during boot up (derp).

So now it’s on its way back to OCZ for reflashing/replacement. Lesson learned.

If you have one of these, and hdparm -I shows you have firmware 1.03, you might want to update it to 2.0. There are flashing tools on ocz’s site.
(in the form of bootable linux images, using an insane desktop that looks like what hacker movies in the 1990s looked like). There’s no guarantee that the new firmware actually fixes whatever problem I’ve hit, due to the lack of changelogs, but given it was the first thing they asked me to try, I’m going to say there’s a strong possibility it’s a known bug.

PSA: OCZ Vector SSD firmware. is a post from: codemonkey.org.uk

CVE-2013-2094. Another day, another fuzzed bug.

Last month Tommi found a kernel bug in perf_swevent_init using trinity, and posted a fix upstream. This apparently turned out to be a local root. Someone released an exploit for it this week. (interesting dissection of the exploit by spender here).

The code to fuzz perf_event_open was added to Trinity in November 2011. Yet for some reason, we only started to hit this recently. The sanitise routine for this syscall is still pretty basic, even after I added a little more to it yesterday. There’s probably more fruit on that branch somewhere.

There’s a date in the exploit code that claims it was written shortly after the affected code was merged upstream in 2010. Assuming that’s true, it’s taken way too long to find this. Trinity should have found this a lot sooner.

CVE-2013-2094. Another day, another fuzzed bug. is a post from: codemonkey.org.uk

May 15, 2013

3.10rc1 testing status

3.10rc1 came out a few days ago. At 12,000 changesets, lwn calls it the busiest such ever. Statements like that usually make me nervous. But things are generally in pretty good shape. Much better than 3.9rc1 was.

  • There has been nowhere near the same level of fallout from trinity this cycle. The only bug I’m reliably hitting has been around for a while (connect vs sendmsg udpv6 oops)
  • I hit a few crash-in-early-boot bugs that were a pain to debug. (fixes still pending merge)
  • Some slab corruption found in XFS. (again, fixes pending merge). There’s some talk on lkml about an ext3 issue with the same symptoms, but I’ve not managed to reproduce this (yet?).

and that’s been about it.

Generally feeling pretty solid. Fedora 19 is still going to ship with 3.9, but we’ll likely have a 3.10.x update on day of release.

3.10rc1 testing status is a post from: codemonkey.org.uk

May 10, 2013

morituri and Hidden Track One Audio

I have tomorrow (saturday) blocked out for a whole day of morituri hacking as I will be home alone.

One of the things a lot of morituri users are puzzled by is its relentless drive to extract every single sample of audio from the CD. Currently, even if it’s a really short pre-gap, and most likely just an inaccurate master or burn, with no useful audio in it.

For me, that was a design goal of morituri – I want to be able to exactly reproduce a CD as is. That is to say, ripping a CD should extract *all* audio from the CD, and it should be possible to make a copy of that CD and then rip that copy, and end up with exactly the same result as from the original CD. (I’m sure there’s a fancy scientific term for that that I can’t remember right now)

To a lot of other people, it seems to be annoying and they don’t like having those small almost empty files lying around.

So I thought I’d do something about that, and that it might be useful as well to analyze my current collection of tracks and figure out what’s in there. Maybe I can find some hidden gems that I hadn’t noticed before?

So I added a quick task to morituri that calculates the maximum sample value (I didn’t want to use my own level element in GStreamer for this as I wanted to make sure it was actual digital zero; this should be done in an element instead though, but I preferred the five minute hack for this one).

And then I ran:

rip debug maxsample /mnt/nas/media/audio/rip/morituri/own/album/*/00*flac

Sadly, that turned up 0 as the biggest sample for all these tracks!

Wait, what? I spent all that time on getting those secret tracks ripped just to get none? That’s not possible! I know some of those tracks!

Maybe the algorithm is wrong. Nope, it works fine on all the regular tracks.

Oh, crap. Maybe morituri has been ripping silence all this time because my CD drive can’t get that data off. Yikes, that would be a bit of egg on my face.

No, it works if I check that Bloc Party track I know about.

Ten minutes of staring at the screen to realize that, while I was outputting names from a variable from the for loop over my arguments, the track I was actually passing to the task was always the first one. Duh. Problem solved.

As for what I found in my collection:

  • a cute radio jingle that brought back memories from a live bootleg I had made myself of Bloem. That’s from over ten years ago, but that must have been around the time I learned about the existence of HTOA and wanted to get one in
  • found unknown HTOA tracks on Art Brut’s Bang Bang Rock & Roll, Mew’s Half the world is watching me; not their best stuff
  • soundscapey or stagesetting tracks on QOTSA’s Songs for the Deaf, Motorpsycho’s Angels and Daemons at play And Blissard; not that worth it (the Blissard track was ok, but really quiet)
  • Pulp hid a single piano chord in a 2 second pre-gap on This is Hardcore; very curious. It’s not an intro to the first track, because it doesn’t fit with the sound at all.
  • Damien Rice hid a demo version of 9 Crimes (the first track) in the pregap; instead of piano and female vocals, he plays guitar and sings all the parts.
  • Got reacquainted with my favourite HTOA tracks: the orchestral quasi-wordless medley on the Luke Haines/Das Capital disc; the first Bloc Party album with a beautiful instrumental (up there with the hidden track at the end of Placebo’s first album; both bands delivering an atypical but stunning moodscape; the beautiful cover of Ben Kenobi’s Theme by Arab Strap on the Cherubs EP (no idea why that landed in my album dir, that needs to be fixed); the silly Soulwax skit for their second album.

Of course, Wikipedia has the last word on everything

I note that they think Pulp recorded a cymbal, not a piano. And now that I see the title of the QOTSA hidden track, I get the joke I think.

In total, on my album collection of 1564 full CD’s, I have 171 HTOA’s ripped, 138 tracks of pure digital silence, and only about 11 are actually useful tracks.

I expected to find more gems in my collection. I’ll go through ep’s, singles and compilations next just to be sure.

But with this code in hand, maybe it’s time to add something to morituri to save the silent HTOA tracks as pure .cue information.

Weekly Fedora kernel bug statistics – May 10th 2013

  17 18 19 rawhide  
Open: 273 348 117 73 (811)
Opened since 2013-05-03 7 17 8 6 (38)
Closed since 2013-05-03 7 20 14 4 (45)
Changed since 2013-05-03 20 41 20 7 (88)

Nothing terribly exciting in this weeks new bugs. Backlog continues to slowly get beaten down. Next week should see a rebase to 3.9 for F18.

Weekly Fedora kernel bug statistics – May 10th 2013 is a post from: codemonkey.org.uk

May 09, 2013

Viva la testing revolution

This is not something to brag about, but apparently I managed to program computers for about 30 years without writing unit tests. Today it's recitified by adding a test to one of my projects voluntarily. I encountered the goodness of build-time testing when working on Jeff Garzik's Project Hail. And of course, OpenStack, including Swift, had them since forever. Those weren't my projects, however.

May 07, 2013

Tuesday Notes

Today was the day of "stuff I can't talk publicly about". Sorry.

* Talked with Ruth about Flock hotels, good progress there! She is kicking butt. :D
* Updated matreshka to 0.4.0 in rawhide, now that gcc has a fix for the ada bug that was blocking it. Tagged gcc override into F19, but the buildroot never regenerated... so I will have to keep waiting to rebuild it there.
* Updated perl-Config-IniFiles to 2.79 in f19 and rawhide (Fix test failures with Pod-Simple-3.28)
* Walked 2.5 miles on the treadmill (I need to lose weight!)
* Updated fedora-logos to 19.0.2 in f19 and rawhide, added new Fedora logo specifically for use with GDM login screen in Fedora 19
* Went to last ultrasound appointment with Pam, baby is coming soon. :)
* Updated perl-Gtk2 to 1.247 in F18, added explicit list of provides to resolve bz 960358

WAS700 WASC700-INST key is PHILIPS123XYZ

My WAC700′s hard drive died a while ago, and my efforts to find a disk image I could use to clone a replacement didn’t pan out, leaving me with three useless WAS700 stations which I wanted to reuse as generic stations playing back from a software ps3mediaserver solution. But the blasted stations were configured to use some now long-dead wifi configuration I wasn’t using anymore and they need the station in order to be reconfigured to use a new wiki config.

This thread looked promising, but no success :-(

On the other hand the source for the WAC700 is available from philips, so with a bit of digging it turns out the WEP key for the WAS700 ad-hoc installation mode network WASC700-INST is PHILIPS123XYZ and not Philips123ABC or PhilipsABC123

With the right key, then the WAC700 emulator works wonderfully to reconfigure the stations, and then they can easily find and playback from the ps3mediaserver via auxillary input->select server.


1. wget http://www.p4c.philips.com/files/w/wac700_05/wac700_05_osf_eng.tgz
2. tar xf wac700_05_osf_eng.tgz
3. strings src_release_r4258_6720_1.2.10_en/linux/work/has/appfs/resources/fpm_firmware/20060221_was5_code_IVT1.2.10_release.rom|grep PHILIPS

Votes for talks at open source conferences

I’ve never been a fan of voting for talks, because it tends to be poorly implemented under the guise of democracy. Of course it’s easy for me to talk, I’ve never organized anything at that scale.

I’ll give two examples on why I feel this way, one of which triggering today’s blog post.

First off, my colleague Marek submitted a talk to Djangocon. The talk was about how to use feat (a toolkit we wrote for livetranscoding) to serve Django pages, but in such a way that they can use Deferreds to remove the concurrency bottleneck of “1 request at a time” per process running Django.

Personally, to me, this is one of the most irritating design choices of Django – from the ground up it was built synchronously (which could have been fine in most places). But the fact that, when you get a request, you have to always synchronously respond to it (and block every other request for that process in the meantime) is a design choice that could have easily been avoided.

In our particular use case, it was really painful. If our website has to do an API request to some other service we don’t control that can easily take 30 seconds, our process throughput suddenly becomes 2 pages per minute. All the while, the server is sitting there waiting.

Yes, you can throw RAM at the problem and start 30 times more processes; or thread out API requests; or farm it out to Celery, and do some back-and-forthing to see when the call’s done. Or do any other number of workarounds for a fundamental design choice.

Since we like Twisted, we preferred to throw Twisted at the problem, and ended up with something that worked.

Anyway, that’s a lot of setup to explain what the talk was about. Marek submitted the talk to DjangoCon, and honestly I didn’t expect it to get much traction because, when you’re inside Django, you think like Django, and you don’t really realize that this is a real problem. Most people who do realize it switch away to something else.

But to my surprise, Marek’s talk was the most-voted talk! I wish I could link to the results, but of course that vote site is no longer online.

I guess I expected that would mean he’d be presenting at DjangoCon this year. So I asked him today when his talk was, and he said “Oh that’s right. I did not get accepted.”

Well, that was a surprise. Of course, the organising committee reserves the right to decide on their own – maybe they just didn’t like the talk. But if you ask your potential visitors to vote, you’d expect the most-voted talk to make it on the schedule no ?

The feedback Marek got from them was surprising too, though. Their first response was that this talk was too similar to another talk, titled “How to combine JavaScript & Django in a smart way”. Now, I’m not a JavaScript expert, but from the title alone I can already tell that it’s very unlikely that these two talks have many similarities beyond the word ‘Django’.

After refuting that point, their second reason was that they wanted more experienced speakers (but they didn’t ask Marek for his experience), and their third reason was that the talk was in previous editions of DjangoCon US/EU (it’s unclear whether they meant his talk or the JavaScript one, but Marek’s definitely wasn’t, and we couldn’t find any mention of the other talk in previous conferences. I’m also not sure why that even matters one way or the other. This email thread was in Polish, so I have to rely on Marek’s interpretation of it)

Personally, my reaction would have been to complain to the organizers or Django maintainers. Marek’s flegmatic attitude was much better though – after such an exchange, he simply doesn’t want to have anything to do with the conference.

He’s probably right – it’s hard to argue with someone who doesn’t want to invite you and is lying about the reasons.

The second example is BCNDevCon, a great conference here in Barcelona, organized by a guy who used to work for Flumotion who I have enormous respect for. I’ve never seen anyone create such a big conference over so little time.

He believes strongly in the democratic aspect, and as far as I can tell constructs the schedule solely based on the votes.

Sadly I didn’t go to the last one, and the reason is simply because I felt that the talks that made it were too obviously corporate. A lot of talks were about Microsoft products, and you could tell that they won votes because people’s coworkers voted on talks. I’m not saying that’s necessarily wrong – given that he worked at our company and has friends here, I’m sure people working here presenting at his conference have also done vote tending. It’s natural to do so. But there should be a way to balance that out.

I think the idea of voting is good, but implementation matters too. Ideally, you would only want people that actually are going to show up to vote. I have no idea how you can ensure that, though. Do you ask people to pre-pay ? Do you ask them to commit to pay if at least 50% of their votes make it in the final schedule, kickstarter-style ?

These two examples are on opposite extremes of voting. One conference simply disregards completely what people vote on. If I had voted or bought a ticket, I would feel lied to. Why waste the time of so many people? The other conference puts so much stock in the vote, that I feel the final result was strongly affected. I seriously doubt all those Windows 8 voters actually showed up.

Does anyone have good experiences with conference voting that did work? Feel free to share!

May 06, 2013

Flock Call For Papers (and Registration) is Open!

For eight years, Fedora users and developers have gathered at an event named for them, the Fedora Users and Developers conference (FUDCon). But we’ve grown, and it’s time for a new approach: Flock.

Flock will bring together the Global Fedora communities for three days of scheduled content with one optional day at the end for open hacking. Unlike the barcamp style we've used in the past for FUDCon, Flock will accept submissions in advance for talks, hackfests, sprints, and workshops. The schedule will be built based on the community's votes on those submissions.

This is a Fedora focused event, but we welcome participation from the entire Free Software community. If you have an idea on how we can improve Fedora, we'd love to hear it!

Dates: August 9-12, 2013
Location: College of Charleston (Charleston, SC, USA)
Website: flocktofedora.org

Both pre-registration and talk submissions are now open! Submissions should be for one of the following:

* Talk (45 minutes)
* Hackfest (2 hours)
* Workshop (2 hours)
* Sprint (2 hours)

You may submit as many topics as you feel qualified to deliver.Suggested topics include but are in no way limited to:

* ARM
* Cloud
* Community
* Design
* Desktop
* Fedora Ambassadors
* Fonts
* Games
* Infrastructure
* Marketing
* Open hardware
* QA
* Security
* Special Interest Groups

Ready to submit a talk or register? Go to http://flock-lmacken.rhcloud.com/.
All submissions must be received by May 31, 2013 at 11:59 p.m. ET.

Information diet weekend

As a slight sequel to my “feed reading is an open web problem” post, so far this weekend I have taken the following information diet steps:

RSS feeds: 610→339 (and counting).

Based on Google’s stats, I’d probably read about a million feed items in Reader. This is just too much. The complaints about attention span in this piece and in The Information Diet1 rang very true. Reader is a huge part of that problem for me. (Close friends will also note that I’ve been mostly off gchat and twitter during the work day since I started the new job, and that’s been great.) So I’ve spent time, and will spend more time soon, pruning this list.

National news feeds: lots→~0; weekly paper news magazines: 0→2; local news feeds: small #? large #?

My friend Ed put in my head a long time ago that national news is not very useful. It riles the passions, but otherwise isn’t helpful: you’re not making the world a better place as a result of knowing more, and you’re not making yourself happier either.2  So you’re better off reading much less national political news, and much less frequently: hence the two new on-paper subscriptions to weekly news magazines.

Besides allowing you to get off the computer(!), the time saved can also be used to focus on things that either make your life better (e.g., happier) or that give you actionable information to resolve problems. To tackle both of those needs, I’d like to curate a set of local news feeds. I’ll be blogging more about this later (including what I’m already reading), but suggestions are welcome. I suspect that will make me much happier (or at least less angry), and present opportunities to actually do things, in ways that the national news obviously never can.

Moved from reader→feedly.

The impending shutdown of Reader was obviously the catalyst for all this change; feedly seems not perfect but pretty solid. I continue to keep an eye on newsblur (still a variety of issues) and feedbin.me (no mature Android client yet), since feedly is still (1) closed source and (2) has no visible business model – leaving it susceptible to the same Reader shutdown problem.

"Two young children picket for the ILGWU carrying placards including 'I Need a Healthy Diet!' outside the Kolodney and Myers Employment Office" by the Kheel Center at Cornell University, used under CC-BY 2.0.
“Two young children picket for the ILGWU carrying placards including ‘I Need a Healthy Diet!’ outside the Kolodney and Myers Employment Office” by the Kheel Center at Cornell University, used under CC-BY 2.0.

Steps still to come:

Separate the necessary from the entertaining

Joe pointed out to me that all news sources aren’t equal. There are feeds you must read in a timely manner (e.g., for me right now, changes in work-critical Wikipedia talk pages), and feeds that can be sampled instead. The traditional solution to this is folders or categories within the same app. But we’re starting to see apps that are optimized for the not-mission-critical entertainment feed stream (Joe specifically recommended Currents). I’d like to play with those apps, and use one of them to further prune my “serious feeds” list.  Recommendations happily accepted.

Improve publication

I do want to participate, in some small way, in the news stream, by creating a stream of outbound articles and commentary on them. I never used Reader’s features for this, because of the walled garden aspect. Many of our tools now make it easy to share out to places like Twitter and Facebook, but that means I’m contributing to the problem for my friends, not helping solve it. I’d like my outbound info to be less McDonalds and more Chez Panisse :) The tools for that aren’t quite there, but this morning I stumbled across readlists, which looks like it is about 90% something I’ve been looking for forever. I’ll keep keeping an eye out, so again: good suggestions for outbound curation tools happily accepted.

What else?

I hate the weasely “ask your audience” blog post ending as much as anyone, but here, I have a genuine curiosity: what else are friends doing for their info diets? I want to eventually get towards the “digital sabbath” but I’m not there yet; other tips/suggestions?

  1. capsule book review: great diagnosis of the problem, pretty poor recommendations for solutions
  2. It’s pretty much a myth that reading the news makes you a better voter: research shows even supposedly high-information voters have already decided well before they read any news, and if for some reason you’re genuinely undecided, you’re better off reading something like ballotpedia than a streaming bunch of horse-race coverage.

May 03, 2013

If I was 16 years younger…

I’d totally try and be the intern for pinboard.

The money is great for a summer job, but that’s not the important part. pinboard seems interesting, it’s a real service, and it’s (I assume) small enough to understand from top to bottom. Contrary to, say, a Google Summer of Code project, you get to touch a real existing service, and from what I can tell from the blog you get to do it with a smart and funny guy.

You’ve got five weeks left; even if you’re in the middle of exams right now, apply!

(And if you do, why not add the features to merge and rename tags while you’re at it?)

Weekly Fedora kernel bug statistics – May 03 2013

  17 18 19 rawhide  
Open: 270 345 126 70 (811)
Opened since 2013-04-26 4 24 9 6 (43)
Closed since 2013-04-26 12 28 8 9 (57)
Changed since 2013-04-26 15 52 18 7 (92)

Weekly Fedora kernel bug statistics – May 03 2013 is a post from: codemonkey.org.uk

May 02, 2013

Thursday Notes

* Fixed nightview in rawhide. Still not entirely sure how.
* Enabled a bunch of kernel bug triage CC aliases, with Toshio & Kevin's help
* Did internal manager paperwork stuff
* Pushed julian-voxforge new package updates
* Research possibilities for secret summit project
* More Flock sponsorship work

May 01, 2013

Wednesday means halfway

* Lots of meetings. LOTS.
* Created new libxdiff to try to eliminate bundling in git and libgit2. Not tested yet, ran out of time.

Feels like an unproductive day.

Converting LibreOffice dialogs to .ui format, 200 conversions milestone

We’ve now reached 200 dialogs and tabpages converted from LibreOffice’s classic fixed widget size and position .src format to the GtkBuilder .ui format. These are still our own widgets, we just reuse the file format and map the Gtk widgets to our own equivalents. I’ve now finally refreshed the original sample screen shots to reflect the current reality.

I estimate we require an additional 200 to 400 .ui files, unless a lot of the existing .src dialogs turn out to be orphaned dialog descriptions that are not in use. (This is unlikely)

The How to conversion guide is still relevant, and help is appreciated.

Additionally, there’s a short list of selected dialogs awaiting review for any HIG compliance issues or general layout improvements. We have a python script as ./bin/lint-ui.py (thanks leighman) to check for basic compliance with guidelines, but there’s room for improvement, e.g. checking that widgets have mnemonic widgets, etc.

April 30, 2013

Tuesday's Notes

* Wrote my monthly internal team status report
* Update librecad to 2.0.0beta5 in the review ticket (and fixed the missing BR: boost-devel)
* Add fixes from librecad to libdxfrw, made new updates
* Had a meeting with Fedora Kernel team and the Sustaining Engineering team, to discuss bug triage
* Converted git-daemon from xinetd to systemd (bz 737183)
* Finished julius-voxforge review
* Posted on flock scheduling concept

April 29, 2013

Monday (and away we go)

* MOAR Flock sponsor work
* Learned how to recycle old vendor loaner systems
* Push several F19 updates to stable
* Do a legal review on Cosmosmash (looks good, as long as it avoids referring to itself as a clone)
* Learned about dmesg --human (or -H) from Karel Zak's blog post. Aliased it to dmesg on my laptop. :)
* Setup Provides/Obsoletes for musixtex bits in texlive (I hope I did it right, the texlive package is... special)
* Wrote a lengthy funding request for Fedora involvement in a new space (is that cryptic enough for you)
* Lots of internal meetings, scheduled some more

Monthly Fedora kernel bug statistics – April 2013

  17 18 19 rawhide  
Open: 274 336 130 66 (806)
Opened since 2013-04-01 31 271 64 16 (382)
Closed since 2013-04-01 37 351 139 19 (546)
Changed since 2013-04-01 55 163 119 27 (364)

Huge number of bug closures this month. Unfortunately several hundred of them are the automated ‘faf’ bugs that were pretty useless.
(1. lots of tainted/virtualbox reports. 2. old kernels. 3. no human attached to them if we need to ask questions, which most of the time we do).
Even discounting those bugs, it’s been quite a productive month, with the total open count around 170 bugs lower than it was a month ago.

Monthly Fedora kernel bug statistics – April 2013 is a post from: codemonkey.org.uk

April 27, 2013

Weekly Fedora kernel bug statistics – April 26th 2013

  17 18 19 rawhide  
Open: 276 344 126 65 (811)
Opened since 2013-04-19 11 208 26 9 (254)
Closed since 2013-04-19 12 223 64 8 (307)
Changed since 2013-04-19 14 57 34 6 (111)

Weekly Fedora kernel bug statistics – April 26th 2013 is a post from: codemonkey.org.uk

Work From Home Friday

Working from home today. More flock sponsorship stuff, Google is committed at the Gold level (hooray for Ruth!).

* Packaged up the julius-voxforge files for review - https://bugzilla.redhat.com/show_bug.cgi?id=957238
* Looked into nightview again, ghostscript is still broken.
* Discussed kernel bug triage options
* Fixed bug where a few R packages were still using ancient and unnecessary scriptlets.
* Made internal slides to explain Flock to the rest of Red Hat

April 25, 2013

Thursday's Status

* The 3d printer is no longer printing properly. I thought it might be an incorrect Z-stop height setting, but if so, I can't seem to get it right. Also, the filament keeps getting jammed and the gears just chew it up and it stops printing. :/ Spent an hour or two trying to get it working again, then gave up.
* Fixed bamf in Fedora 19/rawhide
* Fixed gnomint in Fedora 19/rawhide
* Fixed mygui in Fedora 19/rawhide. Remembered why I dislike CMake.
* Fixed skyviewer in Fedora 19/rawhide
* Fixed most of the issues in nightview, ran into some sort of ghostscript bug (already filed: https://bugzilla.redhat.com/show_bug.cgi?id=921706)
* Fixed tex-musixtex in Fedora 19/rawhide
* Tried to fix matreshka, got it to build cleanly, but it fails %check... :/ Committed my changes to rawhide, hopefully it will inspire someone else to finish.

USB debug cables.

A few years ago, I was fortunate enough to get given a USB EHCI debug cable. With traditional serial ports being a thing of the past that I haven’t seen on a new machine in a long time, it’s been a lifesaver. The number of kernel crashes I’ve been able to capture through using that cable that would have otherwise been lost is some ridiculously high immeasurable number. I’m saying I like this thing, a lot.

So much so that I wanted to buy more of them, so I could not have to keep replugging it around between test machines.
With multiple test machines constantly running, it’s not really a practical solution.

The first problem, they aren’t cheap. $95 each. For basically two USB->serial chips, and some circuitry to make them handshake.
The bigger problem, is that only one place seems to sell them and they’ve been
“out of stock, and in redesign” for a long time now.

I tried emailing the manufacturer Ajaystech, who seem to completely ignore their sales@ email address.

Disappointing.

In the absence of a replacement, I’m going to have to hope that netconsole works well enough on older machines, and in the future, dumps to pstore.

USB debug cables. is a post from: codemonkey.org.uk

April 24, 2013

Wednesday In Notes

* Got the 3d printer working again! Hooray! It is so touchy.
* Built julius packages for f17-f20. That was only outstanding since October 2012. Whoops.
* libdxfrw reviewd and packaged in Fedora (f17-f20)
* Brainstorming on the future of software that isn't in RPM format
* Looked at fixing dragonegg, looks like it needs http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56754
* Looked at LLVM when fixing dragonegg, my eyes hurt now.
* Fedora Packaging Committee Meeting
* More Flock thinking (still waiting on those final dates!)

April 23, 2013

What I did with my Tuesday

* Last night, I went over to visit Ray Strode (and Mo Duffy) with my Lulzbot AO-101 3D printer. I'd managed to break one of the wires on it, and Ray helped me fix it. It still isn't printing properly, but it's not broken as far as we can tell. It isn't extruding plastic reliably, and I strongly suspect the replacement part that we had to install (that part holds the plastic filament against a gear, and the gear turns to "extrude" the plastic filament into the hot end. Going to try a few more things, but then I'm going to reach out to the manufacturer again. This is my first 3d printer, and while it is very cool, it sure is finicky.

* Asked Kevin Fenzi to create "flockpress@" and "flockinfo@" email aliases.
* Observed (and talked a little) during the Fedora Badges IRC discussion
* Sent more emails to possible Flock sponsors
* Fixed clementine in f19/rawhide - https://admin.fedoraproject.org/updates/clementine-1.1.1-3.fc19
* Claimed ownership of volpack, revived in f19/rawhide
* Updated amide to 1.0.4 in f19/rawhide - https://admin.fedoraproject.org/updates/volpack-1.0c7-8.fc19,amide-1.0.4-1.fc19
* Update connman to 1.13 in f19/rawhide - https://admin.fedoraproject.org/updates/connman-1.13-1.fc19
* Fixed a bug in graphviz (f19/rawhide) where the libgvc.pc file was pointing to a non-existant libgraph
* Fixed flowcanvas (f19/rawhide) so that it builds against graphviz 2.3 (thanks FreeBSD!) - https://admin.fedoraproject.org/updates/graphviz-2.30.1-6.fc19,flowcanvas-0.7.1-10.fc19

I have your posix_ipc right here

Greg Holt posted a change to Swift's object server and replicator, which adds a counting semaphore to the server. As best I can tell, the intent is to provide a form of load control, so that no more than N replicators talk to a given server. So:

    global_conf['replication_semaphore'] = [posix_ipc.Semaphore(
        None, flags=posix_ipc.O_CREAT | posix_ipc.O_EXCL,
        initial_value=int(preloaded_app_conf['replication_concurrency']))]
    .......
    try:
        self.replication_semaphore.acquire(0)
    except posix_ipc.BusyError:
        return HTTPServiceUnavailable()
    try:
        ....... replication service goes here
    finally:
        self.replication_semaphore.release()

This appears to be doing the job, but it adds a dependency on posix_ipc. Question arises, are we missing a traditional way to do this?

Since the semaphores are not taken and checked often in this application, once per replication request, something like creating a directory in /var/run, populating it with one file per server instance, and counting them with listdir would be acceptable (even with obvious inexact count), but we need something that cleans up in case of crashes.

Another trick I know is to create a pipe and prime it with N 1-byte tokens, but then again, crash cleanup is not bulletproof.

The best would be to identify an entity in Linux that counts opens. Something in /proc, perhaps? Open it, read it to see the open count, if it is too high, abort. Close when done. Kernel closes it in case of a crash, perfect. Well, I guess I just described POSIX semaphore, again. If only it was a part of Python...

UPDATE: Someone was urging Greg to use multiprocessing.Semaphore. Unfortunately, the docs for that contain omnious warnings of poor crash resistance. Cannot say more without looking at the implementation.

April 22, 2013

Today I ...

* finished the R 3.0.0 rebuild for Fedora 18 - here
* wrote up the initial wiki page for Flock - https://fedoraproject.org/wiki/Flock
* Started reaching out to possible Flock sponsors
* removed all but one SPARC system from my cube
* stayed awake through the entire Staff Meeting!

Weekly Fedora kernel bug statistics – April 19th 2013

I was a little distracted by local events last Friday, so here’s a belated post of the weekly bug stats for the kernel.

  17 18 19 rawhide  
Open: 281 348 166 61 (856)
Opened since 2013-04-12 6 19 21 1 (47)
Closed since 2013-04-12 6 39 10 1 (56)
Changed since 2013-04-12 20 58 28 4 (110)

Weekly Fedora kernel bug statistics – April 19th 2013 is a post from: codemonkey.org.uk

Why feed reading is an open web problem, and what browsers could do about it

I’ve long privately thought that Firefox should treat feed reading as a first-class citizen of the open web, and integrate feed subscribing and reading more deeply into the browser (rather than the lame, useless live bookmarks.) The impending demise of Reader has finally forced me to spit out my thoughts on the issue. They’re less polished than I like when I blog these days, but here you go – may they inspire someone to resuscitate this important part of the open web.

What? Why is this an open web problem?

When I mentioned this on twitter, an ex-mozillian asked me why I think this is the browser’s responsibility, and particularly Mozilla’s. In other words – why is RSS an open web problem? why is it different from, say, email? It’s a fair question, with two main parts.

First, despite what some perceive as the “failure” of RSS, there is obviously  a demand by readers to consume web content as an automatically updated stream, rather than as traditional pages.1 Google Reader users are extreme examples of this, but Facebook users are examples too: they’re no longer just following friends, but companies, celebrities, etc. In other words, once people have identified a news source they are interested in, we know many of them like doing something to “follow” that source, and get updated in some sort of stream of updates. And we know they’re doing this en masse! They’re just not doing it in RSS – they’re doing it in Twitter and Facebook. The fact that people like the reading model pioneered by RSS – of following a company/news source, rather than repeatedly visiting their web site – suggests to me that the widely perceived failure of RSS is not really a failure of RSS, but rather a failure of the user experience of discovering and subscribing to RSS.

Of course, lots of things are broadly felt desires, and aren’t integrated into browsers – take email for example. So why are feeds different? Why should browsers treat RSS as a first-class web citizen in a way they don’t treat other things? I think that the difference is that if closed platforms (not just web sites, but platforms) begins to the only (or even best) way to experience “reading streams of web content”, that is a problem for the web. If my browser doesn’t tightly integrate email, the open web doesn’t suffer. If my browser doesn’t tightly integrate feed discovery and subscription, well, we get exactly what is happening: a mass migration away from consuming (and publishing!) news through the open web, and instead it being channeled into closed, integrated publishing and subscribing stacks like FB and Twitter that give users a good subscribing and reading experience.

To put it another way: Tantek’s definition of the open web (if I may grotesquely simplify it) is a web where publishing content, implementing software that consumes that content, and accessing the content is all open/decentralized. RSS2 is the only existing way to do stream-based reading that meets these requirements. So if you believe (as I do) that reading content delivered in a stream is a central part of the modern web experience, then defending RSS is an important part of defending the open web.

So that’s, roughly, my why. Here’s a bunch of random thoughts on what the how might look like:

Discovery

When you go to CNN on Facebook, “like” – in plain english, with a nice icon – is right up there, front and center. RSS? Not so much. You have to know what the orange icon means (good luck with that!) and find it (either in the website or, back in the day, in the browser toolbar). No wonder no one uses it, when there is no good way to figure out what it means. Again, the failure is not the idea of feeds- the failure is in the way it was presented to users. A browser could do this the brute-force way (is there an RSS feed? do a notice bar to subscribe) but that would probably get irritating fast. It would be better to be smart about it. Have I visited nytimes.com five times today? Or five days in a row? Then give me a notice bar: “hey, we’ve noticed you visit this site an awful lot. Would you like to get updates from it automatically?” (As a bonus, implementing this makes your browser the browser that encourages efficiency. ;)

Subscription

Once you’ve figured out you can subscribe, then what? As it currently stands, someone tells you to click on the orange icon, and you do, and you’re presented with the NASCAR problem, made worse because once you click, you have to create an account. Again, more fail; again, not a problem inherent in RSS, but a problem caused by the browser’s failure to provide an opinionated, useful default.

This is not an easy problem to solve, obviously. My hunch is that the right thing to do is provide a minimum viable product for light web users – possibly by supplementing the current “here are your favorite sites” links with a clean, light reader focused on only the current top headlines. Even without a syncing service behind it, that would still be helpful for those users, and would also encourage publishers to continue treating their feeds as first-class publishing formats (an important goal!).

Obviously solving the NASCAR problem is still hard (as is building a more serious built-in app), but perhaps the rise of browser “app stores” and web intents/web activities might ease it this time around.

Other aspects

There are other aspects to this – reading, social, and provision of reading as a service. I’m not going to get into them here, because, well, I’ve got a day job, and this post is a month late as-is ;) And because the point is primarily (1) improving the RSS experience in the browser needs to be done and (2) some minimum-viable products would go a long way towards making that happen. Less-than-MVPs can be for another day :)

  1. By “RSS” and “feeds” in this post, I really mean the subscribing+reading experience; whether the underlying tech is RSS, Atom, Activity Streams, or whatever is really an implementation detail, as long as anyone can publish to, and read from them, in distributed fashion.
  2. again, in the very broad sense of the word, including more modern open specifications that do basically the same thing

April 19, 2013

Spot's Irregular Status Report

Lately, I've felt a lot of frustration and unhappiness, and that has affected me in a lot of different ways. I'm trying to take steps to turn that around, and one of them is to try to write more about what I'm working on or thinking about.

== Fedora 19 ==
Now that the Alpha is done, I'm in the process of updating my laptop to Fedora 19. Wish me luck!

== Flock ==
I've been working closely with Ruth and Robyn to try to put together a new conference for Fedora Contributors, called Flock. We were waiting on the Red Hat budget to finalize before we started, then when that happened, we found out that there was a good chance that we'd have a very nice conference venue donated to us, so we started doing some very initial planning around that. Unfortunately, that venue wasn't applicable over a weekend, so we couldn't use it. We evaluated several sites as possibilities, one of which was Charleston, SC, which was especially compelling because they were also willing to let us use them as a venue space at no cost.

I spent a lot of time looking at how other Linux distributions run their events (Debian, OpenSUSE, Ubuntu), and trying to base Flock in that model.

One of the main goals of Flock is to bring together as many of our contributors as we can to learn, hack, and improve Fedora. As part of this goal, we want to use as much of the budget as we can to cover travel costs for contributors. We're going to need sponsors to help us do this (Red Hat gave us a generous budget allocation, but it will only go so far). I've been working with Ryan Lerch to make a prospectus PDF, and he finished it up last night. We might still tweak it a bit, but the meat should be fine. Here is a link to it: http://spot.fedorapeople.org/flock/flock-2013-sponsor-prospectus.pdf

We had a pretty productive IRC meeting yesterday to discuss Flock, and we setup two mailing lists (flockinfo, for low-traffic announcements about flock, and flock-planning, a high-traffic mailing list for planning the event).

I talked a bit about the format of the conference, where things are mostly scheduled in advance. Luke Macken has been making an improved registration app that can also handle submissions for talks (or other scheduled things like sprints), based on the work that Ian Weller did for FUDCon Lawrence. I also talked about how we wanted all the talks to be live-streamed, with volunteers coordinating questions from IRC and running a clock.

I also brought up the idea of having a "Social Outing" day at Day 3 (the middle of the schedule driven conference), where the Flock attendees could go do something fun together and build new friendships. People really seemed to like that idea a lot. I can't take credit for it, I stole it from DebConf. :)

Several suggestions came out of that IRC meeting that were very useful (and that I like a lot):

* tatica suggested that we have a scheduled split between talks (45min-1hr) and workshops/sprints/mini-hackfests (2 hrs).
I liked that idea, and proposed that we use the morning for talks, then lunch, then after lunch, scheduled workshops/sprints/mini-hackfests. We already wanted to block off two days at the end for unscheduled hacking, this is in addition to that.
* j_dulaney pointed out that we need good quality audio for streaming talks, something that didn't happen very often in Lawrence.
* inode0 suggested that it would be better if the scheduled part of Flock ended on the weekend, so we are strongly considering
August 7 - 13, 2013 for the dates (August 12 and 13 would be optional "hackfest days" with no assigned schedule in advance).

Because we wanted to get something moving on Flock quickly, I wasn't as open or transparent as I could (and should) have been on what was going on. I'll definitely try to do better on that going forward. From here on out, everything is happening on the mailing lists and IRC meetings. :)

== LibreCAD ==
I packaged up LibreCAD and libdxfrw (dependency) for review in Fedora. libdxfrw got reviewed this morning, and it has some items I need to fix up.

== R ==
Over the last several days, I've been working on updating R to 3.0.0 in Fedora. Normally, my position on updating R is that I push updates for new stable releases to all stable branches of Fedora (and EPEL 5 & 6), but with 3.0.0, because of core changes, it requires that all R modules be rebuilt against R 3.0.0. Initially I was going to just do this for rawhide, but then I thought it might be good to do it for Fedora 19 before it releases. I did EL6 too (there are not very many R modules packaged for EPEL, so it wasn't too hard).

In parallel, there is also a bug in the "kmeans" function in R that wasn't fixed until 3.0.0.
https://bugzilla.redhat.com/show_bug.cgi?id=948083

As a result, I'm going to push R 3.0.0 to Fedora 18 too, which will also require all R modules in Fedora to be rebuilt. This is trickier than it sounds, since most of these modules are dependent upon each other. In doing the initial round of rebuilds, Pierre and I only found one dependency loop (R-GenomicRanges and R-IRanges), which I fixed with a conditional bootstrapping. R is very good about not having these sorts of circular build dependencies, but when you run the R check routines, they often check for things that are not otherwise dependent for the R module to build. This just means we need to conditionalize some BuildRequires as being only needed for the %check section.

Also, since we cannot chain-build (automatically tag builds into the buildroot, then kickoff dependent builds) in any branch except Rawhide, I have to manually kick off a build, then tag it, and then kick off another build. Takes a while. :)

I also want to rebuild things for EL5, but I can't get R to build in the EPEL-5 buildroot, seems like something might be broken with the EL-5 builders, I need to check into that.

== Enlightenment ==
I'm helping Rahul update some of the core E components to their current releases in Fedora 19 and Rawhide.

== Sponsorship ==
I sponsored a new packager into Fedora this week, Lokesh Mandevar. He packaged up spectrwm for Fedora.

== OpenCASCADE ==
I reached out to the OpenCASCADE upstream and asked them to consider:
* Dropping the wording in their existing license which makes it non-free
* Relicensing to a standard license to make OpenCASCADE GPL-compatible (LGPL is the obvious one, but there are plenty of others).

I got a good response from them, they're going to look into it. I hope this results in a positive outcome, because that codebase is pretty interesting and useful for CAD and 3d printing tools.

== Alien Arena ==
I contacted the Alien Arena upstream and asked them if they would be willing to drop the commercial distribution restriction on their content, and they were willing. They couldn't drop the requirement that the alienarena content not be distributed independently, but it isn't separated in Fedora, and that requirement shouldn't be a problem for us. (The reason they can't drop that requirement is because they purchased licenses for some of their content.) It hasn't happened yet, as far as I can see, but it is a good sign of intent.

April 18, 2013

Amazon S3 breaks 2T objects

Techcrunch said it all:

At at AWS Summit in New York today, Amazon announced that its S3 storage service now holds more than 2 trillion objects. That’s up from 1 trillion last June and 1.3 trillion in November [...]. As Amazon’s Chief Evangelist for AWS Jeff Barr notes in a blog post today, it took Amazon six years to grow to get to 1 trillion stored objects, “and less than a year to double that number.” S3, Barr also writes, now regularly sees peaks of more than 1.1 million requests per second.

I don't think all Swift istallations combined come anywhere close, although potentially they should be able to. Pretty easy, actually. Meanwhile, we hit local problems. At the Summit two days ago, a presenter from Korea Telecom said that some of their customers put 50 million (5e7) objects into a Swift container. Naturally, container listings and even lookups become challenging.

April 16, 2013

Facebook Open Hardware

Continuing the Hardware at Havana theme, Facebook showed their "Open Hardware" platform. Like Google, they found it advantageous to design systems for themselves, but unlike Google, they opened the design. Anyone can download the detailed docs and anyone can contribute.

I was sceptical about open source for hardware. The material nature of hardware places a high barrier, so participation tends to be low. Nonetheless, the gentleman at the booth said that someone contributed an ARM server board. It slides into the slot under the drive tray where SAS extender goes in the reference design.

It shows how long I was out of the hardware, but apparently it's completely acceptable nowadays to place drives along the airflow. The Facebook tray is very much like Dell design that way, only using 3.5" drives. Fans are removable on drive trays but not on server bricks.

In a strange twist, Facebook trays take 12V DC power. Not telco-style 48V, nor contentional AC.

Dell C5220/C5125

Saw a cute thing at the "Havana" OpenStack Summit: a Dell ARM prototype. It is based on C5125 module for C5220 chassis. If you go to Dell website and check their gallery, it's readily apparent how busy the design of the x86-based module is when compared with the ARM (the x86 is AMD; Dell have an even worse module based on Intel -- 50% thicker).

Another thing, I love the way drives are bunched on trays. People keep chasing the individually accessible drives with the corresponding hit to density. If one abandons the hot-swap mania, he can do these nice trays. Also! This is the first time I see someone intelligently using the 2.5" drives. Only took 15 years. About the only critique I would level on the thing is that the air goes over the drives in sequence. There's a bit of spare width for staggering, so a few cheap baffles and/or raisers could even it out, but someone at Dell decided not to bother.

BTW, Dell people told me that the prototype is not slated for production. They are waiting for the 64-bit ARM. Typical. ARM servers are always one year away, for many years now. In the time we heard promises of ARM servers SpaceX built whole rocket and started launching it, but Netwinder seems harder to reproduce than Saturn V.

April 12, 2013

Weekly Fedora kernel bug statistics – April 12th 2013

  17 18 19 rawhide  
Open: 278 371 152 62 (863)
Opened since 2013-04-05 9 22 7 3 (41)
Closed since 2013-04-05 7 40 62 3 (112)
Changed since 2013-04-05 20 67 95 18 (200)

Weekly Fedora kernel bug statistics – April 12th 2013 is a post from: codemonkey.org.uk

April 08, 2013

It's Time Again!

My fellow Berliners! There's another Berlin Open Source Meetup scheduled for this Sunday! You are invited!

See you on Sunday!

April 05, 2013

Weekly Fedora kernel bug statistics – April 05 2013

  17 18 19 rawhide  
Open: 279 393 212 49 (933)
Opened since 2013-03-29 14 20 10 3 (47)
Closed since 2013-03-29 12 52 5 8 (77)
Changed since 2013-03-29 29 132 178 5 (344)

Ton of F18 bugs closed out, and the rawhide bugs became F19 bugs now that we’ve branched.

Weekly Fedora kernel bug statistics – April 05 2013 is a post from: codemonkey.org.uk

April 03, 2013

More Gtk+ in the cloud

Since my last blog entry I’ve worked a bit more on broadway, and the openshift-broadway cartridge for openshift.

New in this version:

  • Bumped all modules to the final gnome 3.8 releases
  • Chrome support (this used to work, but had regressed)
  • Password protection for the broadway session (optional)
  • Added a simple app launcher to the default session
  • Added gedit, gnome-terminal and glade to build
  • Made it work with https (using a terminating ssl proxy in openshift)
  • General bugfixes and robustness

Here is a video of this:

Click here to view the embedded video.

Trinity success rate.

Last week I mentioned that March had been a busy month for Trinity.
It wasn’t until I went to update the bugs found list that I realised just how busy. Some historical context: Throughout 2012, Trinity found a dozen or so bugs in a month. (Plus probably some that I wasn’t cc’d on).
The last few months, it’s been finding a lot more. February, it found 65 bugs. March, at least 85. (Actually even more, my count is based on unique Subject: lines in emails to linux-kernel, and sometimes multiple bugs were found/reported within the same thread. And again, I may have missed mails that I wasn’t cc’d on).

This doesn’t necessarily mean that the kernel is getting buggier, but more likely, that trinity is getting a lot better at finding bugs.
Several new features introduced last month are responsible for a slew of the most recently reported bugs, and many of them were in code that was introduced into the kernel a while ago. (See for eg, the recent namespace bugs).

With the volume of bugs found getting so high, it’s too much work to do things like tracking down whether each bug got fixed and moving it to the ‘fixed’ page, so I’m probably going to have to come up with some better way of tracking bugs found with Trinity.

Trinity success rate. is a post from: codemonkey.org.uk

March 30, 2013

on open source development and disagreements

So I've been involved in a recent dispute on the wayland project, with a person I'd classify as a poisonous person. Basically a contributor who was doing more damage than good, and was causing unneeded disturbances. I won't comment any further on that here, but just setting the scene for writing this.

So everytime something like this happens in a project, there emerges from the woodwork, people who claim that having public discussions about these sort of things is bad for open source, or makes us look like a crowd of juvenile developers, also how you never see this thing on closed sourced projects, or with open-source projects developer in-house and thrown over the wall. I've also recently seen this crop up when Linus flamed people, and everyone wondered why he didn't do it on some sort of private list or something.

Now I can only think these people are one of:

a) never worked in a company on a major closed source project.

b) if they have, its been top down development, where managers are telling them what to do, and maybe some architect dude has drawn a load of pretty pictures and docs. Of course the architect is never wrong, but its above your pay grade to talk to someone of such authority, so when you find problems with the architecture you hack around them instead of growing a pair and standing your ground, or else you aren't good enough to notice anything wrong.

I've seen plenty of companies where developers leave due to in-fighting or transfer to a different department, this stuff never comes out and you all are none the wiser.

So open source doesn't have top-down development, its all bottom up, most contributors to major projects do so with some ideas of what they want, but they aren't been driven by a management chain. However it means that there is generally nobody to force someone into their views, and when two people collide (or in this case, one person and everyone else), something has to give, and its best to give in public, so nobody can say it was some sort of cabal or closed decision.

Now open-source is about seeing the sausage making process, you get to see all the bits of stuff you don't want to think go into the sausages, you have to face a lot more truth, and you have to be willing to stand up against things without mummy manager to back you up. You can't have all the nice benefits of open-source development without having the bad side, the public blowups and discussion, it just can't work like that. If we take all those discussions to private lists or emails, where do you draw the line, are the people on that private list some sort of shadowy cabal overlords? Do you want an open-source development model that isn't public?

I'm sure people will say why can't we all just get along? and why can't everyone act mature? well a) we are human, b) there is no HR department frontend blocking the people at the gate, there's no interview process to weed out undesirable traits before they join the project. So when someone submits patches that work you generally accept them as a contributor, and it can take a while before you realise they are doing more harm than good, at which point its going to be public.

March 29, 2013

Monthly Fedora kernel bug statistics – March 2013

I figured in addition to the weekly bug reports, I’m going to start posting an end of month report too, to get a bigger picture of what we’re dealing with in a typical month. I might even stop doing the weekly reports at some point.

  17 18 19 rawhide  
Open: 271 443 16 244 (974)
Opened since 2013-03-01 31 177 19 32 (259)
Closed since 2013-03-01 200 102 4 48 (354)
Changed since 2013-03-01 91 246 15 53 (405)

So the highlights this month: We closed out 354, and got 259 new bugs. 405 other bugs had their status change in some way.
This also doesn’t count some residual post-EOL F16 activity.

It also doesn’t count a lot of f19/rawhide activity where we find bugs ourselves and report & get them fixed upstream.
During March, Trinity found a *lot* of bugs. Separate post on that next week.

Monthly Fedora kernel bug statistics – March 2013 is a post from: codemonkey.org.uk

Weekly Fedora kernel bug statistics – March 29th 2013

  17 18 19 rawhide  
Open: 271 443 16 244 (974)
Opened since 2013-03-22 7 39 13 5 (64)
Closed since 2013-03-22 98 16 2 2 (118)
Changed since 2013-03-22 28 75 13 14 (130)

Lots of closing out of old bugs in the last week.

Weekly Fedora kernel bug statistics – March 29th 2013 is a post from: codemonkey.org.uk

March 22, 2013

Weekly Fedora kernel bug statistics – March 22nd 2013

  17 18 19 rawhide  
Open: 359 422 8 241 (1030)
Opened since 2013-03-15 6 41 9 5 (61)
Closed since 2013-03-15 20 53 2 12 (87)
Changed since 2013-03-15 33 92 6 17 (148)

The arrival of F19 bugs.
Most notable thing this past week has been yet more intel-pstate bugs. That new cpufreq driver has been blowing up in a number of ways recently. Some of them are now fixed, but there’s still 1-2 outstanding issues.

Weekly Fedora kernel bug statistics – March 22nd 2013 is a post from: codemonkey.org.uk

March 19, 2013

Broadway on openshift

I spent some time this week making a clean build of Gtk 3 with the broadway backend for deploying on openshift. It works suprisingly well, given that I’m in sweden and the openshift servers are somewhere in the US:

Click here to view the embedded video.

I made the video instead of linking to the app itself because only one person at a time can use the actual app. However, you can easily create your own openshift module based on this as I made the openshift code availible at gitthub. Just clone that and push to your diy based openshift app. Play with it! Build your favourite gtk3 app! Share it!

It lacks authentication/encryption and there are some minor issues, but it proves that broadway works reasonably well even over the internet.

March 17, 2013

One year on OSI’s board (aka one year in OSI’s licensing)

Since it has been roughly one year since Mozilla nominated me to sit on the OSI board, I thought I’d recap what I’ve done over the course of the year. It hasn’t been a perfect year by any stretch, but I’m pretty happy with what we’ve done and I think we’re pointed in the right direction. Because my primary public responsibility on the board has been chairing the license committee, this can also sort of double as a review of the last year in license-discuss/license-review (though there is lots of stuff done by other members of the community that doesn’t show up here yet).

Outside of licensing, my work has consisted mostly of cheerleading the hard work of others on the board (like Deb’s hard work on our upcoming DC meeting and the work of many people on our membership initiative) – I haven’t listed each instance of that here.

"Open Source" Water
Wikimedia Deutschland offices in Berlin, during the tour at the Chapters Meeting 2011“, by Mike Peel, under CC-BY-SA 2.5. (Mind you, CC is not actually OSI-certified ;)

Some things that got done:

  • Drafted and published a beta Code of Conduct for license-discuss/license-review. This was drafted with the intent that it will eventually be a CoC for all of OSI, but we’re still formally beta-testing it in the license committee community.
  • Revised the opensource.org/licenses landing page to make it more useful to visitors who are not familiar with open source. Also poked and prodded others to do various improvements to the FAQ, which now has categories and a few improved questions.
  • Revised OSI’s history page. The main changes were to update it to reflect the past  5-6 years, but also to make it more readable and more positive.
  • Oversaw a number of license submissions. I can’t take much credit for these- the community does most of the heavy lifting. But the group submitted in the past year include AROS, MOSL, “No Nonsense“, and CeCILL. The new EUPL is in the pipeline as well.
  • Engaged Greenberg Traurig as outside counsel to OSI, and organized and hosted a board face-to-face meeting at Greenberg’s San Francisco office space.
  • Helped keep lines of communication open (and hopefully improving!) with SPDX and OKFN.

Some projects are important, but incomplete:

Some projects never really got off  the ground:

  • I wanted to get GNOME to join OSI as an affiliate. This, very indirectly, spurred the history page revision mentioned above, but otherwise never really got anywhere.
  • I wanted to have OSI reach out to the authors of the CPOL and push them to improve it or adopt an existing license. That never happened.
  • I wanted to figure out how to encourage github to require a license for new projects, but got no traction.

I hope that this sounds like a pretty good year- it isn’t perfect but it felt like a good start to me, giving us some things we can build on for future years.

That said, it shouldn’t be up to just me – if you think this kind of thing sounds useful  for the broader open source community, you can help :)

  • Join license-discuss, or, if you’re more sensitive to mail traffic, but still want to help with the committee’s most important work, join license-review, which focuses on approving/rejecting proposed new licenses.
  • Become a member! Easier than joining license-discuss  ;) and provides both fiscal and moral support to the organization.

March 15, 2013

Weekly Fedora kernel bug statistics – March 15th 2013

  17 18 rawhide  
Open: 370 437 246 (1053)
Opened since 2013-03-08 7 60 10 (77)
Closed since 2013-03-08 74 27 11 (112)
Changed since 2013-03-08 142 127 26 (295)

This week: closure of lots of old bugs that have been sitting around for too long without response (or already fixed).
F19 has now branched, so next week I expect I’ll have to add an extra column to the reports to accommodate any new bugs.

Lots of the new bugs this week were for CVE tracking. Many of those issues were discovered with trinity.

Weekly Fedora kernel bug statistics – March 15th 2013 is a post from: codemonkey.org.uk

March 14, 2013

What Are We Breaking Now?

End of February devconf.cz took place in Brno, Czech Republic. At the conference Kay Sievers, Harald Hoyer and I did two presentations about our work on systemd and about the systemd Journal. These talks were taped and the recordings are now available online.

First, here's our talk about What Are We Breaking Now?, in which we try to give an overview on what we are working on currently in the systemd context, and what we expect to do in the next few months. We cover Predictable Network Interface Names, the Boot Loader Spec, kdbus, the Apps framework, and more.

And then, I did my second talk about The systemd Journal, with a focus on how to practically make use of journalctl, as a day-to-day tool for administrators (these practical bits start around 28:40). The commands demoed here are all explained in an earlier blog story of mine.

Unfortunately, the audience questions are sometimes hard or impossible to understand from the videos, and sometimes the text on the slides is hard to read, but I still believe that the two talks are quite interesting.

March 13, 2013

Converting LibreOffice dialogs to .ui format, 150 conversions milestone

We’ve now reached 150 dialogs and tabpages converted from LibreOffice’s classic fixed widget size and position .src format to the GtkBuilder .ui editable by glade format. I’m getting pretty sick of dialogs by now, dialog fatigue setting in :-)

If you want to help, my last post on the topic, at the 100 conversion mark, has a tutorial on how to do a conversion, and my FOSDEM slides might be helpful too.

March 12, 2013

opentype “locl” Localized Forms

Linux LibreOffice 4.1.0 will now support opentype localized forms. Here’s a screenshot of the Linux Libertine O font applied to the same text on each line. One line’s language set to Serbian, the other to Russian. The language of the text gets propagated down correctly to the underlying text layout engine to allow the correct localized Serbian forms to be rendered.

March 11, 2013

3.9-rc Trinity fallout.

As Linus alluded to in his 3.9-rc2 announcement, I had some ‘fun’ last week with Trinity.
It started when I noticed that there was a bug that iknowthis kept hitting that Trinity wasn’t, so I did some testing to figure out why. The difference was that iknowthis occasionally mangles the pathnames it passes to syscalls, exercising -ENOENT paths etc.
The code change to make trinity do the same thing was pretty trivial. What I wasn’t expecting however was the fallout.
Instead of just reproducing that one bug, Trinity found a whole bunch. (Yet again proving the utility of having two different tools doing the same thing). Some of them were the same root cause, but there were at least 4-5 kernel patches needed in total. Most of these issues are fixed in rc2, there’s still some sysfs issue that hasn’t been nailed down, and the pipe bug needs more diagnosis apparently.

A few other ‘fun’ changes landed in Trinity.git last week

  • Tommi added the beginnings of his rework of ioctl fuzzing, and has been seeing results from that already.

  • Just for kicks, last week I got intrigued by the possibilities of unicode fuzzing. So now occasionally, trinity generates a buffer of mangled unicode.
    The kernel shouldn’t really ever care about this, because it just treats it as a byte-stream, never parsing it. But it might do some fun things when we pass that buffer to for eg, execve as an argv parameter.

3.9-rc Trinity fallout. is a post from: codemonkey.org.uk

March 09, 2013

Yahoo versus Linode in datacenter networking

I just saw a blog post today that trumpets improvements that Linode made to their datacenter networks. It looks pretty good, bandwidth is improved, etc. I would never know any better, except that a month ago I was at a presentation by Yihua He of Yahoo. And, for a layman like me, it seemed that he was quite a bit ahead.

Link-wise, the He-style Yahoo networking is very similar to Linode's Nextgen. It uses a so-called "leaf-spine" architecture with Top-of-Rack (ToR) switches being the leaves. Linode's post did not articulate clearly the advantages that He architure brings: increased bisection that accomodates growing east-west traffic and reduction in oversubscription, but I presume Linode customers will reap improvements in that area too. However, there's one curious difference: Linode allowed a vendor to provide the balancing that leaf-spine requires, whereas He went with a COTS gear.

He accomplishes this by using routers as spines where Linode uses Cisco Nexus 5000. As it turns out, using iBGP works in place of whatever proprietary magic Cisco employs. He simply gives each ToR a private ASN.

Once you go with COTS gear, you are free from the yoke of Cisco. You can mix and match as you with, build datacenters incrementally, and run any kind of monitoring apps you like. And the whole thing is much, much cheaper.

To be sure, there are issues as well. For example, depending on how magical Cisco is, you might be able to migrate VMs at will throughout the datacenter. In case of He, you can't. Although, using OpenStack with floating IPs probably accomplishes a useful result in such a case anyway.

But in the end, if you can use an open solution, is it ever worth using the vendor solution? And I definitely didn't expect Linode and Yahoo feature in this ironic role reversal. Which one of them is the scrappy startup and which one is a bureaucratic monster courted by lock-in vendors?

March 08, 2013

Changes…

Today is my last day at Red Hat.

I’ve been here for almost fifteen years, and it’s been a heckuva ride. I’ve seen GNOME and the Linux desktop grow from from pretty minimal beginings to what it is today.

RHAD Labs logo

The beginning…

Looking back on it, I’m so proud of the work that the Red Hat desktop team has accomplished during this time. We absolutely moved the bar on what was possible and enabled so many things. So many technologies that are basic building blocks of the modern Linux desktop were incubated within this group. Many of the things that people take for granted didn’t start in a vacuum but started because someone stepped up to make it happen.  Just off the top of my head dbus, metacity, gtk2, aiglx, systemd, pulseaudio, pango, cairo, gconf, orbit, gio/gvfs, gnome-shell, hal, NetworkManager, evince, PolicyKit and so many more got their start here.  Along the way, we made lifelong friends and built communities around these projects, to the point where others have taken them far beyond their humble beginnings.  To me, that’s what makes Free Software so awesome, and the Free desktops in particular so special.

GNOME Love

I am looking forward to being a part of the GNOME community in the future as a civilian, though I won’t be fixing any more TreeView bugs. (-:

The team is now in Christian Schaller’s capable hands and the engineering group at Red Hat is stronger than it has ever been. I’m looking forward to watching from the sidelines to see what they do next!