Hacker News new | ask | show | jobs
by mjn 4494 days ago
> tl;dr Things you should never do: rewrite the code from scratch.

Considering vim itself is a from-scratch 'vi' clone, that's interesting advice. :)

But in any case, I see this as more of a fork than a rewrite. It's more akin to the XEmacs/GNU Emacs situation, where someone submits significant patches upstream which aren't accepted, and then forks their own version to continue that line of development.

2 comments

I think that's an excellent point. Vim is, after all, "Vi iMproved." nvi is a clone.
Clones and rewrites aren't really comparable, though.
They're pretty comparable. A "clone" can almost always be considered a subset of a "rewrite". Both involve a new software system that is directly inspired by an existing one.

The main difference is that a clone is often written by developers who had no involvement with the development of the original system. But that's not always true, especially for any old or sizable software system, where the original developers may no longer be involved.

I think you are coming dangerously close to muddy semantics. Let's say: a clone is a clone- git clone, hg clone, etc.

A rewrite may start with a clone, but the code is no longer a clone when you start the rewrite.

A refactor is a subset of a rewrite.

Now we can have meaningful discussions about them.