The Inside Track on Firefox Development.

« June 2006 | Main | September 2006 »

July 20, 2006

Personal Blog

I have re-opened my personal blog for topics that aren't directly related to my current Firefox development activities.

Posted by ben at 8:44 AM | Comments (13)

July 2, 2006

Sticky

It's Fourth of July Weekend here in the States (not being a native 'Merkin I always end up finding out about these things just as they're happening) and I'm sitting at home after a long day of tidying up the house and running errands. I find myself sitting here at my desktop computer, which I originally bought for Firefox development back in 2003, but never ended up using that much. These days there doesn't seem to be that much difference between state of the art and old tech - this computer is three years old and doesn't feel significantly slower or less well featured than my Google-issued system which is about 18 months old. Without getting into the scary optimizations like RAID and so on, is there much about new systems that really makes them worth upgrading? Every Mac upgrade I've been through has felt more impactful. Anyhow, on to the point of this post.

I am writing this post (and the last two posts too) in the Firefox browser that was installed on here. I look in the about box and discover it's Firefox 1.0RC1, a build dated October 1, 2004. That's almost two years old. (The About box reads "Preview Release" because back in the day we didn't rev the version number until the 11th hour, because otherwise we knew someone would misinterpret our test builds as official and let all of the air out of our release balloon...)

I know there are countless security bugs and so on that have been fixed since 1.0RC1, but I had to think hard about the things that would actually get me to upgrade. This build being pre-release there's not even a red christmas tree in the top right corner to entice me to upgrade. Where's the innovation been in Firefox over the past two years that I care about? Well, a couple of things manifest themselves:

  • The build is noticably slower than the branch, mainly with session history operations. This is where Firefox 1.5's back and forward cache really makes itself known. Yes it uses memory. Yes it's a feature. Yes there are real memory leaks in Firefox in addition to this one. Moving right along...
  • Tabbed browsing is much harder to use. This might be the single biggest bang for the buck in Firefox 2. It feels much more difficult to me to manage tabs with the mouse in this build, the weird position of the close box at the right of the tab strip seems more pronounced. 1.0 also lacked a proper single window mode, which is now the default for Firefox 2, and it works properly in pretty much every situation, unlike the off-by-default one that shipped with previous versions.

This isn't to say that a lot of other very good worthwhile work didn't go on during the time between Firefox 1.0 and 2.0 - it did. But just using the browser for casual surfing and blog posting, these are the two things I noticed most. (On my work system where I'm constantly crashing and restarting, I often appreciate session save too) Every release of FIrefox gets a little better. As long as we continue to have at least one feature per release that is "sticky" enough to keep people from downgrading, and continue to make improvements to performance, memory usage and overall product polish/quality, I think we're in good shape.

Posted by ben at 7:50 PM | Comments (21)

July 1, 2006

Creativity

Today, Mitchell writes about creativity, and touches on some other issues such as openness etc.

It’s good to have ideas, and prototype them. This philosophy is the core of the Mozilla project that I love – it’s how I’ve tried to operate myself much of the time… to not let myself get bogged down in all the negatives and suffer what some call “analysis paralysis”… not all of my adventures have succeeded: some of the code I have written has never gone anywhere – Vixen, Manticore, etc. It’s why I love extensions. They give people the ability to play with something that could be impractical, but who cares, it won’t hurt anything… there’s a chance it could be really useful so what’s there to lose?

I see the benefit of a process surrounding out-of-band innovation as a useful step to take in a corporate environment where people need to be able to spend some amount of their time doing some more novel/long term research. It's a good thing to establish culturally so that you don't get the "angry boss man" type of situation we had at Netscape. Personally, creativity and exploration has always been my modus operandi - it's how I begun working on this project, and I think I share this trait with at least a few volunteers.

On the topic of communication I fundamentally agree with what she says. Opening your idea to comment from the start may not always be the right thing to do, depending on what you’re trying to achieve. Often, there are two outcomes – your plan gets mired down in a bunch of negative or “stop” energy, or you get no useful feedback at all. Over my history contributing to Mozilla, I’ve experienced both, a lot of the time.

The trick is where the rubber meets the road. When you do go public – and eventually you will if your code makes it in to Firefox – you need to be prepared to provide justification for what you’re proposing. Hopefully, your idea will stand on its own merits, and little explanation will be necessary, but you should prepare for it all the same. If you have the courage of your convictions, you should be able to stick to your guns. Maybe you learn a thing or two in the process. Good contributors in a healthy community ask questions and make reasonable suggestions for improvement. When it's time to tell more people about your concept, the important thing is not to go into it with a finished product. Some people say you should always show UI mockups as sketches, because it presents them as being more accessible to modification based on feedback since the work to actually implement them hasn't been done. A few of us have had pretty bad experiences in the past when organizations have arbitrarily pushed fully formed visions on the rest of us without much explanation, and little recourse. Remember we don’t just do things because we can, or just for concepts like “the good of the web” because they’re nice to say.

Posted by ben at 10:03 PM | Comments (1)

Justification

Why do we do what we do?

We always do things for a reason, but do we ever stop to ask ourselves how good our reasoning is?

Are we doing things simply because “we can”?

I was talking to Leslie about this recently. She said that doing things simply because you could was a pretty bad reason to do anything. I’ve been thinking about that one for the past few weeks, chewing on it. I thought of things I’ve done in the past… I thought of things I was happy with and things I wasn’t so proud of… things in the latter category had usually been done in part because I thought I could get away with them. I’d been feeling a bit of guilt about a bunch of those lately, and I couldn’t quite put my finger on why (other than the fact that they were bad things to do)… but this sort of sums it up.

“Because I can” is one of the most destructive reasons to do anything… I think it’s by that logic that the world is in the state it’s in now. War, poverty, mean-spiritedness, a whole lot.

A lot of what we do are things that we find enjoyable. That’s cool. I like potato chips. I experiment with different kinds because I enjoy the different tastes and qualities. We need to think though about the consequences of our actions on other people, though. Does our enjoyment result in someone else’s misery? (Or somewhere in between in the spectrum of happiness) What makes our enjoyment so valuable that it’s worth depriving someone else? If the answer is not satisfactory, then we’re really doing it “because we can”.

We need to consider the consequences of our actions carefully. We need to also think about whether or not we truly believe in the reasons we tell our conscience for why we do things. Are they real reasons, or just excuses? Just catch phrases that are convenient ways to allow us to keep thinking that we’re good people?

How many times do you need to say “I’m doing this to help people” or, “I’m doing my part to keep the Internet open” before you really believe it? Or is everything we do really just all for ourselves? I really hope not. For the sake of humanity…

A little story…

We recently traded Leslie’s Hybrid Civic in on a new Infiniti M45. We hated the Civic. It drove like crap… it’s not so much that it was slow (it was) – mostly it lacked comfort and decent handling (both of which don’t contribute much to poor fuel economy – at least not as much as a big honkin’ V8 does). The M gets about 15mpg at the best of times (almost exclusively city driving). I never really thought about it in those terms before signing the papers. It’s pretty bad. The car is exceptionally enjoyable, but what’s the cost? I got the tires replaced on my bicycle recently. I’ve ridden it to work a couple of times since, and I need to make more of a habit of it. I need the exercise.

Posted by ben at 9:38 PM | Comments (8)