Rewrite (programming)

Last updated

A rewrite in computer programming is the act or result of re-implementing a large portion of existing functionality without re-use of its source code. When the rewrite uses no existing code at all, it is common to speak of a rewrite from scratch.

Contents

Motivations

A piece of software is typically rewritten when one or more of the following apply:

Risks

Several software engineers, such as Joel Spolsky [1] have warned against total rewrites, especially under schedule constraints or competitive pressures. While developers may initially welcome the chance to correct historical design mistakes, a rewrite also discards those parts of the design that work as required. A rewrite commits the development team to deliver not just new features, but all those that exist in the previous code, while potentially introducing new bugs or regressions of previously fixed bugs. [2] [3] A rewrite also interferes with the tracking of unfixed bugs in the old version. [4]

The incremental rewrite is an alternative approach, in which developers gradually replace the existing code with calls into a new implementation, expanding that implementation until it fully replaces the old one. This approach avoids a broad loss of functionality during the rewrite. Cleanroom software engineering is another approach, which requires the team to work from an exhaustive written specification of the software's functionality, without access to its code. [5]

Examples

Netscape's project to improve HTML layout in Navigator 4 has been cited as an example of a failed rewrite. The new layout engine (Gecko) had developed independently from Navigator and did not integrate readily with Navigator's code; hence Navigator itself was rewritten around the new engine, breaking many existing features and delaying release by several months. Meanwhile, Microsoft focused on incremental improvements to Internet Explorer and did not face the same obstacles. [3] [6] Ironically, Navigator itself was a successful cleanroom rewrite of NCSA Mosaic overseen by that program's developers. See Browser wars.

Some projects mentioning major rewrites in their history:

Techniques

See also

Related Research Articles

<span class="mw-page-title-main">JavaScript</span> High-level programming language

JavaScript, often abbreviated as JS, is a programming language and core technology of the World Wide Web, alongside HTML and CSS. As of 2024, 98.8% of websites use JavaScript on the client side for webpage behavior, often incorporating third-party libraries. All major web browsers have a dedicated JavaScript engine to execute the code on users' devices.

<span class="mw-page-title-main">Netscape Navigator</span> Web browser by Netscape released in 1994

Netscape Navigator is a discontinued proprietary web browser, and the original browser of the Netscape line, from versions 1 to 4.08, and 9.x. It was the flagship product of the Netscape Communications Corp and was the dominant web browser in terms of usage share in the 1990s, but by around 2003 its user base had all but disappeared. This was partly because the Netscape Corporation did not sustain Netscape Navigator's technical innovation in the late 1990s.

Netscape Communications Corporation was an American independent computer services company with headquarters in Mountain View, California, and then Dulles, Virginia. Its Netscape web browser was once dominant but lost to Internet Explorer and other competitors in the so-called first browser war, with its market share falling from more than 90 percent in the mid-1990s to less than one percent in 2006. An early Netscape employee Brendan Eich created the JavaScript programming language, the most widely used language for client-side scripting of web pages and a founding engineer of Netscape Lou Montulli created HTTP cookies. The company also developed SSL which was used for securing online communications before its successor TLS took over.

Jamie Werner Zawinski, commonly known as jwz, is an American computer programmer, blogger and impresario. He is best known for his role in the creation of Netscape Navigator, Netscape Mail, Lucid Emacs, Mozilla.org, and XScreenSaver. He is also the proprietor of DNA Lounge, a nightclub and live music venue in San Francisco.

<i>The Cathedral and the Bazaar</i> Book by Eric S. Raymond

The Cathedral and the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary is an essay, and later a book, by Eric S. Raymond on software engineering methods, based on his observations of the Linux kernel development process and his experiences managing an open source project, fetchmail. It examines the struggle between top-down and bottom-up design. The essay was first presented by Raymond at the Linux Kongress on May 27, 1997 in Würzburg (Germany) and was published as the second chapter of the same‑titled book in 1999.

Gecko is a browser engine developed by Mozilla. It is used in the Firefox browser, the Thunderbird email client, and many other projects.

Feature creep is the excessive ongoing expansion or addition of new features in a product, especially in computer software, video games and consumer and business electronics. These extra features go beyond the basic function of the product and can result in software bloat and over-complication, rather than simple design.

<span class="mw-page-title-main">ActiveX</span> Software framework by Microsoft introduced in 1996

ActiveX is a deprecated software framework created by Microsoft that adapts its earlier Component Object Model (COM) and Object Linking and Embedding (OLE) technologies for content downloaded from a network, particularly from the World Wide Web. Microsoft introduced ActiveX in 1996. In principle, ActiveX is not dependent on Microsoft Windows operating systems, but in practice, most ActiveX controls only run on Windows. Most also require the client to be running on an x86-based computer because ActiveX controls contain compiled code.

