Pictures of depression

A warning light is pulsing on the control panel in front of you, but it can wait. You’ll get to it in a moment. So many things to do.

A polite, persistent bleeping began at some point. You weren’t paying enough attention to recall when. It’s ever so slightly out of phase with the warning light.

You feel a dull rumbling through the seat, the floor, between your joints. The room shifts on its axis, as if it’s falling away from under you.

Darkness. A klaxon splutters and honks. Rotating beacons cut the room into contorted still images. Orange, blue, orange, blue.

You watch a wall puncture, crack, and tear. The air around you whistles out into silence.

Metal grinds through metal. It would sound like two trains carving through each other, but for the vacuum.

Then the walls peel away.

Floating. Alone. Adrift. Bewildered.

In depression, no one can hear you scream.


Late last year, I had another crash. (Episode is a silly word.) I should’ve seen it coming. Or, I did see it coming, but pretty much anything else short of anchovies is more pleasant than actually dealing with it.

I have no right or reason to be depressed. There are contributing factors, for sure, but no root cause. In every other respect, life is grand. But that’s not how depression works. It’s a parasite, sucking out every feeling until you’re a dead-eyed husk… except guilt. That one it nurtures.

What’s weird is having a graphical representation of the fall. Check it out: Metadata! The quantified self!

Physical memory utilisation on SLIVER

This is a collectd chart of the RAM utilisation in my desktop computer. SLIVER has two big monitors, a nice video card, proper headphones, and so on. It’s where the work gets done, and it’s a dead zone from late November to mid February. My GitHub activity chart looks much the same.

Things improved in February, but I’m still taking a break from work. I need to get my shit together, and don’t want to disappoint anyone if I hit another wall. See that gap in March? Another wall!

But I’m out of the dead zone.

On good days, I’ve been seeing friends, doing personal projects, science experiments, and learning new things. On bad days, sleeping, watching television, reloading web pages. I’m still trading the occasional people-heavy event for a couple of bad days to “recover”. Pfft. That’ll get better.

It sucks being away from work. Lots of big changes and exciting things going on. But I’m grateful for the support, understanding, and time away. Back soon.

– — –

The big difference this time around is hope. Psychologically, I know I can beat depression a hundred times worse, because I did. Financially, I can survive a siege of non-functional depression because I’ve had three years to build a war chest to outlast it. Personally and professionally, I’m more confident because I know where I fit, and what I need to learn.

So, it’s been a shitty few months. But it’s going to be okay.

2001: A Space Baby

Posted in General | Tagged | 5 Comments

A(nother) new era of WordPress

The other night at WordPress Sydney, I dropped a five minute brain-dump about some cool things going on in the web ecosystem that herald a new era of WordPress. That’s a decent enough excuse to blog for the first time in two years, right?

I became a WordPress user 9 years ago, not long after the impressive 2.0 release. I was a happy pybloxsom user, but WordPress 2.0 hit a sweet spot of convenience, ease of use, and compelling features. It was impossible to ignore: I signed up for Linode just so I could use WordPress. You’re reading the same blog on (almost) the same Linode, 9 years later!

WordPress 2.0


Fast forward to 2015 and WordPress powers 20% of the web. It’s still here because it is a great product.

It’s a great product because it’s built by a vibrant, diverse Open Source community with a fantastic core team, that cares deeply about user experience, that mentors and empowers new contributors (and grooms or cajoles them to become leaders), and isn’t afraid of the ever-changing web.

Another reason for the long term success of WordPress is that it’s built on the unkillable cockroach of the world wide web: PHP.

I won’t expound on the deficiencies of PHP in this post. Suffice to say that WordPress has thrived on PHP’s ubiquity and ease of adoption, while suffering its mediocrity and recent (albeit now firmly interrupted) stagnation.


The HipHop Virtual Machine is Facebook’s high performance PHP runtime. They started work on an alternative because PHP is… wait for it… not very efficient.

Unless you’ve goofed something up, the slowest part of your PHP-based application should be PHP itself. Other parts of your stack may exhibit scaling problems that affect response times, but in terms of raw performance, PHP is the piggy in the middle of your web server and data stores.

“But like I said, performance isn’t everything.” — Andi Gutmans

What is the practical implication of “performance isn’t everything”? Slow response times, unhappy users, more servers, increased power utilisation, climate change, and death.

Facebook’s project was released in 2010 as the HipHop compiler, which transpiled PHP code into C++ code, which was then compiled into a gigantic monolithic binary, HTTP server included.

In early 2013, HipHop was superseded by HHVM, a jitting virtual machine. It still seemed pretty weird and awkward on the surface, but by late 2013 the HHVM developers added support for FastCGI.

So today, deployment of HHVM looks and feels familiar to anyone who has used php-fpm.

Want to strap a rocket to your WordPress platform? I strongly recommend experimenting with HHVM, if not putting it into production… like, say, Wikipedia.


