October 10, 2006

boris zbarsky answers your questions

Justin opens with the question, "Boris, if you had your pick of things to work on within the Mozilla codebase (and no other obligations), what would you spend your time on? Would you be refactoring, fixing, or adding new features?"

A little hard to tell, because I'm having such a hard time imagining this "no other obligations" scenario in which I can disappear for weeks at a time and do my own thing during that time, without worrying about reviews, security fixes, etc. I suspect I would focus on what I tend to do now, which is refactoring and fixing, largely because the browser pretty much already does what I want in general, so new features are not as important to me. But if I actually had the unbroken free time to design and implement features... who knows. I might get sucked into doing some. ;)

mdakin asks, "Boris, you and very few developers are working on the intricate, complex mechanisms of gecko and generally keeping a low profile among all Mozilla developers. Have you ever thought on going out from the dark engine room and join to 'star' developers?" ed. note for the record, I consider Boris to be (and have been for years) a "star developer" - A

I'm not actually sure what this question is asking. I don't exactly feel like I keep a low profile in the Mozilla development community. I certainly seem to be voicing opinions often. Far too often, possibly. ;)

If the question is why I'm not more visible in the Mozilla user community, in the press, etc, then it comes down to several things. First of all, the majority of the user community and all of the press is interested in "Firefox", and since I'm not exactly working on "Firefox" in the way they understand it we don't have much to talk about. Second, I don't usually have time to blog about what I'm doing much, which seems to be the way developers become visible to the user community. Finally, there is simply very limited cool factor, from the point of view of most of the world, to most of the things I do. People are a lot more interested in the way the "Home" button looks than in a performance improvement in laying out a page with 15,000 floated tables on it. Add to this the fact that I feel like I have better things to do with my time than play to the masses, and there's a certain mutual apathy going on.

Philip Withnall says, "Boris, Could you tell us about yourself, and your work/life away from Mozilla?"

What there is of it, sure. :) I'm a graduate student in mathematics at the University of Chicago. I do research in representation theory, and right now I'm teaching a freshman calculus class. Classes just started about a week ago, so we've mostly done "review" (which wasn't really review for most of the class) so far; we're about to start integration, if all goes as planned.

That about covers it for work. In terms of life, I got married about a month ago, so now Emma and I are looking for a good time to go on vacation. Maybe December... Not much else going in in life right now, at least that I want the Internet to know about.

crf asks "What are some of the suckiest things about the mozilla project? How do you think those things could be improved?"

Hmmm... I think one of the suckiest things is the undocumented ugly legacy codebase we're dealing with. We're sort of working on improving that.

The next-suckiest thing is the lack of sane regression-testing. We have a lot more of this than we used to, and people are working on the problem, but it's still a bit of a mess.

Coming in third is probably the tension between "the Mozilla project" and "the Firefox browser", with some people feeling (or at least acting as if they were feeling, which is all I can observe) that the two should be synonymous, and others being opposed. The obvious answer here is that people should change their minds. That's easy, right? ;) It's been working well in the Middle East for decades now!

i5mast says, "Boris, I know you speak russian. Were you born in Russia (if yes, where) or your parents are from there."

I was born in Odessa. It's now in Ukraine; at the time it was in the Soviet Union. Being a big city, people mostly spoke Russian.

Doug Wright wants to know, "Are you getting paid to work on Gecko? If not - why aren't MozCorp paying you?"

I'm getting paid part-time. MozCorp were actually trying to hire me for a while, but there were legal issues I had to sort out on my end before I was sure it was OK.

David G King wonders, "In all the years that I've seen bz in bugzilla and other places I've always wondering what inspires him to put so much time and effort into the various projects the Foundation has?"

Sometimes I wonder this myself. ;) I guess it's a sense of responsibility for things most of the time. I have a very hard time just saying that code I've touched is Somebody Else's Problem now. Plus, most of the time it's a good bit of fun.

Jed has three quick ones: "1) What do you enjoy working on the most in Mozilla? 2) What do you find the hardest challenge when working on Mozilla? and 3) Where do you think Mozilla, etc. should improve the most on both a short-term and long-term basis? *By 'Mozilla' I do mean Gecko layout engine plus the whole platform."

I'm not actually sure what I enjoy working on most... There are lots of parts of the code that are about equally enjoyable.

The hardest challenge for me is definitely maintaining a mental model of the code. We have a lot of (poorly documented) interactions between different parts of the code, and there are often multiple versions to keep in mind thanks to branches. The time before we dropped Gecko 1.7 support was the worst, with 5 very different versions of the code competing for mind-print.

On a short-term basis, we should end up with slightly better security architecture, a layout algorithm that more closely matches the CSS spec, possibly with XBL2 or parts of it. This is all "Gecko 1.9" type short term.