An end-of-life product is a product at the end of the product lifecycle which prevents users from receiving updates, indicating that the product is at the end of its useful life. At this stage, a vendor stops the marketing, selling, or provisioning of parts, services, or software updates for the product. The vendor may simply intend to limit or end support for the product. In the specific case of product sales, a vendor may employ the more specific term "end-of-sale" ("EOS"). All users can continue to access discontinued products, but cannot receive security updates and technical support. The time-frame after the last production date depends on the product and relates to the expected product lifetime from a customer's point of view. Different lifetime examples include toys from fast food chains, mobile phones and cars.

Software bloat is a process whereby successive versions of a computer program become perceptibly slower, use more memory, disk space or processing power, or have higher hardware requirements than the previous version, while making only dubious user-perceptible improvements or suffering from feature creep. The term is not applied consistently; it is often used as a pejorative by end users (bloatware) to describe undesired user interface changes even if those changes had little or no effect on the hardware requirements. In long-lived software, perceived bloat can occur from the software servicing a large, diverse marketplace with many differing requirements. Most end users will feel they only need some limited subset of the available functions, and will regard the others as unnecessary bloat, even if end users with different requirements require those functions.

The Book of Mozilla is a computer Easter egg found in the Netscape, Mozilla, SeaMonkey, Waterfox and Firefox series of web browsers. It is viewed by directing the browser to about:mozilla.

<span class="mw-page-title-main">Joel Spolsky</span> American software engineer and writer

Avram Joel Spolsky is a software engineer and writer. He is the author of Joel on Software, a blog on software development, and the creator of the project management software Trello. He was a Program Manager on the Microsoft Excel team between 1991 and 1994. He later founded Fog Creek Software in 2000 and launched the Joel on Software blog. In 2008, he launched the Stack Overflow programmer Q&A site in collaboration with Jeff Atwood. Using the Stack Exchange software product which powers Stack Overflow, the Stack Exchange Network now hosts over 170 Q&A sites.

This is a comparison of both historical and current web browsers based on developer, engine, platform(s), releases, license, and cost.

The history of the Mozilla Application Suite began with the release of the source code of the Netscape suite as an open source project. Going through years of hard work, Mozilla 1.0 was eventually released on June 5, 2002. Its backend code base, most notably the Gecko layout engine, has become the foundation of a number of applications based on Mozilla, including the Mozilla Foundation's flagship product Mozilla Firefox and Mozilla Thunderbird. While the suite is no longer a formal Mozilla product, its development and maintenance is continued as the SeaMonkey community project.

<span class="mw-page-title-main">Mozilla Application Suite</span> Discontinued Internet suite

The Mozilla Application Suite is a discontinued cross-platform integrated Internet suite. Its development was initiated by Netscape Communications Corporation, before their acquisition by AOL. It was based on the source code of Netscape Communicator. The development was spearheaded by the Mozilla Organization from 1998 to 2003, and by the Mozilla Foundation from 2003 to 2006.

Big design up front (BDUF) is a software development approach in which the program's design is to be completed and perfected before that program's implementation is started. It is often associated with the waterfall model of software development.

<span class="mw-page-title-main">Netscape (web browser)</span> Family of web browsers

The Netscape web browser is the general name for a series of web browsers formerly produced by Netscape Communications Corporation, which eventually became a subsidiary of AOL. The original browser was once the dominant browser in terms of usage share, but as a result of the first browser war, it lost virtually all of its share to Internet Explorer due to Microsoft's anti-competitive bundling of Internet Explorer with Windows.

<span class="mw-page-title-main">Netscape Mail & Newsgroups</span>

Netscape Mail and Newsgroups, commonly known as just Netscape Mail, was an email and news client produced by Netscape Communications Corporation as part of the Netscape series of suites between versions 2.0 to 7.2. In the 2.x and 3.x series, it was bundled with the web browser. In the 4.x series, it was rewritten as two separate programs known as Netscape Messenger and Netscape Collabra.

Mozilla is a free software community founded in 1998 by members of Netscape. The Mozilla community uses, develops, publishes and supports Mozilla products, thereby promoting exclusively free software and open standards, with only minor exceptions. The community is supported institutionally by the non-profit Mozilla Foundation and its tax-paying subsidiary, the Mozilla Corporation.

References

  1. Spolsky, Joel. "Things You Should Never Do, Part I". Joel on Software. Retrieved 2015-01-23.
  2. Ronkes Agerbeek, Joost (April 15, 2005). "Never Rewrite Code From Scratch". Archived from the original on October 10, 2008. Retrieved 2008-09-11.
  3. 1 2 Spolsky, Joel (April 6, 2000). "Things You Should Never Do" . Retrieved 2008-09-11.
  4. Zawinski, Jamie. "Cascade of Attention-Deficit Teenagers" . Retrieved 2008-09-11.
  5. Tilly, Ben (September 29, 2001). "Rewriting, from scratch, a huge code base" . Retrieved 2008-09-11.
  6. Zawinski, Jamie (March 31, 1999). "resignation and postmortem" . Retrieved 2008-09-11.