Not content with nuking PHP runtime stagnation, the HHVM developers decided to throw some dynamite in the pants of PHP language stagnation by announcing their new Hack language. It’s a bunch of incremental improvements to PHP, bringing modern features to the language in a familiar way.

Imagine you could get in a DeLorean, go back to 2005, and take care of PHP development properly. You’d end up with something like Hack.

Hack brings performance opportunities to the table that the current PHP language alone could not. You’ve heard all those JavaScript hipsters (hi!) extolling the virtues of asynchronous programming, right? Hack can do that, without what some describe as “callback hell”.

Asynchronous programming means you can do things while you wait. Such as… turning database rows into HTML while more database rows are coming down the wire. Which is pretty much what WordPress does. Among other things.

Based on the WordPress team’s conservative approach to PHP dependency updates, it’s unlikely we’ll see WordPress using Hack any time soon. But it has let the PHP community (and particularly Zend) taste the chill wind of irrelevance, so PHP is moving again.


Much closer to WordPress itself, the big change on the horizon is WP-API, which turns your favourite publishing platform into a complete and easy-to-use publishing API.

If you’re not familiar with APIs, think about it this way: If you cut off all the user interface bits of WordPress, but kept all the commands for managing your data, and then made them really easy to use from other applications or web sites, you’d have a WordPress API.

But what’s the point of stripping off all the user interface bits of WordPress? Aren’t they the famously good bits? Well, yes. But you could make even better ones built on top of the API!

Today, there’s a huge amount of PHP code in WordPress dedicated to making the admin user interface so damn good. There’s also a lot of JavaScript code involved, making it nice and interactive in your browser.

With WP-API, you could get rid of all that PHP code, do less work on the server, and build the entire admin user interface in the browser with JavaScript. That might sound strange, but it’s how most modern web applications are built today. WordPress can adapt… again!

One of the things I love about WordPress is that you can make it look like anything you wish. Most of the sites I’ve worked on don’t look anything like traditional blogs. WP-API kicks that up a notch.

If you’ve ever built a theme, you’ll know about “the loop”. It’s the way WordPress exposes data to themes, in the form of a PHP API, and lots of themers find it frustrating. Instead of WordPress saying, “here are the posts you wanted, do what you like”, it makes you work within the loop API, which drip-feeds posts to you one at a time.

WP-API completely inverts that. You ask WordPress for the data you want — say, the first ten posts in May — then what you do with it, and how, is 100% up to you.

There’s way more potential for a WordPress API, though. A fully-featured mobile client, integration with legacy publishing systems at your newspaper, custom posting interfaces for specific kinds of users, etc., etc., etc.

The best bit is that WP-API is going to be part of WordPress. It’s a matter of “when”, not “if”, and core WordPress features are being built today with the WP-API merge in mind.


According to its creators, “React is a JavaScript library for building user interfaces”, but it’s way cooler than that. If you’re building complex, interactive interfaces (like, say, the admin back-end of a publishing platform), the React way of thinking is fireworks by the megaton.

For all the hype it enjoys today, Facebook launched React in 2013 to immense wailing and gnashing of teeth. It mixed HTML (presentation) and JavaScript (logic) in a way that reminded developers of the bad old days of PHP. They couldn’t see past it. Some still can’t. But that was always a facile distraction from the key ideas that inspired React.

The guts beneath most user interfaces, on the web or desktop, look like a mad scientist’s chemistry lab. Glass everywhere, weird stuff bubbling over a Bunsen burner at one end, an indecipherable, interdependent maze of piping, and dangerous chemical reactions… you’d probably lose a hand if you moved anything.

React is a champagne pyramid compared to the mad chemistry lab of traditional events and data-binding.

It stresses a one-way flow: Data goes in one end, user interface comes out the other. Data is transformed into interface definitions by components that represent logical chunks of your application, such as a tool bar, notification, or comment form.

Want to make a change? Instead of manipulating a specific part of the user interface, just change the data. The whole user interface will be rebuilt — sounds crazy, right? — but only the changes will be rendered.

The one-way data flow through logical components makes React-based code easy to read, easy to reason about, and cranks your web interface to Ludicrous Speed.

Other libraries and frameworks are already borrowing ideas, but based on adoption to date, number of related projects, and quality of maintenance, I reckon React itself will stick around too.

Connecting the Dots

It won’t happen overnight, but WP-API will dramatically reduce the amount of active PHP code in WordPress, starting with the admin back-end. It will become a JavaScript app that talks to the WP-API sooner than anyone suspects.

Front-end (read: theme) development will change at a slower pace, because rendering HTML on the server side is still the right thing to do for performance and search. But themers will have the option to ditch the traditional loop for an internal, non-remoting version of the WP-API.

