Posts
74
Comments
75
Trackbacks
0
Ship of Theseus and Software Engineering
improve my => 'code' Add to Google

I have always found the essential idea behind the Ship of Theseus interesting.

From Wikipedia.org

According to Greek legend as reported by Plutarch,


The ship wherein Theseus and the youth of Athens returned [from Crete] had thirty oars, and was preserved by the Athenians down even to the time of Demetrius Phalereus, for they took away the old planks as they decayed, putting in new and stronger timber in their place, insomuch that this ship became a standing example among the philosophers, for the logical question of things that grow; one side holding that the ship remained the same, and the other contending that it was not the same.

Plutarch thus questions whether the ship would remain the same if it were entirely replaced, piece by piece. As a corollary, one can question what happens if the replaced parts were used to build a second ship. Which, if either, is the original Ship of Theseus?

So, my question is this:  As we software engineers refactor someone else's code, or convert the application to use a new framework (like .NET 3.5?), at what point is the new application essentially not the same as the legacy application that you improved? 

Is it when the majority of use cases have changed for the software?  When not a single line of code remains from the original legacy app?  When a patent lawyer says so?

If it based on an old application, will copyright laws still apply?

Let's consider a few different cases:

Example 1:

Developer writes a "Hello World" application.  Another developer uses this to start his own appplication (for apparently no good reason), and erases all of code from the original, and writes functionality that has nothing related to the original except that the entry point is still "public void main ( string [] args){}." 

A good argument could be made that this application is not "the original ship of Theseus."

Example 2:

Developer A writes a web application that performs tasks X,Y, and Z.  Developer B refactors the code for this web application which still performs tasks X,Y and Z. 

It may be reasonable to say that this application is essentially "the original ship of Theseus."

Interested in your comments!

 

posted on Friday, December 07, 2007 5:38 PM Print
Comments
Gravatar
# re: Ship of Theseus and Software Engineering
Robert Micsky
1/18/2008 3:36 AM
The ship idea is a very neat way of thinking of this. It really makes you stop and think. Odd.

Post Comment

Title *
Name *
Email
Url
Comment *  
Please add 8 and 4 and type the answer here:
News
Jonathan Starr is a developer in Saint Louis, MO. He holds an MBA in Finance from Columbia Business School and earned his MCSD from Microsoft.


All statements in this blog are personal opinions and do not reflect the opinions of his employer.





Related Sites
Join My Community at MyBloglog!

Tag Cloud