📝 en ~ 4 min

The Ship of Theseus and Yarn 2

Share this post

The launch of Yarn 2, besides breaking changes features and a programming language from 1972 to its core, bring back also a philosophical discussion with more than 2000 years!

In a, now deleted tweet, Sebastian McKenzie posted:

Yarn 2 shouldn’t even be called Yarn. Change every piece of a ship and it’s a completely new ship, not an evolution. Want to shed previous baggage? New name. Want to make a completely new codebase with a different project philosophy? New name. Otherwise? Thrash the community.

Which is, basically verbatim, the Ship of Theseus paradox.

This particular version of the paradox was first introduced in Greek legend as reported by the historian, biographer, and essayist 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 places, 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.

There’s a lot of proposed resolutions, but undoubtedly the question remains open. A ship was something a Greek in that time share the question in a way was relatable to their day to day. It was one of the most important technologies back in the day: no only for fishing, but for commerce, so important to island and the cultural advancements, and of course, war (which sadly in our history was always a catalyst for technology advancements). Yarn 2 looks like a good opportunity to think about this philosophical problem, because (1) is a relatable technology and (2) we can see clearly the impact of such philosophical questions can gave in our day-to-day and because of rhetoric and framing we can’t always relate to.

Yarn was created by Facebook to be an alternative to NPM. One of the use cases is dependency management for large projects in large companies, so is not “much ado about nothing” as some people jump to conclude, but a rather practical burden on such core function for a project with a lot of side effects and problems arising.

There is an issue on Github, at the moment open, defending the case for change the name of Yarn 2 to something else. Or, defending that the ship is not more of Theseus, but something else completely. The whole thread is really interesting to read, with strong arguments, some more idealistic and other approaches much more pragmatic. And is such a decisive moment for Yarn in particular, that if you find an argument you have was not covered or desire to influence in any way (even with a reaction in a comment you stand by), this is the moment.

We have in the development community a lot of this discussions and Yarn 2 is one more of Ships of Theseus in software. I experienced three with a huge impact on me. AngularJS to Angular 2, the io.js fork from Node and the whole python2 and python3 headache.

Before work with web development I enter a Philosophy course, and even today I read a lot of Philosophy books and I always fascinated by how the themes and questions continues echoing on our daily lives and in the development and I’d love to discuss more with this framing. In which side of the problem you are? Which are other examples of such “Ships of Theseus” you can remember, how was the resolution?