There’ll be some mostly-dead code maintained for backwards compatibility (because that’s how the dev team rolls), but on the whole, the PHP side of WordPress will be a lean, mean, API-hosting machine.

Which means there’s going to be even more JavaScript involved. Reckon that’s going to be built the same way as today? Nuh-uh. One taste of React in front of WP-API, and I reckon the jQuery and Backbone era will be finished.

In WordPress itself, most of this will affect how the admin back-end is built, but we’ll also see some great WordPress-as-application examples in the near future. Think Parse-style app development, but with WordPress as the Open Source, self-hosted, user-controlled API services layer behind the scenes.

What about HHVM? You’re going to want your lean, mean, API-hosting machine to run fast and, in some cases, scale big. Unless the PHP team surprises everyone by embracing the JVM, I reckon the future looks more like HHVM than FPM (even with touted PHP 7 performance improvements).

Once HHVM is popular enough, having side-by-side PHP and Hack implementations of  core WordPress data grinding functions will begin to look attractive. If you’ve got MySQL on one side, a JSON consumer on the other, and asynchronous I/O available in between, you may as well do it efficiently. (Maybe PHP will adopt async/await. See you in 2020?)


Look, what I’m trying to say is that it’s a pretty good time to be caught up in the world of WordPress, isn’t it? :-)

Champagne Pyramid

Posted in General | Tagged , , , , , , , | 21 Comments

A #tbldownunder tip jar for Pia

Update: Cool, now there’s a more official way to contribute back to the #tbldownunder project! The 6% of donations raised by this tip jar will be transferred over soon. Thanks so much for your help! :-)

A year ago, when Pia thought it might be cool to bring Tim Berners-Lee to Australia for 2013, she didn’t foresee quite how much work the project would involve.

Interesting and prominent public figures like TBL attract rather large fees for speaking appearances, so Pia rallied together a group of sponsors to help out. You can see the list of (awesome) sponsors and the (impressive) list of Tim’s appearances on the TBL Down Under tour information page.

Pia has volunteered hundreds of hours of her time to pull together the project; wrangle sponsors, minders and media requests; and assist with the tour as TBL has travelled through New Zealand and Australia.

But in addition to her time and energy, Pia also put up a large sum of her own money to see the project through, hoping that late sponsorship agreements would cover her risk.

Please thank Pia for bringing Tim Berners-Lee to Australia and New Zealand by making a quick donation to help cover her financial contribution to the project.

While I won’t reveal how much Pia has invested without her permission, the percentage report will let you know how close we are to meeting the target. :-) (If you’re concerned that I might have some financial interest in doing this, please note that Pia and I are no longer married.)

Thanks Pia, and thank you for contributing to the tip jar!

Posted in General | Tagged , , | 4 Comments

A Sexual Awakening

Posted in General | Tagged | 4 Comments

QotD: Jon Corbet on and Linux Australia

In summary, LCA remains unique in its combination of strongly technical talks, freedom-oriented and hands-on orientation, wide variety of topics covered, and infectious Australian humor. There is a reason some of us seem to end up there every year despite the painful air-travel experiences required. Linux Australia has put together a structure that allows the conference to be handed off to a new team in a new city every year, bringing a fresh view while upholding the standards set in the previous years.

— LWN’s Jon Corbet on, An LCA 2012 Summary

Posted in Quote of the Day | Tagged , , , | Leave a comment

Depression, and the fight of my life

I’ve never really been sure how to say “I have depression”. It’s not like I have it. It comes and it goes, and usually it has me, not the other way around. I’d say, “I’m depressed”, but right now I’m not. Do I say, “I’m prone to depression”? The word “prone” seems appropriate on a number of levels, but no.

Today, I’m fighting depression. And winning.

Every experience of depression is different, but for what it’s worth, you might find this story worth reading. I hope it helps you fight depression in your life, be it yours or that of someone close to you.

When you’ve got to feel it in your bones

Some people refer to feelings associated with depression as anthropomorphic avatars, such as their black dog, stalking shadow, or dark passenger (hopefully without the Dexter connotation). For me, it has always been an insidious evil, a cancer within, and rather like my arthritis — both conditions arrived at about the same time, with roughly the same effect.

One night in my late teens, I awoke to the most intense pain I had yet experienced. My left knee and ankle were roaring emergency signals back to my brain with such ferocity, I couldn’t even tell you if it was dull or sharp. Tears were spurting from my eyes, and I didn’t have enough breath to scream. Unable to move, I banged as hard as I could on the wall behind my head.

Soon enough, my father and stepmother woke and came downstairs to my room. Dad was asking questions, but I still couldn’t speak. My knuckles were white, face contorted, right leg out straight to the toes, left leg raised and bent at the knee. I pointed at my left knee and let out a whimper.

My stepmother decided to take control of the situation. She bent down to forcefully straighten my left leg, completely smashing my record for the most intense pain I had yet experienced.

