Mozilla Dev Team On Firefox's Success
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."
It's a great blueprint to follow. The original scrapping of the Netscape code was a necessary first step in clearing out years of cruft, allowing the developers a clean slate to work from as they developed a great competing browser platform. They kept a lot of the good ideas from the Netscape era, with a focus on standards and community feedback.
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.
512 MB RAM, 20 GB disk, 200 GB transfer, five datacenters. $19.95/month.
This is less about the code and more about properly handling the project.
Good community projects need inclusivity and transparency, there's no doubt.
Though getting millions and millions of dollars from Google probably helps. You know. A bit.
Classical Liberalism: All your base are belong to you.
I feel for you in the lack of acknowledgment, but I have to say that in 20+ years of managing technical projects, these two simple things help make ANY project work better: inclusivity and transparency.
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.
Support NYCountryLawyer RIAA vs People
Not to mention, Losing half your workforce in the process, taking > 5 years before they even shipped a 1.0 version, changing organizational structures half a dozen times and moving around to different non-profits, and oh yeah.. convince everyone around you that you're "standards compliant" when you're not even close. You're just better than the bigger guy.
If you need web hosting, you could do worse than here
Say what you want but Firefox is still light years ahead of IE. If there's only one thing it has over IE, it's that it follows web standards much, much better.
I agree too, but it's hardly reason to ignore the fact that Firefox does have it's own problems. Look at FF's memory footprint and where Firefox came from and you'll see it's simply a very oversimplified and blunt statement about the ugliest bits that no one likes to focus on.
It's not clear exactly what you did here, but it sounds like what you did is just start coding, then come to Mozilla a few months later and say, "hey! we have code for you!" IF that is what you did, then next time you should probably get in contact with the developers and discuss the feature you want to add and how it should be done. It's hard to be coordinated when everyone is just giving stuff, and more importantly, it can be hard to change the way you were planning on organizing things suddenly, even if the new way is better.
Not sayin' you're wrong, just addin' my thoughts
Qxe4
*cough*OLPC*cough*
"The fight for freedom has only just begun." - Geert Wilders
Opera is great as well, but it lacks the customization of Firefox that I've grown to love. I used to use Opera all the time, but then I started using Firefox and these little things called add-ons kept me coming back.
I fail to see how scrapping bugfixes and a perfectly functional framework is considered 'cruft'. Sure, they got a lot of bugs, in the same sort of way that a nuclear explosion is bound to kill a few bad guys somewhere. They also killed a lot of stuff that was perfectly salvageable and they'd have to rewrite, and the only reason Firefox 'caught up' is because IE simply didn't going anywhere for five years.
The Netscape code was a perfect example of how to mismanage a rewrite operation.
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?
Do it yourself, because no one else will do it yourself. [beta blockade 10-17 Feb]
How could I have been so stupid? I just forgot about enabling the "get multi-million dollar revenue stream for my open source project" option on Sourceforge.
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.
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.
Actually, part of the reason that you pay a project manager big bucks is that s/he will avoid such scope creep, and use big hammers to ensure that there is none.
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.
Support NYCountryLawyer RIAA vs People
This article is usually referenced whenever the subject turns to complete rewrites. I agree - they're over-rated and done too often. As Joel in the article points out, it's easier and more fun to write code than to read it.
Advice: on VPS providers
Probably because for most of its life it was not free. Opera dropped the pricetag when Firefox came along.
Because Opera quite simply missed the boat. It's certainly not because of a lack of features or because it is closed source. They had a golden opportunity but failed to act and did such a piss poor job of marketing the browser that they just haven't had the uptake despite the feature set and innovations they have had.
But isn't this whole story about that - ALL the things that make any project successful?
The original scrapping of the Netscape code was a big part of killing Netscape and allowing IE to take the whole market away. Most likely a strong refactoring would have produced results quicker; of course all the egos... I mean programmers involved wouldn't have been able to indulge their "this code is crap lets throw it away" attitude.
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.
For every expert, there is an equal and opposite expert. - Arthur C. Clarke
It looks like Mozilla developers are going Pidgin's way by ignoring their users. Many of us don't like new "smart" address bar that uses some arcane algorithm to sort suggested results. Unfortunately, there is no way to change address bar behavior to Firefox 2 style (when I type sl in the address bar, I want to see slashdot.org as my first result instead of some combination of my bookmarks and random pages). The worst thing about it is that there is no way to disable this "feature". I don't really mind when they bloat Firefox with some features that might appeal to some users, but I *do* mind when they make no option to turn them off.
I would probably go crazy if there was no way to change default Windows theme to Classic.
Your comment makes me wonder if you're a professional software developer. Maybe you're a manager?
"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.
It's rare that you're presented with a knob whose only two positions are Make History and Flee Your Glorious Destiny.
Missed which boat?
http://www.opera.com/b2b/
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.
Joel makes some good points but also some very bad ones. I'll give him that a big project takes long to rewrite and gives the competition a chance to leap ahead. You'll have to find a way to deal with that. I'll also give him that many programmers tend to suffer from the NIH syndrome (what he calls "code is harder to read than to write" which is only true if the code really is a big mess that does needs a rewrite or if the developer trying to read it is really inexperienced). I'll also give him old code has been tested and the standing bugs are known (no, they are not fixed because that cannot be done in the old codebase unless you're willing to throw a lot of time/money at it). But that is in no way reason to dismiss a rewrite.
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.
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.
Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
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.
This sig does not contain any SCO code.