On 04.12.2005 17:00, Sylvain Wallez wrote:

Start a whiteboard prototype if you feel like it, but to me it seem quite risky to try to rewrite everything from scratch, although I have felt the urge myself countless time while struggling with the messy internals. But before you go ahead and rewrite everything from scratch, take some minutes and read why Joel Spolesky thinks that rewriting software from scratch is the:

 *single worst strategic mistake* that any software company can make

http://www.joelonsoftware.com/articles/fog0000000069.html.


Although I most often find Joel Spolsky's writings very enlightning, I always disagreed with that one. And to understand why, consider what is your main browser and what mail software you used to write this. The headers say "User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206)".

IMO Joel mixes two different things in his post: parts of code and a complete code base of any software. His samples with string function and the "two page function" can probably be refactored without any problem and he is absolutely right about not just throwing it away. But it might be very different for complete code bases. How many of these "bug fixes" in the code base are for fixing obsolete things (e.g. Netscape's way of rendering HTML following the standards not that well)? And also what's the effort of getting such a code base refactored in comparison to its rewriting - including the maintenance phase, fixing of bugs should be much easier than before.

Now what about Cocoon? Is Cocoon a 500.000 LOC beast which can not be refactored or maintained? Or is Cocoon more or less a collection of many components? IMO it is the latter and we should follow Marc's proposal of separating these components into layers. The effort should not be that high to this in an incremental way instead of starting from scratch.

Jörg

Reply via email to