- Rewrite (programming)
A rewrite in
computer programming is the act or result of re-implementing a large portion of existing functionality without re-use of itssource code . When the rewrite is not using existing code at all, it is common to speak of a rewrite from scratch. When instead only parts are re-engineered, which have otherwise become complicated to handle or extend, then it is more precise to speak ofcode refactoring .Motivation
#When the source code to be able to extend an existing program is not available.
#When the source code is available under an incompatiblelicense .
#When the code cannot be adapted to a new target platform.
#When the existing code has become too difficult to handle and extend.
#When the task ofdebugging the existing code seems too complicated.
#When the programmer finds it difficult to understand the source code.Controversy
Many prominent software developers warn that this technique rarely leads to the intended success, claiming that rewriting is more fun than debugging, but the rewrite requires more time and will have new bugs. [cite web | url=http://www.ronkes.nl/blog/?2005-04-15-neverrewritecode | title=Never Rewrite Code From Scratch | first=Joost | last=Ronkes Agerbeek | date=
April 15 2005 | accessdate=2008-09-11] [cite web | url=http://www.jwz.org/doc/cadt.html | title=Cascade of Attention-Deficit Teenagers | first=Jamie | last=Zawinski | authorlink=Jamie Zawinski | accessdate=2008-09-11]Advocates of this method instead suggest that with every
iteration of the rewrite process an even better version is created, provided the same programmers do the job that already wrote the earlier versions. [cite web | url=http://www.perlmonks.org/?node_id=115511 | title=Rewriting, from scratch, a huge code base | first=Ben | last=Tilly | dat=September 29 2001 | accessdate=2008-09-11] [cite web | url=http://my.opera.com/Vorlath/blog/2007/09/25/code-rewrite-yes | title=Code Rewrite - Yes | author=Vorlath | date=25 September 2007 | accessdate=2008-09-11]History
Both
Borland 's Paradox for Windows and Quattro Pro for Windows started development using beta versions of Windows 3.0, in the spring of 1990. Paradox/Windows ended up delayed about a year beyond its original plan, shipping in early 1993.The reasons were many, but not entirely surprising for a major rewrite, in an
object-oriented programming language with new tools, shifting to a GUI paradigm, on what was essentially a first version operating system. Still it was a big problem for the company andMicrosoft managed to ship Access a couple of months ahead of Paradox for Windows, a major marketing win to Microsoft.Fact|date=September 2008It took
IBM two years to rewriteOS/2 forPowerPC , and by the time the operating system was ready, the market for OS/2 on PowerPC had evaporated.Fact|date=September 2008Netscape 's rewrite of its browser is popularly considered one of the most dramatic strategic mistakes in thehistory of the Internet . [cite web | url=http://www.joelonsoftware.com/articles/fog0000000069.html | title=Things You Should Never Do | first=Joel | last=Spolsky | authorlink=Joel Spolsky | date=April 6 2000 | accessdate=2008-09-11] [cite web | url=http://www.jwz.org/gruntle/nomo.html | title=resignation and postmortem | first=Jamie | last=Zawinski | authorlink=Jamie Zawinski | date=March 31 1999 | accessdate=2008-09-11]References
ee also
*
Open source software development
*Development hell Some projects mentioning major rewrites in their history:
*Apache HTTP Server (1)
*AOL Instant Messenger (1)
*Apple Newton (0)
*BIND (1)
*Freenet (1)
*Fusebox (2)
*Gabber (instant messaging client) (0)
*GRUB (0)
*Majordomo (1)
*MediaWiki (1)
*Mozilla/Netscape (1)
*Icecast (0-1)
*netcat (1)
*OpenRPG (1)
*PHP (1-2)
*Project Xanadu (0-1)
*Sun Secure Global Desktop (1)
*VBulletin (2)
*WebObjects (1)
*Zope (1)External links
* [http://www.c2.com/cgi/wiki?RewriteCodeFromScratch RewriteCodeFromScratch at C2 Wiki]
Wikimedia Foundation. 2010.