Longer term than that, I think we should put some serious thought into security architecture, possibly breaking frozen APIs if needed. I think we should seriously look into the NYTimes Reader thing that roc blogged about and see what we need to do to be able to build something like that on top of Gecko. I think we should work on documenting and enforcing the various invariants that the code expects; the result will be a more stable and understandable codebase.

Bernie Zimmermann says "So Boris, what's it feel like having the coolest initials possible (BZ)?"

I think one gets a little blase about it at times. Thanks for reminding me of the cool factor!

Step asks, "What's an obscure bit of code you've worked on that you're really proud of, but no one would ever appreciate or even notice?Of course, we might not understand what it is, but at least you can brag to us about it anyways. ;)"

I think support for .mailcap and .mime.types files on Unix/Linux is most likely to fit that description. It's something most people don't know anything about, especially since the GConf "reinvent the wheel" thing, but it was my first large Gecko patch, and I'm still pretty proud of it.

A close second would probably be moving image loading from frames to content.

Timur wants to know "What are long-term plans for Mozilla and Firefox after releasing Firefox 3 with Gecko 1.9?"

I can't speak to the Firefox plans. Partly because I'm not actively involved in goal-setting for Firefox, and partly because I think the Firefox folks are just now starting to figure out their plans for Firefox 3. Up to now, Firefox 2 was consuming a lot of time and energy.

As for Mozilla as an organization, I think at least part of the long-term plan is to figure out what users need in terms of software to access the internet in addition to or instead of a web browser. It's pretty fuzzy at the moment, of course. :)

As far as Gecko goes, post-1.9 plans probably include finishing up XBL2, more security work, possible radical changes to how we handle JS-to-C++ dispatch at least for DOM objects (e.g. not go through XPConnect for those), possible implementation of certain WHATWG specs. Similar to the Firefox situation, we're pretty focused on getting 1.9 actually done at the moment; we already have plenty of things we're trying to fit in there.

dolphinling has a few questions: "Are there any features you'd *like* to implement, except the spec hasn't been written yet?" , "How much of your time is spent on basic triage and other such things that anyone could do?" and "As a 5-second estimate, what percent of the gecko codebase could we get rid of if we didn't need to work with all the invalid web pages on the internet, only the valid ones?"

As for features, I haven't really had the time to stop and think about it. It doesn't help that the browser really does do pretty much what I personally want out of it at this point.

Time... Not sure. Probably about 10% of my Mozilla time is spent reading bugmail and commenting in said bugs. Another 60+% is spent reviewing. I don't think I've really done much triage in months; just no time to do it.

As far as code removal goes, I'd say probably no more than 5%. Possibly less. But there's the question of how much the design could be cleaned up if the input had more constraints on it. That's much harder to quantify.

Frederik Hoelge also has several questions: "FF sparked the browser wars, and and my favourite new thing is tabbed browsing. I guess it is standard now. To me as a very end user, the browsers are starting to look the same. 1. So how do you think FF is different from the other browsers? 2. Whats the difference between a well tuned, personalized IE, FF and Opera? 3. To me tabs changed the world (plus all the safety babble, but who really cares). But whats the next paradigm in browsers? Will it be gecko-related or what do you think."

These are tough questions! The problem is that I don't use Firefox except when forced to (such as when dealing with a bug for which the "testcase" is the Firefox UI). I also don't use tabs all that much -- I have a big monitor and lots of virtual desktops. So I really don't have a good basis for answering your first question.

For your second question, the main difference between IE and Firefox is probably your security exposure. Mozilla is a lot more on-the-ball with shipping patches than Microsoft is. The other differences are that Firefox runs on non-Windows systems, of course, which is a big deal for me. Not sure how much it matters for you. The main difference between Firefox and Opera... you have to keep in mind that I only have experience with Opera on Linux. Firefox is much better looking, and the MDI thing Opera insists on drives me nuts. See above about me liking separate windows. Opera is a lot faster in many case. Firefox has better compatibility with websites, at least in part because most web developers still do crappy browser sniffing.

I guess I must be one of the few that does care about the safety babble. I got tired of running anti-spyware stuff on my parents' computer every time I came to visit... and they were better off than most, since Dad's been in software development for going on 30-some years now.

That said, I'm really not sure what the next paradigm in browsers per se is. What I would really want for myself is a way that I could share my browser settings (history, bookmarks, anti-phishing stuff, page annotations, whatever) between the numerous network-enabled devices I use daily. And I don't use as many as some people, that's for sure. I think a combination of better ways to interact with web apps (e.g., I'd like to bookmark gmail state!), better management of profile data across multiple devices, and much better portable devices (think cell phone that can fold out to give you a variable-size screen going up to about 15 inches), would probably be the next big shift for me personally.

steve england asserts "I understand that most devs don't actually use firefox, they use seamonkey instead. Could you explain why this is, and whether this has a negative effect on the firefox project at all."

I don't think most devs use Seamonkey at this point, so I don't think there's much of a negative effect.