I had the classic fairytale stepmother: Jealous, duplicitous, manipulative, evil. I don’t say that lightly. By comparison, my stepfather was merely a violent alcoholic. (So now you’re beginning to see some contributing family circumstances…)

I have had a few acute arthritis attacks like this over the years, but more recently it is just an inconvenience. I have to be careful not to provoke it. Sometimes get the vague sense that I should take an umbrella.

The first cut is the deepest

My first experience with depression was similar. During my last two years at school, I felt a growing, previously unimaginable, newly inconsolable sadness. There wasn’t any one reason that I put my finger on. Plenty of correlation, very little causation.

I was well off, went to a good private school, had lots of friends and things that I loved to do: What right did I have to be unhappy?

As it got worse, friends would say, “Why are you so quiet?” and “You’re no fun to be around” and “You should just snap out of it”. But it’s true: I wasn’t fun to be around. I was a morose motherfucker. I went to fewer and fewer gatherings, and received fewer and fewer invitations.

Then I stopped going to school altogether. For weeks. Months. No one called. Not even the school, which prided itself on “pastoral care”.

One day, during the trial HSC exams, I got a phone call from one of my friends. Had I heard the news? One of our classmates had taken his life. Was I okay? I got another call, and then another. Suddenly, with one student gone for months and another gone forever, the “school community” was taking notice.

I wasn’t close to Lucas Wood. We didn’t share a circle of friends, but knew each other through cadets and music. It seems almost absurd to say that Lucas “saved” me, but right at that time I was closer to giving up than I have ever been since, and his actions prompted the intervention. In part, I am here because Lucas isn’t, and that’s hard to forget.

I returned to school for the rest of the year, mostly to shoot and edit the Year 12 leaving video and visit the counselor. There wasn’t much to say to my friends. I was charitably invited to a post-school getaway, which was fun, but we didn’t stay in touch.

This experience (plus a massive, negative culture shift with an awful new principal and head of music) is why I rarely talk about my age, or where I went to school. Few of my friends know at all, let alone first hand. Not talking about it eventually became a habit.

But things are changing: I went to Barker College, graduated in 1996, and I’m 32 years old.

I don’t care if it hurts, I want to have control

Since my first experience of depression, I’ve had some fantastic ups and awful downs, and managed to achieve some great things despite periods of nothingness. But I functioned, performed and achieved only at its mercy.

Instead of fighting, I declared surrender, ceded authority, and allowed it to define my choices. I don’t say that to lay the blame for my actions (or, more often, inaction) on depression as an external force. It is part of me, and I was complicit. My worst failure was to let depression (and contributing factors) become habitual.

Watch your thoughts, for they become words.
Watch your words, for they become actions.
Watch your actions, for they become habits.
Watch your habits, for they become character.
Watch your character, for it becomes your destiny.

After a long bout of truly awful depression, becoming seriously non-functional in the process, things are looking up. The change began in the middle of last year, as pinholes of light in the darkness. I finally kicked open the door in April.

The key, for me, was two words: “I can”. I can fight this. I can adopt better habits to fight it long term, and stop it from owning me again. I can feel better. I can sleep better. I can eat better. I can lose weight. I can talk to people. I can beat this.

So, step-by-step, I did.

I started waking up at the same time every morning. Making the bed. Going for a walk. Having a shower. Getting dressed. Eating breakfast. Maintaining a to-do list. Getting out of the house at least once a day. Cooking dinner. Not looking at computer or TV screens late at night. Going to bed at a sensible time.

If that sounds ridiculous to you, then imagine how bad it was before. Most of the time I didn’t want to get out of bed. I’d rather sleep than hurt all day. If I did, I wouldn’t dress. I’d distract myself with things that might have felt slightly productive. I’d eat total crap. I’d go to bed only when absolutely exhausted, usually in the early morning, because laying awake in bed meant letting my brain run without distraction.

I didn’t give up, and it started working.

Months later, I exercise every morning, keep my apartment neat and tidy, have a wonderful morning routine and a proper place for everything (using my mild OCD for good, not evil).

I cut sugar out of my diet (almost entirely by not consuming huge energy drinks, which come with all kinds of other problems). I eat breakfast and keep to sensible portions most of the time. I drink lots of water.

I’m 30kg lighter. I’m wearing 36″ jeans, down from 42″. I threw away my old belt, and have already moved a belt-hole down on my new one. I’m wearing clothes I haven’t for years.

I’m slowly apologising to the people I failed while I was very deeply depressed over the last few years. This is probably the most “12 step” part of the journey, but it’s important to me. It means I’m taking responsibility for what happened, and taking responsibility for not letting it happen again.

I am even deriving satisfaction and enjoyment from activities and people. That was a distant memory and unlikely fantasy only 6-12 months ago.

