Interview with Scott, Ubuntu and Upstart developer

published Apr 24, 2007, last modified Dec 08, 2021

Scott James Remnant, the Upstart developer, graces us with an interview.

Upstart: the new way to start your computer up -- and make it adapt to its environment

The Linux distribution that took the world by storm, Ubuntu, is not only one of the most usable, but it has innovations of its own. One of the most distinguishable innovations in Ubuntu 7.04 (Feisty Fawn) is Upstart, a software package that, in all likelihood, will end up as the replacement for the venerable SysVinit and other Linux initialization systems.

But "why replace init?", you might be asking? The answer is dynamism. Modern Linux distributions have lots of usage scenarios, and most of those scenarios require a dynamic operating system; what the operating system does depending on context and role is very important in terms of usability, and the startup process is no alien to this fact.

Today's Linux distributions have lots of behavior hard-coded in their startup scripts. Furthermore, some network services provided by those Linux distributions depend on other services or system states. Say, for example, that you want to serve files through SAMBA -- it wouldn't make sense to start SAMBA if the network interfaces aren't set up, right?

Upstart solves this by reacting to system-level events -- and that's what it is, an event-based init service. Since Upstart breaks backwards compatibility (at least for the time being), Upstart is also the perfect spot to test another sorely required innovation: parallelism; with parallel startup, services and states can be started and achieved much faster than sequentially, for a number of reasons which basically boil down to taking advantage of the hardware at its fullest.

Naturally, I'm curious. So I decided to interview Scott James Remnant (by e-mail), he who appears as the lead Upstart developer. He's letting us in on juicy details and a glimpse of his life.

The interview with Scott

Tell us a bit about yourself. We'd like to know the man behind the tech. What do you do for a living. How old are you. Married? Children?

I'm 26 years old and grew up in the south-east of England, deep in the country-side. I've been into computers ever since my Dad brought a Sinclair ZX Spectrum+ home when I was a small boy, and learned to program them since that's what you did with those kinds of things.

These days I live in Birmingham with my partner David and our two border collie dogs.

How did you get involved with Ubuntu?

I was pretty involved with the Debian project, originally maintaining GNU Libtool but then inheriting dpkg itself, when I received an e-mail out of the blue from a guy called Mark Shuttleworth who wanted to chat about a project he was starting.

A phone call later and I was on board, as one of the earliest people to join the company that would be eventually known as Canonical.

Has your relationship to the Ubuntu project had an impact in your everyday life?

An interesting question. I would certainly say that Open Source has had an impact in my everyday life, since it has given me an excuse to fly around the world and meet fantastic people wherever I go.

How does Upstart work? What are the major differences between Upstart and init?

Upstart is actually pretty simple; at it's core, for each task or service that it is managing, it has a state machine that represents the life cycle of that job.

Upstart state transition diagram

Each step in the cycle represents either a process that is running (pre-start, post-start, pre-stop, post-stop), an action that is performed to the primary process (spawned, killed), an event that is waiting for completion (starting, stopping) or a rest state (waiting, running).

This allows it to provide a great deal of flexibility in the configuration of a service, while providing supervision of it. If a process dies, the machine can follow the green lines and return the job to a running state again in a predictable manner.

The particular innovation is how we decide whether to start or stop jobs; init does this by grouping them into "runlevels", and other init replacements do this by the use of dependencies. Upstart instead does this by the emission and catching of events.

It didn't seem like an innovation at the time, since we were expecting to interface this to systems that are already primarily event based such as udev and HAL.

What new capabilities does Upstart bring to Ubuntu now? What should we expect in the future?

So far we've been primarily concerned with testing the concepts, and determining whether an event-based system can really work.

In Ubuntu 6.10, we replaced init without replacing any of the ordinary startup scripts. This gave us a chance to "shake down" the code, and see whether the basic job life cycle worked properly.

For Ubuntu 7.04 a lot of the job of mounting filesystems, especially those using software raid (mdadm), devmapper, LVM or EVMS has been made event-based. While this still has some bugs, it allows a great deal of flexibility for "stacking" filesystems.

Our next task is to make the ordinary services event based as well.

Do you feel Upstart could end up being a staple in Linux distributions? What are Upstart's chances of getting standardized or blessed as the de facto init replacement?

Absolutely; it's my hope that Upstart will be blessed as the new standard init replacement and service management daemon. I think we first have to demonstrate that it works at all levels, and that it is a stable and well-supported piece of software. And I think we're well on the way to doing that.

Do you have a blog? Any other way me and our readership could follow your life?

I do have a blog on my website, http://www.netsplit.com/blog/, however I'm the first to admit that I don't post to it as much as I perhaps should.

Thanks a lot, Scott, for your time and for this wonderful piece of software! Have a great day!


So there you have it: an interview with Scott himself, and lots of information on Upstart. I certainly hope Upstart gets blessed by other distributions and incorporated into the Linux Standard Base.