vi clones
The original vi program was written by Bill Joy in 1979, with later modifications by Mark (now Mary Ann) Horton, et al..
It can be found, still present, in several modern operating systems; specifically, the ones that descend from OpenSolaris.
It is exceedingly unlikely that you are using original vi, or its 'Heirloom vi' fork made by Gunnar Ritter in 2002.
The Joy+Horton code was encumbered with a restrictive copyright licence until the 21st century, when the source code of Solaris was finally opened up.
This, and the personal computer revolution of the 1980s, led to the existence of many clones of vi, both for non‐Unix platforms and for Unices (e.g. the BSDs) where a free software replacement for encumbered Joy+Horton vi was desired early on.
N.B.:
It is somewhat facile, but it is largely my experience that whatever the list, there is always one more clone of vi than the list has.
Even though I had given this answer longhand already in on‐line discussions, I found two more clones worth listing during the process of creating the infoboxes for this FGA.
vi
The earliest clone of vi that I can trace is the one that is most forgotten: the one sold by Mortice Kern Systems (MKS).
MKS sold what it named the "MKS Toolkit", which was a suite of Unix‐style utilities, from ls to vi, for non‐Unix platforms.
Per its "Now with vi" advertising in the likes of Dr Dobbs Journal, MKS vi was first released in 1986, the Toolkit itself dating from 1984.
Mortice Kern Systems was founded by people who had worked at the Mark Williams Company on Coherent, a ground‐up reimplementation of Unix initially for 16‐bit and later for 32‐bit processors. MKS progressively cloned a vast range of AT&T and BSD tools. With a suitable supply of 1980s computer magazines, it is possible to plot the growth of the Toolkit over the years as the number of cloned utilities listed in the adverts grows. Beginning with just 50 utilities, it has around 450 today.
Over the years, the Toolkit would be available for MS/PC/DR-DOS and Windows NT. There was even a 16‐bit OS/2 version at one point. Famously, a slightly modified version of the MKS Toolkit would provide the command‐line tools for Microsoft's first POSIX subsystem on Windows NT.
I am not sure that MWC itself cloned a Unix full‐screen text editor for Coherent.
Its magazine advertising from 1982 mentions 'ED' ('a context‐oriented text editor with regular expression patterns') which is clearly a clone of (Say it with me, now!) the to‐be Unix Standard editor ed, and its later versions advertized the inclusion of a later clone, elvis.
MKS vi is probably the longest‐lived actual clone, as it is still (at the time of writing this Frequently Given Answer) on the market.
vi
Watcom vi is bundled with the (Open)Watcom C/C++/FORTRAN compiler.
The compiler, and hence Watcom vi, was originally available for 16‐bit MS/PC/DR-DOS, then for 32‐bit using a DOS extender, 16‐bit and 32‐bit OS/2, and Win32.
(It could also target Novell Netware and QNX.)
After open sourcing, it was ported to Linux.
It lays claim to being the actual earliest clone of vi, also still extant today, as the copyright declarations in the source code are dated 1983, the year before MKS vi was published.
However, I am not persuaded of this claim and suspect instead a blanket copyright update that has erased the true dating as part of the open sourcing process, because:
They also attribute the copyright to Sybase, the company that purchased Powersoft (the company that purchased Watcom) and then open‐sourced the compiler code, which did not exist in 1983. (Watcom was originally a commercial offshoot of the University of Waterloo, in Ontario, Canada; hence the 'Wat' in the name.)
They give a 1983 copyright to the Windows NT and 32‐bit OS/2 platform‐specific portions of Watcom vi, neither of which operating system existed in 1983.
Indeed, the Watcom C compiler itself did not exist prior to 1988.
The earliest mention so far that I have found of the Watcom editor, which notes that it supports function keys unlike Joy+Horton vi and does not understand why a PC program ignoring ⎈+[ (i.e. the ESC character) is something weird to note, is Stephen Randy Davis's review of Watcom C 6.5 in the September 1988 edition of PC Magazine.
(The editor for Watcom BASIC, reviewed in 1985, is a different editor.)
By the way:
Ignoring that key combination is weird and notable for its target usership because there's no reason for a PC program to work this way; and the behaviour is clearly a hang-over from a design originally aimed at parsing ECMA-35 terminal escape sequences.
PC full-screen editors just read the keyboard using low-level console I/O which is a different I/O paradigm to terminal I/O and has no reason to treat (ISO 9995-7 symbols) ⎈+[ or indeed ⎋ as special.
Watcom vi is an interesting admixture of straighforward vi paradigms, such as modality and tildes denoting non-existent lines, with full-screen MS/PC/DR-DOS editor paradigms such as function key and menu bars and the use of colour (as contemporary text editors for CGA displays on the IBM PC and clones all already did) years before it appeared anywhere else in the vi world.
Thus: An earlier clone was STEVIE.
comp.sources.unix v15 (archived by Andy Valencia)
One of the next earlist clones of vi after MKS vi was STEVIE, originally written as a vi for the Atari ST in 1987 by Tim Thompson.
This was one of the cases of a clone coming about because someone wanted vi on a non-Unix platform.
Thompson posted it to the Usenet comp.sys.atari.st newsgroup in 1987, and pretty much abandoned it.
Tony Andrews picked it up, however, ported it to Unix and (then 16‐bit) OS/2; and posted it to the Usenet comp.sources.unix newsgroup in 1988.
To the cognoscenti, who know the corny acrostic, it is 'STEVIE', not 'stevie'.
STEVIE is the first vi clone that I myself modified.
I experimented with fixing some of its inefficiencies (as my terminals were not particularly fast ones, which really highlighted some of the redrawing optimizations that it was lacking) and display bugs (mentioned in its README) and porting it to MS-DOS.
Alas, my access to Usenet, from the U.K., was entirely read-only and I was never able to send what I did to anyone.
I sometimes wonder what would have happened had I been able to tell those people in a faraway country on another continent what I had done.
Because of elvis.
Steve Kirkendall wrote elvis because of a bad experience with the bugs in STEVIE. It was a ground-up reimplementation that initially targetted Minix in 1990. John Campbell would port it to VMS in 1991, and Mike Rieser to AmigaDOS in 1992. Other ports included platforms that people in the 21st century will likely never have heard of, including the Atari TOS, Coherent, and OS9/68000.
By version 2 it had gained an HTML on-line help system, a novelty for the time; and for the remainder of the decade it was a significant influence on a later clone, VIM. The doco of VIM includes a number of things that Kirkendall and others put into elvis, that seemed to be good ideas and that were then adopted into VIM.
One of its offshoots was nvi.
NetBSD base: /usr/src/external/bsd/nvi
OpenBSD base: /usr/src/usr.bin/vi/vi
pkgsrc: editors/nvi
Debian: nvi
Arch: nvi
Void: nvi
Keith Bostic's nvi is, quite simply, 'new vi'. Bostic nvi began in 1993 as a fork of elvis 1.8, but has long since diverged from its origin.
It was created for the very simple reason that removing any whiff of AT&T code, in order to make 4.4BSD, entailed losing Joy+Horton vi.
It is what one used to find as the vi in the base operating system in the free software BSDs, and still finds in a couple of them today.
Or, strictly speaking, various forks of nvi, as they have all diverged from each other over the years, to various extents.
Not all of the BSDs have nvi in base any more, moreover. Some have nvi2.
FreeBSD base: /usr/src/contrib/nvi
MidnightBSD base: /usr/src/contrib/nvi
DragonFlyBSD base: /usr/src/contrib/nvi2
pkgsrc: editors/nvi2
FreeBSD ports: editors/nvi2
OpenBSD ports: editors/nvi
Bostic nvi has a long‐standing problem with UTF-8 and MBCS support. As a Google Summer of Code project in 2011, Zhihao Yuan built upon some prior work by Jun-ichiro Itojun Hagino (author of nvi-m17n) to add multibyte encoding support to Bostic nvi, creating nvi2.
In 2013, Peter Wemm brought a lot of this into the nvi that is in FreeBSD base, and FreeBSD's nvi is now largely nvi2 albeit only intermittently kept sychronized. The FreeBSD derivatives have followed suit. DragonFlyBSD explicitly imported nvi2 wholesale into its base.
Just to make sure that things are not simple and straightforward, OpenBSD's nvi in its ports collection is in fact nvi2, nvi2 has adopted some stuff done to OpenBSD's nvi in base since it forked, and FreeBSD doubles up the nvi that is effectively nvi2 that it has in base with another nvi2 in its ports collection. Justin C. Sherrill of the DragonFly Digest, would no doubt laud the extensive back‐and‐forth cross‐pollination, although this sort of thing does upset the Linux‐based operating system packagers who look for a single place that they can point at as so‐called 'upstream'.
None of the major (non‐pkgsrc) Linux‐based operating systems package up nvi2. They only have nvi, if they have anything from this lineage at all. (RedHat EPEL does not have nvi.) It is saddening to see how large a number of patches the likes of Debian and Void maintain against nvi, including a long list of manual page markup corrections from 2007, rather than switch to nvi2, which revised and updated the manual page to have all that and more in 2011 and 2013.
pkgsrc: editors/vim
FreeBSD ports: editors/vim
OpenBSD ports: editors/vim
Debian: vim
Arch: vim
Void: vim
Tribblix: cli-tools
The most famous vi clone is Bram Moolenaar's VIM.
It was a modified version of STEVIE, which Moolenaar had originally ported to the Commodore Amiga.
Released as "VI iMitation" in 1991, it gained its current name with version 2.0 in 1992.
By the middle of the decade, Moolenaar was putting out both the source and pre-built binary versions of VIM for MS/PC/DR-DOS (both ordinary 16‐bit and a 32‐bit version that used a DOS extender) and Win32 (console and GUI). These can still be found on shareware collection CD-ROMs and in places like the University of Kent mirror service. Interestingly, whilst Moolenaar built and published binaries for such niche platforms as MIPS and PowerPC Windows NT, xe never produced binaries for even 16‐bit OS/2, let alone 32‐bit OS/2 (far more widespread than any non-IA32 flavour of Windows NT). The OS/2 binaries were built using EMX C/C++ by Alex Taylor.
There are entire books on VIM, such as Ruslan Osipov's Mastering VIM or the O'Reilly book with the tarsier on the cover, which give potted development histories, including what features were added when, and the like. See those for further detail.
pkgsrc: editors/neovim
FreeBSD ports: editors/neovim
OpenBSD ports: editors/neovim
Debian: neovim
Arch: neovim
Void: neovim
RedHat EPEL: neovim
NeoVIM is a fork of VIM, developed since 2014 by Justin M. Keyes and others. It began with the aim of stripping out some of the features of VIM that the authors saw as less useful (such as ex mode and termcap support) and introducing things such as terminal buffers (a feature that VIM then copied, just as it copied things from elvis).
Ruslan Osipov's Mastering VIM also has a chapter on NeoVIM.
pkgsrc: editors/neatvi
Void: neatvi
Ali Gholami Rudi's neatvi is a ground-up clone that xe began in 2015.
Kyryl Melekhini forked it to make nextvi in 2020.
viless was created by Sterling Huxley in 2000.
It is the vi clone provided by BusyBox.
In 2020 Brent Roman extracted it from BusyBox to be a standalone tool.