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