Design Patterns in Mozilla Contest
Heikki Toivonen writes " The "Design Patterns in Mozilla" contest is now underway. The goal is to find and document as many design patterns as possible in the Mozilla source, with the chance to win an autographed copy of "Design Patterns: Elements of Reusable Object-Oriented Software" by Gamma et. al. and gift certificates to Amazon.com. Visit the contest rules page to learn about the details, regarding the two phases of the contest, the submission rules, the source you need to use, and the prizes. "
About design patterns. Read the GoF book by all means, it's a classic, and it provides a new level of vocab for talking about software design...
BUT:
it's kinda boring - especially if you have enough experience for the patterns to be familiar.
Worse, it encourages people to think of software design as a kind of mix and match mechanical process. That is, I believe people should focus on coming up with elegent solutions for their particular problem, and if at the end they say - oh I've used a singleton here and a factory there... then great. The problem arises when people start thinking, well i've got a design
problem here - what category of pattern fits best ? Er, lets see, well I think I should use a "composite object" here, now what group of classes are used to implement that...
Next thing you know someone has churned out a whole shitload of classes, with only the vaguest notion of what they are for, AND THAT'S THE DESIGNER, but with a preposterous belief that he has a good design because he "followed the rules of OO design". And don't even get me started on that Rational Rose/UML crap.
Don't get me wrong. I believe understanding patterns is a good thing. But, it's often used as one more straw to clutch for people who don't really know what they're doing. Like every other technique in software - someone smart creates
something to make life easier, but quite a few people will then take that and use it as an excuse to think less.
Software has gone through this process frequently (assemblers, compilers, procedural software, OO, patterns) at each stage the bar is lowered you make it possible for idiots to create more complex software. It's dangerous. This is why many people prefer C to C++ (not me). Show some piece of MFC based crap to an experienced C programmer and they will recoil in horror, I don't blame them. The more powerful the tools, the bigger piece of vaguely working rubbish an idiot come up with. There is no antidote to sloppy thinking.
Powerful tools make life easier, but paradoxically
require more, not less experience to use well. Having seen what utter crap can be produced when lousy programmers get their hands on OO languages, I shudder to think what monstrosities will be around in a few years time as a result of patterns.
Basically, I'm saying anyone who designs/writes OO software should be aware of patterns, (and UML etc), but then ignore them and concentrate on the actual specific problem. If you're good you will find your own patterns.
To summarise: if you let children play with power tools, you end up with a big fucking mess.
http://rareformnewmedia.com/
Lets all step back 50 feet and see what is happening at /. the great Open Source/Free Software forum.
We gets endless complaints about stuff not being open source, not being free, companies that gets patents on software, proprietary (sp?) software, etc. (Crowd screams) "Give me the source, I need the source code".
Netscape sucks, it crashes, Mozilla will never be out, M$ has won the browser war, blah blah blah.. (Crowd Sreams)"I want a standards complant browser that is better than IE"
I could go on but I won't, i assume you get the point. This is an opportunity to get into the source that everbody must have according to the posts before. Ya it might be dirty work, coding is not glamourous it is work and sometime it is tedious. So instead of being a bunch of hypocryts (sp?) either SHUT UP about wanting stuff to be open source, or take the advantage of an opportunity to further a software project that can make a difference.
Come on people, decide which side of the fence you sit on. You want the source so you can help, OR you can't be bothered to actually help nor do you plan on it.
When you write a line of code for teh kernal you are doing someone work.. When you write a line of code for apache you are doing someones work.. When you help with Mozilla youare doing someones work..
-7021
Is it just me or does the prize seem a bit redundant? If you already have the ability to find all the design patterns in source code, do you really need a copy of a book on design patterns? This is almost like setting up a "crack-me" server and giving away copies of "Network Security for Dummies" to the people who manage to hack it...
---- I made the Kessel Run in under 11 parsecs.
I'd say you're right about the GoF pattern book not being much incentive for folks who would be the best contributors to their documentation project. I was hoping that if you found an interesting new pattern, the Mozilla folks would let you name it (at least as far as their documentation went). But the rules state that only patterns from the book are acceptable.
That's too bad. I'd bet some heavy coin that the exceptional kind of pattern hunters who won't be tempted by Design Patterns would be exceptionally tempted by the possibility of finding a new pattern and then naming it something like Fist of the Firemonkey.
Yes, too bad.
Cheers,
Tom
Easy, automatic testing for Perl.
However, I quite like the idea behind this. It sounds like a wonderfully geek contest! I don't recall seeing other contests which relied on technical capabilities (if you exclude cracking contests), and I'm wondering if it's possible to design a contest which is not someone else's work, and relies on ingenuosity and technical skill.
Say, perhaps, useless things like programming a specific program under a certain amount of memory, or somesuch...
"There is no surer way to ruin a good discussion than to contaminate it with the facts."
Check this out. It's a programming contest archive. If anyone has similar pages, post the url.
As others have pointed out, there are a few things wrong with that contest; first, the fact it sounds as if you're doing someone else's work for cheap
So? There's a name for it, it's called "contributing".
Second, the fact that if you can win this contest, well, you don't need the damn book anyway.
Are you sure? I don't know about you, but no matter how good I get at something, there's always someone better, and someone who can tell me something I don't know. Or suppose I'm the one person in the world to whom this doesn't apply - I can always give the book to my kid brother, or keep it as a trophy.
The bottom line is, I want to be able to build and rebuild Mozilla, a little piece at a time, on my laptop, and I don't really care what process is used to accomplish that. The logical next step, after finding the patterns, is to implement them in a way that reduces the size of the source and the binary by some large factore. Keep going guys, this sounds terrific.
Life's a bitch but somebody's gotta do it.