To explain why a number did for a while, way back then it was pretty much impossible to use Firefox nightlies while working on core code, because the UI was broken so often (and broken UI means you can't dogfood your core changes). The aviary branch period is particularly notable here, as I recall -- the UI was busted on trunk for several months straight. Even today this is a bit of an issue. See the places story on trunk, for example. Had I been using Firefox, I would have lost all my bookmark keywords, which would have cost me at least several hours time while I got them all set up again.

There are various other reasons people had on an individual basis (e.g. for me there are several UI decisions that I strongly disagree with that severely reduce the usability of the app, and the lack of venkman in nightly builds), but I think the above is the main reason for the initial reaction. Plus of course inertia and very sour experiences in early dealings with the original Firefox developers. I think in many cases these initial impressions had a lot more to do with keeping people away than any objective measures of technical or user-interface merit.

Sander has several: "If there's three easy tasks (things you can do without being an insanely motivated and competent layout hacker) you wish every user of gecko-based browsers would do to give back to the project, what would those be?" "Oh, and another one: if you could clone one developer other than yourself, dbaron and roc, who would it be? :)"

The number one task that users could help with would be adding automated tests for bugs. We need a way to add tests that would be dead simple first, of course....

The number two thing that would be useful would be convincing yet another IE user to switch to something else instead. :)

Cloning a developer... That's another tough question. There're a lot of candidates, and the question is somewhat open-ended. For example, are we cloning short-term or long-term? Right now, the developer I wish there were more of in the cloning sense is probably Dave Liebreich. He's working on setting up all sorts of automated testing stuff that we really need by six years ago. The sooner that happens, the sooner we can spend less time on fixing regressions, since testing of patches would catch most of them very early.

Ashley Migretta comes right out and says it: "borris, do you like me? yes or no *crosses fingers*"

Ma'am, I'm a married man!

TnkierTyo asks, "Borris, So whos name did you take over? :P i googled your name and came up with a bunch of results, is that all you?"

It's not, in fact, all me. The hits at MIT and physics team and the various Mozilla and web standards stuff are me. You can thank web archiving of mailing lists for the ridiculous number of Mozilla and web standards hits. But anything involving Lenin and his embalmers is not me -- that's a different Boris Zbarsky. Of course now this blog will mention both on the same page.... Oh, well.

James Napolitano, the final questioner, wants to learn quite a bit. He asks, "How well architectured would you say Gecko is? What are its stengths, and what are its limitations? What things need to be fixed/improved but keep getting put off? (I'd love to help with these but am currently too busy with my job). How on earth do you have time to pursue a physics PhD *and* do so much for Gecko? (I majored in physics myself so I know how all-encompassing it is!) How would you say the Mozilla project has matured over the years? It seems that with the establishment of the Mozilla Foundation & Corp., the improved documentation through the MDC, the mass marketing through SFX, the improved communication with the new newsgroups, the addition of unit testing, the huge expansion in manpower, etc., that it keeps flourishing more and more!"

I have to admit that Gecko is the only large project I've worked on, so my architecture experience is pretty limited. I think some parts of Gecko are very well architected. I think other parts are not at all well architected. Still other parts are well-architected for what they're designed for, but we're using them for something else now, or have been using them for something slightly different than designed all along. This doesn't really answer the question, but the heart of the matter is that there is no monolithic "Gecko architecture". There are all sorts of pieces, and some are better than others.

As far as things that keep getting put off, the list in bug 184746 was there for a while. But we've actually made progress on a number of those issues in Gecko 1.9. There are various other things (like actually writing down something resembling a XUL spec) that don't look like they're likely to happen. In general, I think Bugzilla is a decent source of things that really should be fixed/improved. :)

As I said above, I'm doing a math PhD, not a physics one. That's the key difference that allows me to do it. More seriously, I do in fact need to spend more time on my PhD work over the next two years. We'll see how that goes.

I think I'd agree with you about the project's current state of being. The testing and documentation improvements are wonderful, and while we still have a ways to go on both, we're at least on the way. I'm not actually sure we've had a huge expansion in manpower; we're probably still below the manpower we had right before the major layoffs at Netscape in some ways; significant parts of the code remain unowned. If you find a module owner for printing, let me know! We do have more manpower now than we did right after the Foundation was established, that's for sure.

One issue that I think we have is that more and more of the contributors are being hired, whether by the Mozilla Corporation or other companies. On the one hand, that's great, but on the other hand I'm not seeing that many replacements appearing, at least on the Gecko end of things... We need to figure out how to attract more folks to Mozilla development, if we're going to survive long-term.

I want to extend a great big thanks to Boris for taking a break from his coding, PhD, and other work to answer some questions here. I also want to thank all of you for the great questions.

As you all finish up with this post, take a minute and let me know who you want to hear from next. I'll do my best to get them in the queue for another in the "Ask a Developer" series here at Firefox and More.

Posted by asa at 11:56 AM