Mozilla Dev Team On Firefox's Success 184
Titus Germanicus writes "If you're thinking about open sourcing a project in the near future, Mozilla might be the perfect blueprint to follow. At last week's Mesh 2008 conference in Canada, Mike Shaver, chief technology evangelist and founding member at Mozilla, and John Resig, a JavaScript evangelist at Mozilla — two of the key figures behind the success of Mozilla's Firefox Web browser — listed inclusivity and transparency as two of the top cornerstones of any community-built project. Shaver said in this interview that because the Web is intended for everybody, the level same openness should be shared with Firefox's open source contributors."
Re:The prefect blueprint? (Score:5, Insightful)
A lot of products go through this cycle. The big deal isn't "oh my God, we have to do a rewrite"; this is expected every now and again and needs and technologies change. The important part is the process; how things like a major rewrite are managed. People make the difference, not code.
Re:The prefect blueprint? (Score:5, Insightful)
Of course, it's so simple! (Score:5, Insightful)
Though getting millions and millions of dollars from Google probably helps. You know. A bit.
Re:Not our experience (Score:5, Insightful)
I've done projects almost picture perfect only to later see someone attempt same or similar that fails miserably because of the lack of one or both of these.
Openness: It's not just for F/OSS
Treat everybody like mushrooms and dank musty smelling product is what you end up with.
Re:The prefect blueprint? (Score:4, Insightful)
Re:Yea right. (Score:4, Insightful)
Re:Yea right. (Score:3, Insightful)
Re:Not our experience (Score:4, Insightful)
Not sayin' you're wrong, just addin' my thoughts
Re:The prefect blueprint? (Score:5, Insightful)
Re:Yea right. (Score:3, Insightful)
Re:Of course, it's so simple! (Score:3, Insightful)
Re:Of course, it's so simple! (Score:3, Insightful)
Re:Yea right. (Score:2, Insightful)
Re:The prefect blueprint? (Score:5, Insightful)
The Netscape code was a perfect example of how to mismanage a rewrite operation.
Re:Not our experience (Score:5, Insightful)
It's sad but true. Open Source is kind of like a religion some how. People think it means the guys involved are good and fair and nice. But they are no different from anyone else. Most people are petty, selfish, poor managers (of themselves and others).
A good Open Source project requires a good manager who can coordinate and delegate and so forth. The problem is that programming is a creative activity and you can't just tell people what to do and expect them to slavishly obey. Especially if you're not paying them money. It's like herding cats.
Big projects like Mozilla's Firefox are not really a good example of anything except how big companies have seen fit to fund something 'free' in the hope that some financial gain comes to them in the end.
Your example of Pidgin (Gaim) is much closer to the real problem where, without money, human nature can be very disappointing.
The big question we should be asking is how should we organize projects to make sure good code doesn't get rejected?
slaps head (Score:5, Insightful)
Don't get me wrong, I use the Mozilla and Firefox products, but given the amount of money that has gone into Mozilla (and Apache), I think the results are actually not all that great.
Too much success? (Score:1, Insightful)
It's nice when a project gets recognition for doing something well, but when Firefox started getting more popular, largely due to the loud self-congratulation of the open source community, it started getting slower and buggier. I've been toggling between Firefox and Opera within the last year, largely due to the horribly sluggish performance when using multiple windows. If it weren't for the excellent Web Developer extension, I'd use Opera all the time.
The plug-ins are nice, but most of the ones I use are not for clever hacks, like stripping out ads, but for getting functionality that really should be in the browser in the first place, like the ability to easily edit cookies. How come I can't switch between quirks mode and strict mode on the fly? Why can't I resume stopped downloads, instead of having to re-download them from the beginning? How can a browser get so bloated when blocking web sites from setting cookies requires you to type in the URLs, instead of just clicking a button that says "block"? I still like Firefox more than IE, but I can't say the design of the browser really stacks up well against other browsers unless you add a lot of 3rd-party software. Can you really praise the browser in that case?
Don't even get me started about stability. Update Firefox, and the browser might refuse to start. I have to dig around in my profile folder to delete plug-ins one at a time to get the browser just to get a window open. Just re-installing the browser doesn't fix plug-in issues. Doesn't Firefox keep a log, so it knows when it tries to start and a plug-in doesn't work? That's a must when you depend on 3rd-party software so heavily.
I'm almost hoping that Opera doesn't get too popular. That will keep it fast, lightweight, and low on bugs.
Yes, I know I sound angry given that I get the software for free, but Firefox gets just a bit too much praise. Firefox is what got Microsoft in line and fixing some longstanding problems with IE, but it's easy to hate Microsoft. I'd hate to see Firefox continue getting praise because 3rd-party developers have the ability to patch the browser's design issues.
Re:Not our experience (Score:5, Insightful)
When you invite such creatures as you describe, limiting their input to a choice of two limited options is one way to keep them in check. There are others, but you NEVER let anyone have that much control, ever. Once you do, you are no longer managing the project, just taking orders.
I am very quick to throw the yellow or red cards in meetings when scope creep is showing. I've been known to repurpose meetings entirely on the spot to deal with the fact that there are one or two who think the project goals and schedule are not suitable to 'their' needs. If done right, this clearly defines not only what is supposed to be happening, but who is actually in charge. It's definitely a game of socio-political chess, but to get things done it is necessary. A good PM never ever loses sight of project goals and scope, and keeps the project reigned into those parameters. period. or fail results.
Not just anyone with PMP is going to be able to do that though. It takes skills developed over years of working projects, and the ability to efficiently use positional authority, as well as the ability to simply walk away and wish them luck on their project when they don't want to listen.
Re:The prefect blueprint? (Score:3, Insightful)
Re:The prefect blueprint? (Score:5, Insightful)
Re:The prefect blueprint? (Score:0, Insightful)
Re:The prefect blueprint? (Score:5, Insightful)
Re:The prefect blueprint? (Score:5, Insightful)
Firefox succeeded DESPITE throwing a huge set of functioning code away, not because of it.
All inexperienced developers think that it will be a "necessary first step in clearing out years of cruft", until they actually try it. Then they realise that the "years of cruft" often had good reasons for being there and solving the problems the "cruft" solved is actually extremely hard and not always elegant.
This is especially true if the people doing the rewrite are not the same people who wrote it the first time. In Netscapes case some of the originals were around but the majority seems to have been new.
"Awesome" Bar (Score:5, Insightful)
I would probably go crazy if there was no way to change default Windows theme to Classic.
Re:The prefect blueprint? (Score:3, Insightful)
"Cruft" generally means shit code that is somewhere between incomprehensible and don't-touch-it-I-don't-know-what-the-hell-it-does. Code like this is always frail and impossible to maintain, so it tends to hold back any potential new feature that would rely on it. Normally, the author has long since moved on, so it makes sense in the LONG RUN to throw it out (the open source mentality).
Obviously, manager types can't see much past this quarter, so they saddle people with this garbage, and people eventually quit over such trivial things. Sometimes you just have to realize what you did wrong, press delete, and bang out something that you hope will last 3 years or so.
Re:Not our experience (Score:4, Insightful)
Re:"Awesome" Bar (Score:2, Insightful)
Re:The prefect blueprint? (Score:3, Insightful)
http://www.opera.com/b2b/ [opera.com]
Try to accomplish same thing with thousands of amateurs not caring about real life implementing thousands of lines a day.
Opera is _the standard_ on mobile devices. You know the trend everything moving to non personal computers? Where is Mozilla Symbian S60 version? Where is mini Mozilla runs on a server serving potentially to near billion J2ME powered handsets? Where is Mozilla Win CE? Why Nokia spares millions to their number 1 competitors HTML rendering Webkit? How can Opera sell 2 years old code to Symbian S60 users? How can people bug them 24/7 about the upcoming 9.5 near begging "Give us an Alpha, we will pay for it"
Gnome, KDE, the actual Qt (trolltech) are moving to webkit. Why? Ask them.
Remember Mozilla could fit to a single 1.44 floppy? Who missed the boat I really wonder.
Re:The prefect blueprint? (Score:2, Insightful)
He claims the "hairs are bugfixes". In my experience, they're not. A lot of bugfixes tend to only remove code and leave a cleaner total behind. The "hairs" are features for users that were necessary to implement in order to remain competitive but weren't in the design when programming began. Those features are usually loved the most by users and tend to grow with additions, leaving a big mess. This can only be solved by changing the design fundamentally to enable the features in the core which usually require a rewrite of most components.
He claims code doesn't rust. Well, it does. The features i mentioned above are one way in which code rusts. Another is the platform the code runs on evolves. OS API calls used by the project may become deprecated if a new version of the OS is released. I'll admit that it takes a while before the changes are really pushed through so the rewrite becomes necessary.
Then (i promise i'll stop after this one) he claims "there is absolutely no reason to believe you are going to do a better job than you did the first time". He says there is not "more experience" because the team of programmers changed. Well, maybe the team did change, but all the bug reports from the last version are neatly integrated in the Test Plan. We're talking about a big commercial software project, right?
I'm not saying you should "just" do a rewrite from scratch, the pros and cons should be well considered. But totally dismissing it like Joel does, saying the programmers are wrong and the code is fine, is not considering it very well in my opinion.
Re:The prefect blueprint? (Score:3, Insightful)
I don't think you can discuss the issue so abstractly. Ultimately, refactoring is rewriting. It's just incremental. The line between refactoring and rewriting is fuzzy; if I had to draw it somewhere, it would be around being able to do a functional build more or less any time you want to. If you can do a nightly build, you're definitely "refactoring"; if you go six months without being able build anything, you are definitely "rewriting".
I think the real issue is understanding. The problem isn't programmers wanting to write new code, the problem is programmers not wanting to understand existing code. Once you understand the existing code, then you can make an informed decision about how you want to handle it.
Re:The prefect blueprint? (Score:3, Insightful)
It is true that a rewrite is usually not worth the effort, but not because the code is so clever. This "cleverness" often turns out to be one endless heap of ugly hacks. Its the sheer volume of the rewrite that makes it prohibitive; add to it the efforts for testing, and you often have a net loss, not to mention even crappier code, because that rewrite was late already, so everybody rushes it, and the developers only partly understand the old code etc.
So, in short: usually you have to live with old crappy code because there are is no net gain in rewriting it. Living with it usually is the lesser pain. But old code being excellent is a rare reason.