Not to mention that I moved to Sydney for a great job, which I pretty much asked to be created for me. “I’d like to save you a recruiting fee: Let me tell you more about why I’d be good for your company” are not the words of a man in the depths of depression!

Now it’s not so much “I can”, as it is “Holy shit, I fucking am!”

Show me your teeth

I’ve hinted at the social anxiety involved in my depression, but here’s an appropriately ludicrous example: my teeth.

Until a few weeks ago, I had large, visible holes on two of my right teeth. I felt hideously self-conscious about them. So every time I’d smile, cue the internal monologue.

Have they noticed them, or are they just being polite? Maybe they hadn’t seen me recently and just thought it was a piece of spinach. But if they saw me this week, then they’d know it wasn’t spinach. But I can’t do anything about it because I’m worried about going to the dentist, and I don’t have enough money, and what else will need to be done? Why can’t I pay for some stupid holes to be fixed? Why can’t I provide for my family, and why can’t I deal with this shit, and why am I so useless?

Immediate un-smile. That’s a crazy negative feedback loop for a half-second smile.

But for $350 and an hour sitting down, now I just smile… and I’ve returned to the dentist since. :-)


Not having much faith in the institution of marriage, it surprised me when I decided I wanted to make that commitment. The risk of my depression breaking things meant I had avoided all kinds of commitments over the years. So should it be a surprise that depression was a contributing factor to the end of our marriage?

I don’t think it’s particularly respectful to discuss the end of a marriage publicly, but there’s two things to say which relate to my depression:

While I’m profoundly sad (and, frankly, embarrassed) about our marriage ending, the grief isn’t all-consuming. It almost was, but my own changes have given me room and strength for compartmentalisation. I can weather grief and sadness without depression. That’s a new thing. It’s pretty amazing, all things considered.

If you see me, and I appear happier than you’ve seen for some time, it’s because of what I’ve found, not what I’ve lost. Please don’t confuse the high of rediscovering my strength for the faux freedom offered by the end of a relationship. It would not offer due respect to either situation.


Though I’ve been planning and writing this post in my head for a while, one of the reasons I chose to post it today is R U OK? Day: “It’s so simple. In the time it takes to have a coffee, you can start a conversation that could change a life.”

Asking is a big deal, even if you don’t get an entirely truthful answer. Merely having the concern and taking the time to reach out might be significant and helpful in itself.

I’ll try to answer any questions in the comments.

Posted in General | Tagged , , | 49 Comments

However vast the darkness, we must supply our own light

Playboy: If life is so purposeless, do you feel that it’s worth living?

Kubrick: Yes, for those of us who manage somehow to cope with our mortality. The very meaninglessness of life forces man to create his own meaning.

Children, of course, begin life with an untarnished sense of wonder, a capacity to experience total joy at something as simple as the greenness of a leaf; but as they grow older, the awareness of death and decay begins to impinge on their consciousness and subtly erode their joie de vivre, their idealism — and their assumption of immortality.

As a child matures, he sees death and pain everywhere about him, and begins to lose faith in the ultimate goodness of man. But if he’s reasonably strong — and lucky — he can emerge from this twilight of the soul into a rebirth of life’s élan.

Both because of and in spite of his awareness of the meaninglessness of life, he can forge a fresh sense of purpose and affirmation. He may not recapture the same pure sense of wonder he was born with, but he can shape something far more enduring and sustaining.

The most terrifying fact of the universe is not that it is hostile but that it is indifferent; but if we can come to terms with this indifference and accept the challenges of life within the boundaries of death — however mutable man may be able to make them — our existence as a species can have genuine meaning and fulfillment.

However vast the darkness, we must supply our own light.

— Stanley Kubrick, Playboy Interview with Eric Nordern, September 1968

Posted in Quote of the Day | Tagged , | Leave a comment

Parting ways

After nine years together, Pia and I are separating. This is a mutual and amicable decision, and we wanted everyone to know that we’re both okay. Pia has also written about it.

Although it’s a rough time in many ways, and both of us will greatly appreciate the support and company of our friends as a result, there are some silver linings.

One is that Pia and I are still great friends, and unless we royally screw up this process, we have every opportunity to continue being the very best of friends. That’s certainly what we’re aiming for, anyway.

Another is that I’ll be moving to Sydney relatively soon, and will have more opportunities to catch up with all my friends there. Yass has been wonderful, but a bit lonely at times. Pia is planning to stick around the Canberra area for the foreseeable future.

Ultimately, we’re doing okay. There’s pain, of course, but not much weirdness. Time has and will heal those wounds. As Pia says, you can still invite us to the same parties. :-)

Posted in General | Comments Off on Parting ways

Trying to will a world into existence

From James Cameron’s introduction to an early scriptment of Strange Days:

At the beginning of any writing project is the agonizing period in which nebulous ideas dance before the mind’s eye like memories of a dream, and vaporous vague shapes take on human form and begin to answer to their names.

