Geeks With Blogs
Jonathan Starr's Blog Thoughts on C#, Ajax, WCF, LINQ, Agile et al.
improve my => 'code' Add to Google

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


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 7, 2007 5:38 PM Philosophy , Software Design , Personal | Back to top

Comments on this post: Ship of Theseus and Software Engineering

# re: Ship of Theseus and Software Engineering
Requesting Gravatar...
The ship idea is a very neat way of thinking of this. It really makes you stop and think. Odd.
Left by Robert Micsky on Jan 18, 2008 3:36 AM

# re: Ship of Theseus and Software Engineering
Requesting Gravatar...
Many thanks for useful information. Take few minutes and turn your attention to outsource software development team, I know you are interested in this customized software and solutions.
Left by Outsourcing Development on Jun 27, 2011 6:25 AM

Your comment:
 (will show your gravatar)

Copyright © Jonathan Starr | Powered by: