For as long as I have known Mike, he’s been maintaining one of the largest (and most widely used) package: Iceweasel, Debian’s default web browser. It’s effectively Mozilla’s Firefox although it has been renamed to avoid some rules enforced by Mozilla’s trademark policy. But we might see Firefox back in Debian… read on to know Mike’s plans.
His story is also very interesting in that he went from simple user to Iceweasel maintainer, and now he’s working for Mozilla Corporation. But you already knew that contributing to free software is a good way to grow skills and gain experience that are valuable on the job market, right? 😉
My questions are in bold, the rest is by Mike.
Who are you?
I am Mike Hommey. I am French, even if my name doesn’t sound so.
I have been a GNU/Linux user since 1995, using Debian since 1999, and started packaging in 2003. After a long time in the NM queue, I became a DD in 2005.
The main reason I started being actively involved is quite selfish: I wanted some things done, and I just did them. My first packages were extensions for the Mozilla Suite, the old one that directly inherited from Netscape Communicator. Later on, I wanted some of these extensions to work with the new kid on the block: Phoenix; or maybe it was already Firebird. By then, integrating extensions was a hassle, and the mozilla-browser maintainer had come up with a script that would make it easier for extension packages. So I ported that script for use with Phoenix/Firebird and sent it to the BTS.
Then Phoenix/Firebird became Firefox, and it grew a real extension manager. Except that is was entirely not suited for extensions installed by the packaging system. So I made it work better. And made a few more changes to make Firefox work better. All through patches or NMUs.
Then I became co-maintainer, then Firefox couldn’t keep its name and became Iceweasel, and, fast-forward until today, I’m now taking care of Iceweasel/Xulrunner and Iceape in stable, unstable, experimental and an external repository.
This 8 years-long story (wow, I hadn’t even realized it had been that long until I wrote it) tells you something: newcomers shouldn’t be afraid to stick their hands anywhere, even in big packages. I was only a Mozilla and Phoenix end-user when I started.
Apart from Mozilla-related packaging, I also happen to (co-)maintain some other packages in Debian, most notably webkit, though I haven’t been very active in the pkg-webkit team recently. There are several reasons for that, the main one being that there are other team members getting the job done. And I can’t say that much about the pkg-mozilla team, since there are effectively no other team members.
What’s your biggest achievement within Debian?
I am quite proud that Squeeze will be the first Debian release where Iceweasel works on all supported architectures. Previously, we only knew the package compiled on all these architectures. Starting with Squeeze, we know it passes several of the test suites coming with the source code. This ensures most of the browser is functional. It was actually far from being the case before, as it appeared when the test suites were first enabled.
I think it is very important to have properly working packages on all our supported architectures. The current evolution of hardware shows how important it still is. Who would have thought a few years back that we would see ARM or MIPS based netbooks today ?
What are your plans for Debian Wheezy?
For Debian Wheezy, I would like to improve Iceweasel/Icedove/Iceape integration with the packaging system. Something that would allow to use the apt database to find extensions or plugins, on top of the current behaviour. I also want to improve desktop integration, most notably for KDE.
Another thing I’d like to see happen is to package google breakpad independently (its source code is currently embedded in chromium and iceweasel, though not built, as far as I know), and have our Mozilla products builds be able to send their crash reports upstream. It is very important that upstream gets direct visibility over what crashes on GNU/Linux systems. It helps making them aware of issues that would otherwise probably remain unnoticed, as there are much more users using distributions packages than upstream tarballs. And not all Debian users report crashes to the BTS. I know at least Fedora and SuSE are already doing it.
More importantly, I want to avoid the sad situation we got with Squeeze, where we’re going to release a 18 months old Iceweasel. We got there for a combination of reasons, one being that I was preparing for a freeze in December 2009 and focusing on getting 3.5 in shape instead of the then upcoming 3.6.
The result was that we didn’t get 3.6 packages before upstream released 3.6.3 in April 2010. By then it was too late, considering the uncertainty of the release schedule, to update reverse dependencies and get 3.6 ready for Squeeze.
Things are different for 4.0. I’m already getting ahead of things, and while reverse dependencies haven’t been taken care of, all beta releases have been made available through http://mozilla.debian.net/, usually within hours after upstream release (sometimes even a few hours before official announcement, but always after availability on ftp.mozilla.org). A great share of our patches were also pushed upstream.
Several things made that possible:
- I’m now closely following upstream trunk
- I’m starting to prepare packages when candidate builds are distributed upstream, which usually happens a few days ahead for betas, and more than a week ahead for stable releases.
- I automated part of the package building process, and have a beefy build machine. I’m getting near being able to provide nightly builds of upstream trunk.
There will be a couple major upstream releases until Wheezy comes along, and I want to make them available early in unstable, even if that means breaking reverse dependencies until they are fixed.
Finally, I would like to get other people involved, starting with the Icedove maintainer. Volunteers are very much welcome, for any kind of involvement: bug triaging, documentation (which we are deeply lacking), testing, code… People interested can contact the pkg-mozilla team list. As the Debian packaging gets less time consuming, I should be able to spend more time mentoring, which should help.
If you could spend all your time on Debian, what would you work on?
I actually have been working almost full time on Debian for a few months during a more-or-less purposeful unemployment period. That’s when I attempted to add an alert popup when Iceweasel or extensions are upgraded (which was eventually removed because not working very effectively). That’s when I worked on Iceweasel 3.6 and the first 4.0 betas. That’s when I pushed more than 70 patches upstream, and got upstream commit access.
I know for a fact that keeping up with upstream and answering bug reports is already time consuming, and time comes in finite quantity. Working full time on Debian allows to do more than that, as I’ve been able to experience first hand. Unfortunately, that doesn’t help pay the bills, so it would be best if time could be shared with other persons. Like, actual members in the pkg-mozilla team. 😉
Anyways, if I were to work full time on Debian again, I’d like to do more than packaging, and help improve some of our infrastructure, most notably the buildd network, to grow some automated way to get packages built on all or some of our architectures. Call that PPA if you want, though I don’t think we need something exactly like PPA.
We sure do have porter boxes, but there is a huge overhead to get packages built there: you need to first try, then see you lack build dependencies, then wait for admins to install them, then come back and launch your build, and finally come back again much later to see how it went. And that’s when it goes smoothly. Repeat for each architecture.
It’s already cumbersome when it’s a small package, so imagine when it’s Iceweasel. I’d like to be able to push a (signed) .dsc somewhere, say I want it built on that and that architecture, and get binary packages and logs back. It could then be up to developers to distribute them, or not. Sometimes, you’re just interested in test suite results.
Another related wish would be a way to access build trees of failed builds, possibly on the buildd where it failed.
What’s the biggest problem of Debian?
Lack of contributors, lack of contributors, and… lack of contributors.
It can sound weird to say that in a community of 1000+ people. But the sad reality is that we’ve seen, repeatedly, calls for help in various places from various understaffed teams (most often of effectively one member) for years. So there is obviously a problem getting people to invest time in these teams either on the long term, or at all.
I know this is not a very significant metric, but it already should say a lot: I wouldn’t be surprised if more than 2/3 of the number of source lines of code in Debian come from less than 5% of the number of packages in the archive, and see less than 5% of the DD/DM population involved. If someone feels like doing the actual math, I’m curious to know how far I’m from reality, and in what direction.
We also lack manpower to be able to make our release development smoother. In a perfect world where manpower is not a scarce resource, we should work on $release+1 when $release is being frozen. Said otherwise, we should have been able to start working on Wheezy in August 2010, or even earlier.
You’ve been working for Mozilla Corporation for a few months. How does the work look like and what are you working on?
I am actually not working full time for MoCo; I am only contracting for 4 days a week. That was a request I made to keep having enough spare time for Debian or other activities. I am working from home, and am pretty much free about when I work, as long as I work long enough. I take advantage of this freedom and the saved commuting time to live a healthier life by doing some sports in the daytime (which also happens to be cheaper).
I mostly work with Taras Glek and other people on various aspects of Firefox startup performance. This involves pretty interesting low-level stuff, in which I actually got involved before being contracted. This work has nothing to do with packaging Iceweasel, though I can have a few opportunities to do things somehow related.
You told in your blog that you were discussing with Mozilla how Debian could use the Firefox trademark. Can you tell us a bit about the progress you made?
I have got an informal approval of the patches we are applying to the Iceweasel 4.0 beta packages. There are a few concerns about using the system cairo library, and the embedded copy of libpng needs to be used to have support for the animated PNGs that are used in the user interface and that are required in Firefox’ feature-set. Other than that, there are pretty much no objection on the technical side.
We managed to get to some common ground as to how to manage stable updates and more generally, changes to our packages, but I’m still waiting for an actual agreement draft. While I, as the maintainer, am fine with the way it should look according to my discussions with the people involved at Mozilla, I’ll seek review from my fellow Debian Developers when I’ll have something to show.
I haven’t decided yet how this will reflect on the Debian packages, though. For example, would Iceweasel stay? But I do hope Wheezy will get Firefox back.
Is there someone in Debian that you admire for their contributions?
Not someone, but all past, present and future release team members. This is a team that receives a lot of critics (and I indirectly gave one a few paragraphs ago), yet manages to keep doing an amazing job and its members are very committed to their task. I admire their dedication.
Thank you to Mike for the time spent answering my questions. I hope you enjoyed reading his answers as I did. Subscribe to my newsletter to get my monthly summary of the Debian/Ubuntu news and to not miss further interviews. You can also follow along on Identi.ca, Twitter and Facebook.
I really enjoyed reading this interview. It brings more life to the Debian community to know the people better.
Filipus Klutiero says
Thank you Mike, for this interview and everything. The news about the branding issue are encouraging. I hope you can actually solve it. Even better, you with the help of others.
Raphaël, continue les entrevues, c’est super 🙂
Jonathan Carter says
“…we should work on $release+1 when $release is being frozen…”
Is there anyone in Debian really who doesn’t feel that way? Why isn’t that implemented? Is it also a matter of manpower?
Raphaël Hertzog says
We used to be able to upload new stuff to unstable while preparing the next stable because we had a snapshot called “frozen” but ever since the introduction of testing, the release managers prefer using sid to push fixes to the next stable release… so they are effectively asking people to not upload new upstream versions to unstable.
Going back in the other direction is possible and requires no “effort” but would we be able to fix RC bugs as quickly in testing in that situation? Difficult to know…
Raphaël Hertzog says
You might want to check out Mike’s blog, he has written many articles on performances issues with Firefox: http://glandium.org/blog/?cat=25
MSS Lasers Ltd says
I am a heavy desktop user and mainly promotes our company’s site. But I do tinker with Debian as it is the first serious GNU/Linux distribution I used for personal and business reason. Reading this article made Debian a little more real to me. I used to think that it’s ‘out’ of my reach — that all I could get from it is that I could use it.
Of course, I occasionally visit the Debian site but it’s different when you read an article about the actual maintainer of a specific package — by the way, this is the second one I read, the first one — I can only remember the picture of the guy maintainer, as I haven’t really focused on this. Now I am hoping to read more articles/interview about the Debian maintainers.
Thank you Raphaël Hertzog for this insightful interview and thank you Mike Hommey for your time doing this.
More power to you, both!
Rogério Brito says
Well, if Mike reads this, I would like to openly say that he is one that I admire the most in the project.
The frequent updates to iceweasel have brought something back to life: the excitement about a new browser. You know, the excitement of testing each new beta release, reading the release notes, reading the changelogs, seeing which bug reports were closed, and so on.
And that excitement has paid off in some ways: I have started thinking about packaging extensions to iceweasel (and actually getting my hands dirty, as can be seen in https://launchpad.net/~rbrito/+archive/ppa, including HTTPS Everywhere).
A side effect of that is that I have thought about creating detailed README.source files for my packages containing a lot more than just describing the changes that I put in my packages related to upstream, patches that I have applied and the way to apply them, but verbose design decisions on the steps that I take when I prepare a new release of a given package.
The justification for this last point is that I frequently want something newer than what is offered and I want to get things right from some git tree. Iceweasel is a candidate, mplayer is another, ffmpeg2theora is another and ffmpeg is another.
Newer versions of ffmpeg than what are available around are a bit outdated for one specific purpose that I have in mind: having more video filters (namely, the hqdn3d video denoiser) so that I can create VP8/WebM videos with high quality even from noisy sources.
Heck, with a good video filter, the video may be easier to code and we can crank up the quality a all the way through and get them coded in Theora and have something decent looking. (And providing VP8/Theora videos is a nice way to get people needing something that can play them).
Right now, the way that I am doing such more recent builds is to, essentially, grab the debian packaging part of a package, cloning upstream’s repositories, applying that packaging, putting a new changelog entry, hoping for the best and triggering compilation, with me ocasionally looking for what broke (if things got broken).
So, if anybody has any kind of advice, that would be mostly welcome. Especially for those that maintain huge packages like chromium-browser and iceweasel.
(Thanks to Giuseppe Iuculano and Mike Hommey here).
Great interview. Thank you very much Mike for the work done and, as Rogério said, for the excitement revival.
Thank you Raphaël for these interviews not only are they very informative, they all the more give a great “real life” feeling (pictures, words of mouth…) reading it with my morning coffee was like taking breakfast together 😉 Please keep on.
OK, I’ll send more bug reports, knowing now that somebody with brains is on the other end. (That makes one of us :-)).
“We sure do have porter boxes, but there is a huge overhead to get packages built there: you need to first try, then see you lack build dependencies, then wait for admins to install them, then come back and launch your build, and finally come back again much later to see how it went. And that’s when it goes smoothly. Repeat for each architecture.”
Say goodbye to any new contributors when they have to deal with this kind of BS.
Someone with authority in Debian take initiative and fix this!
Raphaël Hertzog says
Fortunately new contributors rarely have to deal with failures to build on random architectures. Iceweasel is not a normal package.
And you don’t need authority to fix this. You just need to provide a better service. Setup an automatic build service and make it available to Debian developers. Done.