Trying to will a world into existence. I circle around it, nibbling at the edges, writing notes about the social infrastructure and expounding to no one in particular about the themes of the thing.

Then slowly a change happens. Without warning, it becomes easier to write a scene than to write notes about the scene. I start sticking words in the mouths of characters who are still mannequins, forcing them to move and to walk. Slowly their movements become more human.

The curve inflects upward, the pace increases. The characters begin to say things in their own words. By the end of this period I’m writing ten pages a day. The last day becomes endless, often stretching round the clock to the following noon. The curve becomes almost vertical as the thing seems to come alive. I become a witness only, a court reporter getting it down as fast as I can.

Posted in General | Tagged , , , | Leave a comment

Timeline: It’s 2009… and they have a plan

Note: This post is part seven of a series of thoughts on the relationship between Canonical and GNOME.


The GNOME User Experience Hackfest of October 2008 spawned a science project to build a new user experience — GNOME Shell — and based on striking similarity in design, appears to have inspired Canonical’s private work on a “messaging menu” stack for persistent notifications.

By early December, too late for the GNOME 2.26 module proposal period, a plan existed to ship the messaging menu in the next Ubuntu release. Both Mark Shuttleworth and Ted Gould subsequently blogged about the design, but no code existed in the public sphere.


January 5, 2009: Ted Gould writes about application indicators — a step beyond just having persistent notifications in the messaging menu:

One thing that kept bothering me in the GNOME UI Hackfest was how little data applications export out to the desktop. […]

What I’d like to put forward is the idea of little flags that applications can hold up to say what they’re thinking or doing, which I’m going to call indicators. […]

First off I want to build something simple (start small, think big), the messaging indicator, which will mostly consist of a GNOME panel applet.

January 8, 2009: In a surprisingly highly-anticipated event at CES Las Vegas, Palm announces the Prē smartphone and its new mobile operating system, webOS. In later reviews, the notification system is widely praised as better than those found in Android and iOS.

February 18, 2009: That code exists for Canonical’s fancy new messaging menu and notification concepts is first revealed with their upload to the “Jaunty Jackalope” development branch. Design and architecture specs for Notify OSD are published on the Ubuntu wiki.

February 21, 2009: Mark Shuttleworth announces that the new work is available in Ubuntu:

Together with notify-osd, we’ve uploaded a new panel indicator which is used to provide a way to respond to messaging events, such as email and IRC pings.

A commenter asks, “Will canonical/ubuntu help on the new gnome-shell proyect [sic]?”

Yes, we helped by sending most of our user experience team to the user experience sprints, and have folks at the UI hackfests. We’re working on notifications in a way that will fit with both GNOME and KDE, and will contribute that at And we’re working on the panel and other pieces. We’ll package up the new gnome-shell in due course, but will wait to see what the best defaults for Ubuntu are.

Later in the comments, Mark points out that, “There will be a lot of new work coming from this team, though, and the best place to get it will be Ubuntu ;-)”

March 2, 2009: The GNOME 2.28 development series and module proposal period begin. Neither notify-osd or libindicate/indicator-applet are proposed for inclusion.

March 10, 2009: Mark Shuttleworth files a wishlist bug on Empathy to suggest it use Ubuntu’s new persistent notifications. Empathy developer Dafydd Harries replies:

I don’t know what a “messaging indicator” is. Is there any documentation on what libnotify does and how to use it? A quick search doesn’t turn up anything useful.

Mark helpfully ropes in Ted Gould to answer any questions:

libindicate (not libnotify) is a library for indicators, and the messaging indicator is the first of those. Ted Gould would be the best person to speak with. He says there’s some documentation in the package in 9.04, not much more to go on, sorry.

Sjoerd Simons tries to be encouraging under the circumstances:

We’re always happy to try and improve empathy’s user experience. The information you’ve given is a bit limited though. […]

Maybe you or Ted could explain how libindicate/indicators would improve things for Empathy? Screenshots/documentations/mockups/examples are appreciated, patches even more so :)

Also is libindicate something more gnome applications might start using in the near future? Or would it be an external dependency for gnome just for empathy’s benefit?

To which Ted replies with some links and documentation, but the bug chatter ends.

March 18, 2009: GNOME 2.26 is released.

March 31, 2009: A design specification for the messaging menu is published on the Ubuntu wiki.

April 2, 2009: Without a lot of forward movement since July (GUADEC) or October (Boston Summit and UX Hackfest), the release team decide to shake things up with a wide-ranging proposed plan for GNOME 3.0, written in release manager Vincent Untz’s signature franglish:

So let’s go to the core topic and discuss what the GNOME 3.0 effort should be. We propose the following list of areas to focus our efforts on:

As already mentioned, this is an ambitious plan and it will only be realized if everybody comes out and helps.

In terms of schedule, the release team are bullish but realistic:

Of course, we should be prepared to consider the fact that GNOME 2.30 might not be good enough for us to call it 3.0. […] That being said, we want the community to try as hard as possible to make GNOME 2.30 = GNOME 3.0 a success.

There is an immense amount of discussion, as you’d expect for a significant, project-wide release, revamp and rejuvenation plan.

April 5, 2009: Almost one month after Mark Shuttleworth suggested Empathy support Ubuntu’s new persistent notifications, James Westby provides a patch. Some less-than-diplomatic complaints are raised about the platform-specific nature of libindicate –it’s not even based on a specification yet!

Xavier Claessens (not generally known for subtlety or a calm demeanour) asks:

Is there a discussion somewhere to propose libindicate as external dep of GNOME 2.28? I think it’s the very first step, I don’t think it’s wise to accept such patch before getting feedback from the GNOME community.

Ted Gould corrects Xav’s mistake, knowing full well that optional dependencies are fine:

My understanding of the GNOME release process is that the release team prefers to see a library used as a configure time option of several projects before accepting it as a dependency. This removes the “I built a library that sounds good but no one really uses” problem of adding libraries to the platform. For instance, libnotify has been used by many programs before it was a blessed dependency for 2.26.

After some reasonable chatter about the design motivation for Ubuntu’s messaging menu, persistent notifications, and applicable specs, the discussion trails off.

April 15, 2009: Jon McCann’s first post to the GNOME Shell mailing list. Bryan Clark joins the list and offers some suggestions, including:

You probably don’t want me trying to arrange this stuff for you, but I’d recommend gathering the existing docs and blog posts you have into something more consumable.

Jon McCann replies, “I’m a bit out of the loop too but here’s some background.” It is his first post to the mailing list, and based on the responses from active contributors, Jon’s ideas about GNOME Shell are pretty firmly stuck in October 2008.

April 17, 2009: Mark Shuttleworth blogs about “meta-cycles” across FLOSS projects, clearly aware of the significant — and potentially risky — plans for GNOME 3.0 and the continuing work on GNOME Shell:

On the other side of the fence, GNOME is now more aware of the limitations of indefinite regular releases. I’m very excited by the zest and spirit with which the “user experience MATTERS” campaign is being taken up in Gnome, there’s a real desire to deliver breakthrough changes. This kicked off at the excellent Gnome usability summit last year, which I enjoyed and which quite a few of the Canonical usability and design folks participated in, and the fruits of that are shaping up in things like the new Activities shell.

But it’s become clear that a change like this represents a definitive break with the past, and might take more than a single six month release to achieve. And most important of all, that this is an opportunity to make other, significant, distinctive changes. A break with the past. A big bold move. And so there’s been a series of conversations about how to […] break with the tradition of incremental change, in order to make this vision possible.

April 22, 2009: Canonical’s Ayatana project is announced as an umbrella for the DX team’s various projects, beginning with notify-osd and indicator-applet. The desktop experience and design teams have grown since they were announced in mid-to-late 2008.

April 23, 2009: Ubuntu 9.04 ships with Canonical’s fancy new notifications (notify-osd) and the messaging menu (libindicate/indicator-applet) as features worthy of mention in the official press release.

May 18, 2009: The GNOME 2.28 module proposal period closes. Despite being shipped in Ubuntu 9.04 a month earlier, neither notify-osd or libindicate/indicator-applet were proposed for inclusion.

Late May, 2009: Jon McCann moves from internal projects to Owen Taylor’s section of the Red Hat desktop team — the group assigned in 2008 to work on the results of the UX Hackfest, which became GNOME Shell.

May 25-29, 2009: Ubuntu Developer Summit in Barcelona. The desktop team discuss the plan for GNOME 3.0 in Karmic Koala:

Ubuntu is a GNOME based distribution, having the new versions and components available early will benefit the distribution, users and GNOME.

Users will want to try the new GNOME components and be able to test GNOME3, it will be easy to do so from Ubuntu.

May 25, 2009: Ted Gould submits a talk about the messaging menu for presentation at the Gran Canaria Desktop Summit.

June 15, 2009: Jon McCann blogs about pulling together the design work already done on GNOME Shell, and encourages participation in daily IRC discussions about the design.

July 3-11, 2009: Gran Canaria Desktop Summit.

Ted Gould presents messaging menus.

Jon McCann publishes the GNOME Shell design bible, expanding on design concepts first introduced at the UX Hackfest in 2008.

Owen Taylor presents the latest work on GNOME Shell, including an entirely new design for notifications. While the central location for notifications, and separation between system indicators and notifications from 2008 still exists

This is not an area that is variously called the Notification Area or System Tray and should not be used by applications (foreground or background) to indicate their status.

… the drop-down panel menu “stack” is replaced with an idea clearly inspired by Palm’s webOS: the message tray.

