Dear Lazyweb,

Everyone knows mailman, that friendly neighborhood character dressed in Python, who delivers your mailbox clogging maillists through sleet, hail and snow, and all other sorts of nasty weather. But what do we call them in groups?

Mailman is also short for Mail Manager. It's also officially still a proper noun, as unfortunately, Mailman hasn't become the Xerox of inbox cloggers. But it's phonetically equivalent to another common English word, and shares a similar morphology. So is it mailmen or mailmans? What do you think?

(There is no wrong answer.)

Let's lay down a few canonical rules

Taken shamelessly from


 /kəˈnɒnɪkəl/ [kuh-non-i-kuhl]
–adjective Also, ca⋅non⋅ic.
1. pertaining to, established by, or conforming to a canon or canons.
2. included in the canon of the Bible.
3. authorized; recognized; accepted: canonical works.
4. Mathematics. (of an equation, coordinate, etc.) in simplest or standard form.
5. following the pattern of a musical canon.
6. Linguistics. (of a form or pattern) characteristic, general or basic: the canonical form of the past tense; a canonical syllable pattern.
7. canonicals, garments prescribed by canon law for clergy when officiating.
1150–1200; ME (< AF) < ML canōnicālis, equiv. to canōnic(us) (see canon 2 ) + -ālis -al

It's pretty obvious from this what Shuttleworth may have had in mind when he formed Canonical LTD. But i'm not going to blog about how poorly this name was chosen to represent the brown menace. Instead, we're going to have a little bit of linguistic fun.

Words are really just arbitrary strings of phonemes which can be grouped together as morphemes, to which we attach meaning and history. Phonemes are basic units of sound, and morphemes are basic units of meaning. (I have a t-shirt that says 'morpheme addict'). There's a third factor that can come into play here, called semantics, and change of semantics is one way language can evolve. For example, you can see here that 'canon' has been modified to mean more than just the church and things pertaining to certain Cathedral-like tendencies of the Catholic church. It can also mean official rules or musical prosody.

It's certain that a particular brown menace has been using a Cathedral like culture in developing a rather popular Linux distribution. They certainly are relying on a bit of semantic meaning to support their strong brand presence. As any good Fedora user or Red Hatter knows, one way to dilute a menace is to dilute its brand. Every time you talk about Canonical, you give strength to their brand. But every time you use the word canonical, you dilute their brand!

Make sure to use canonical everywhere you can. A good rule of thumb is to replace the words official and common practice with canonical, or just refer to the rules as the canon. For Fedora, this means we might need to make a few changes. For example, the Fedora Packaging Guidelines would become the Packaging Canon. Since it's now a religious canon, openSuSE and Mandriva will also be bound to them or burn in their heathen ways. Therefore, the name Fedora can be dropped. Any time there is a change in Infrastructure, it would no longer be an official change, rather than a canonical change. If you are a Red Hatter, there would no longer be company internal memos and public statements, rather rumours and canon. Remember, the more we use the term in everyday usage, the less power the brown menace has. For Great Justice.

Random Musing

Ah brand is usually understood as the identity that corporations and other entities go by. I've mused often in private and public about how our ability to identify people is changing rapidly from the biological methods we've used in the past hundreds of thousands of years. Rather than using identifiers such as gait, eye colour, hair colour, height, smell, facial recognition and such, we are moving into a society that uses trademarks, logos, campaigns, slogans, rules of grammar or word preference, graphic design, and product. Brand is also something very important to both Red Hat and Fedora as well, our marketing presence revolves around it.

The origin of the word 'brand' is interesting. From it's germanic roots, it comes from the word for fire. It's even a false cognate between Dutch and English, as well as the Scandinavian languages. The word for a brand in Dutch is merk and in other Germanic languages, it's something very similar. This word can also share the meaning 'to notice' or in otherwords, to be aware of. We even use it in English, in the word trademark. A native speaker of one of these languages might accidentally use the word 'mark' to mean a brand, thinking that the word 'brand' is already taken. It seems a bit strange.

This kind of semantic change is actually pretty common when languages are isolated and change is introduced. In our case here, brand comes from raising cattle. When a ranch would have a herd of cattle, they would brand their cows and steers with a metal rod bent into the shape of their logo and heated in fire. The logo would be etched into the cattle hide, which would hopefully prevent honest people from dealing in stolen cattle, as well as certifying the origin of the cattle itself. Nowadays, this practice is considered inhumane and cruel. Yet that is the origin of the word, and in a way where everything we handle comes from.

Eat your heart out PETA.

World of Goo

I'm back from Holland, and there'll be alot more in this space once i find myself a decent cup of coffee and write about it.

Meanwhile, on a whim, after hearing some friends rave (madly) about it, i decided to try out World of Goo. Let's recap what a normal Wintendo user might have to go through to install a game, and compare it to my experience.

  1. Click on the download link in the browser
  2. Figure out a cryptic warning about running programs out of the browser
  3. Find the file on the file system on some download directory, and double click on it
  4. Answer a bunch of questions about where to install it, and possibly go through several UAC warnings
  5. Run it from the Start menu.

Here's what i had to do to get it to run in Fedora 10.

  1. Click on the download link in the browser
  2. Click yes, that i wanted to just open it with the package installer program
  3. Click yes that i did want to install world of goo via PackageKit.
  4. Get a warning about an unknown GPG key/missing GPG key, so i have to type in the root password
  5. Wait for the installation to finish, and run it.

It really doesn't get easier. I didn't have to fool around with any audio or video settings at all. Dependencies were all taken care of. I didn't have to rifle through the file system or decide where i wanted to install the package. I got only one security warning, and that's because the package was unsigned. It even works in my weird ass window manager.

If easy installation procedures just worked in Wintendo, we would know exactly who was responsible. There would have been a team of UI engineers all working in concert to produce a single interface that might or might not work. Everything would have been highly coordinated, and it would have taken 3 years for the entire process to go through. In contrast, a similar, albeit slightly better experience has been produced by a number of loosley connected developers. One team made PackageKit, another team made Firefox, another team made RPM and Yum, and another team put together World of Goo. I highly doubt the World of Goo developers had to ask key developers at Red Hat how to produce a working one click install for their program. Rather, all they needed to do is make an RPM, use standard components on the Linux Desktop, and produce a working experience.

I think the year of the Linux Desktop is long gone.... maybe we should start predicting the year of Microsoft's death.

Fosdem Report: Stallmanism Edition

The second day of Fosdem went significantly better than the first. After a dinner of steak tartare and a good full 8 hours of sleep, i was more than ready to go the next morning. I spent most of the time wandering around picking up conversations with different people i hadn't seen in a while. I also managed to snag a pretty cool demo of both ReactOS and Haiku.

Fosdem was more business related for me though. Rather than spending any time at the booth, i decided to take most of the time and have planned meetings with various people. I started off with a brainstorming session with Max, going over what's going to be in EKG in the future. It seems i'm going to be doing a two week hacking session on this in the very near future.

I also had a long chat with Thomas, Armel, and Pierre from Fedora-FR about getting Fedora-FR more involved with fedora directly. The problem always is language and the difficulties it sometimes creates. We're planning on looking at more ways to encourage the Fedora using Francophone world to mingle with the rest of the Fedora using world. We'll also start looking at more ways to keep everyone up to date on what Fedora-FR has been up to.

Finally, i got a chance to hang out with Jan Wildeboer, which never fails to disappoint. This time around, he's making up his own religion, Stallmanism, the world's only GPLv3+ religion. (I hope the bible will be licensed under a suitable CC one.) I am going to furiously compete with him to get more recruits on the facebook group. Currently, i'm short one, so please join by clicking on this link, if you have facebook.

Facebook: Causes | Stallmanism

Quotes from Jan

"Could you please take a picture? This is Fosdem and the network is actually working?"

Brussel and Belgian Beer

Right now i'm in the Janson room at Fosdem about to cheer Max on for his presentation. I'm following the Distribution track, which is made up of three 'major' distributions. 'Major' implies openSuSE, Fedora, and Exherbo. I guess when your website says 'Why this distro is not for you' in big letters, you automatically acquire 'major' status. In any case, i'm really looking forward to what they have to say.

Just 5 minutes ago, Joe 'zonker' Brockmeier finished up a presentation about some of the work openSuSE has been doing lately. They say imitation is the best form of flattery, and about 80% of what he presented seemed to be ripped off directly from the Fedora game plan. It's really a great compliment to our hard work that another group is so willing to pick up the same strategy. It's also great to see them continue to open up, in general, and look for more ways to collaborate between other distros and support other projects as well.