GNOME Shell appears to be coming together well, so the Release Team recommit to the goal of shipping it with GNOME 3.0… if it’s accepted for inclusion, that is! The team plans to conduct a review, prior to the next release cycle, to decide whether the project is ready to ship 3.0 in March 2010.

August 8, 2009: KDE hackers begin work on a KNotificationItem-based spec for status icons, hoping to encourage a more flexible cross-desktop replacement for the old-school XEmbed-based “system tray” icons used by GNOME and KDE:

This is a draft standard for the management of visual items, usually icons used for reporting the status of an application to the user or provide a quick access to common actions performed by that application. It is intended to be complementary but not directly related with the Freedesktop’s Desktop Notifications specification and is aimed as a replacement to the Freedestop Systemtray specification.

August 10, 2009: The GNOME 2.30 development series and module proposal period begin. libindicate/indicator-applet are again not proposed for inclusion in this series.

August 22, 2009: indicator-applet is split into three: libindicate, libindicator and indicator-applet. The libindicate client library still uses a custom DBus protocol to talk to the indicator host user interface, despite using the org.freedesktop.indicator namespace.

(The org.freedesktop.indicator namespace has never been mentioned on a mailing list, let alone the XDG specification collaboration list. libindicate has been raised once, in May 2010, in a completely different context.)

September 5, 2009: The KNotificationItem specification is first raised on the XDG list:

In the past few months in KDE we worked on a new way to represent the systemtray icons to overcome the following limitations…

September 23, 2009: Aurélien Gâteau raises his work on Ayatana notifications for Plasma on KDE’s Plasma development mailing list:

I would like to present to you some work I have been doing for Canonical regarding notifications in Plasma.

Before going further, let me state that my goal with this mail is not to get this work incorporated upstream, as I understand the Plasma project have a different position than Canonical on the subject of notifications. I decided to write this mail because I believe it is more correct to let you know about it in a more “personal” way rather than you discovering it in a blog post or a Kubuntu review.

A lengthy discussion follows, during which some familiar concerns are raised. From the pen of Aaron Seigo:

it has been made very clear that Canonical is intent on following through on these ideas as they are. it is an insular project without outside participation, which is something they are perfectly free to engage in and i fully support their right to do so.

now, whether anyone else outside of Canonical thinks it is better or worse seems to really not matter. any discussion on it is therefore a waste of time. and i’d prefer not to waste our time on this list.

… to which Celeste Lyn Paul replies:

Canonical did a really bad job involving upstreams in the design process and are now trying to make up for it by keeping upstreams aware of what is going on. It may be too little too late, but if we (KDE) can at least humor them, then they will be more willing to listen how they can make their software work better with KDE (even if it doesn’t follow what KDE wants to do) instead of just forcing Kubuntu to ship whatever they produce.

September 24, 2009: GNOME 2.28 ships.

October 13-15, 2009: Canonical developers quietly begin early development on a replacement for libindicate called… libappindicator. A “quicklauncher” prototype is blessed as the starting point for a new project called… Unity.

October 29, 2009: Ubuntu 9.10 ships with the libindicate-based messaging menu and “me” menu, which replaces the old FUSA applet.

November 3, 2009: The release team gathers feedback from teams throughout the community to determine if GNOME 3.0 should ship in March 2010, as planned, or be delayed until September 2010.

At this point, we’ve reached the beginning of the libappindicator story, though as you can tell, there was quite a bit of history behind it! Aside from the occasional crucial event in the timeline, I will avoid repeating the details of that saga in this and future posts.

December 17, 2009: Mark Shuttleworth announces that from March 2010, he will focus on “product design, partnerships and customers” and hand over the CEO’s reins to long-time COO, Jane Silber.

I’ve become very passionate about design and quality, and want to spend more time figuring out how we harness the collaborative process to build better, more insightful products. I can’t think of a more interesting challenge, and luckily I couldn’t think of a better person to take over my formal management and leadership responsibilities at Canonical than Jane.

Concerned that the transition might be misunderstood, I leave an encouraging comment on Mark’s blog:

For those who don’t know Jane — as she doesn’t have the most public profile among the stars of Ubuntu and Canonical — be assured that she is all kinds of awesome, far beyond the capacity of English to describe. This is a fantastic transition for Canonical (it’s great that Mark has someone so awesome to hand the reins to), which will in turn be fantastic for Ubuntu.

… and totally cool that Mark will have more time to focus on the stuff he finds fun and satisfying. Further arse-kicking will ensue. :-)

Wonderful news all ’round, congratulations both!

Such… optimism.

Disclosure: I enjoyed working for Canonical from 2004-2006, and although I have occasionally been accused of shilling for Ubuntu since then, I suspect few at Canonical would regard me as their #1 fan at the moment. I haven’t been involved in GNOME for quite some time, and generally try to avoid thinking about it very often.

Posted in General | Tagged , , , , | 39 Comments