Last night was the Beer Event, and right now, i'm finally recovering. While the rest of the time at Fosdem is great for following specific things and getting work done, the Beer Event is really a great opportunity to meet other open source developers from all over the spectrum. What inevitably happens is that you go around from one room to another, and the next thing you know, you're discussing religion with two danes at 5 am, and you've lost count of how many starkbiers you've drank.

That said, i've discovered, that with my meagre 2 years of french in high school, i can speak enough french at 5 am in order to explain 'software libre' to the taxi driver. I suppose that's the only important part of any language one would ever need.

Converting Fedora CVS to Git

So far on this trip, i've managed to spend most of my time hanging around the Netherlands with that easy laziness that Dutch hackers seem to have. I can never stress how nice of the place the Netherlands is to visit. It's too bad that there's no English word for 'gezelligheid'. Even the spell checker's first recommendation for that is 'intelligentsia' which is very much not the same thing.

In spite of gezelligheid, (or perhaps because of it), i've managed to get a working CVS to git converter working. This is not a generic general purpose converter, because hey, there are many available, and i'm even using one. The goal of this converter is to go from Fedora CVS to Git and vica versa. There are a number of advantages to this. For starters, it makes it much easier to view the history of the RPM, but there are many other advantages too. Here are some other advantages:

Take me to the Code! Enough of the techno-babble!

Still here...? Good.

  • Forking new branches could be theoretically easier, to test out new features, and perhaps branch for Fedora N and Fedora N+1
  • Cherry picking patches from one Fedora Release branch into another
  • Rebasing changes from test branches to Fedora releases
  • Git is far better than CVS

Also, another reason for doing it this way is that the git tree that the developer makes is inherently local to his or her system. This does not require everyone to migrate their projects over. It's also not meant to be a final answer on how to convert. There has been alot of talk about newer, fancier, and shinier ways to implement RPM building from upstream source packages. Since this is in Fedora Devshell, the goal is to accomodate multiple ideas as testing grounds to see which one works.

In any case, here is how it works. I will post directions below if you want to try it out. Rather than using some complicated trickery to turn one CVS tree (namely /rpms/) into a git repo, i turn each branch into a git repo instead. I begin with /rpms//devel, and create a linear history out of that. Then i create more linear histories for each branch. Finally, from the devel branch, i fetch the other branches into it. Last but not least, i save a copy of the original CVS checkout, because there are some operations that are best done from CVS itself. Fortunately for the developer, this is all automated.

I have a list of features that i've been talking to kanarip about adding to this, that will probably show up in the not too far future. Meanwhile, this code needs testing. The Fedora CVS is full of hacks and workarounds from over the years. Let's see how much of this actually works. If you're interested in using this at all for your RPM development, grab a copy, fire it up, and let me know what breaks and what works. The best thing to do is use the following test plan. (I'll copy this to the wiki too.)

  1. Pull the latest git tree from the master branch
  2. Set up your running environment
  3. Pull from the Fedora CVS as an anonymous user and make it .trial.1
  4. Pull again but with your login credentials, and make it .trial.2
  5. Use your favorite git history browser and verify that things look ok.
  6. Make sure that there are no discrepencies between the two trials.

Finally, use the trac instance setup to send in bug reports. I'll be trying to keep up on them, Fosdem schedule permitting.


He's in the Netherlands and he brought his towel

Once again, i find myself in my favourite place in the world, the Netherlands. I've already found my schedule to busy as all heck before i even landed. Here's a sneak preview of what i'll be up to:

  • Catching up with some friendly developers in their squat in Amsterdam
  • Running off to Fosdem in Brussels for the weekend
  • Catching up on the backlog of Devshell development i have to do
  • Squeeze in my schoolwork somewhere in between
  • A mystery announcement i will probably make sometime in a couple of weeks from now. By the time i make it, i suspect i'll owe someone quite a bit of beer and filet american (that's raw meat for you Americans).
  • Visiting friends in Wageningen, where i was this past summer.

Blog reports will (hopefully) be forthcoming (provided jet lag doesn't catch up with me in some horrible ugly fashion).

UPDATE: I shouldn't blog while jet lagged apparently. Corrections have been made.