A Brief History of BSD Net/1, Net/2
I found the answers while browsing the old OpenBSD release notes today. The release note of OpenBSD 4.4 contains a brief history of BSD Net/1 and Net/2. While it doesn't answer exactly what code or which features were removed and rewritten from the BSD codebase (time for me to start digging up the source code and Usenet archives?), but still offers much historical insight on its development process.
Nearly 10 years ago Kirk McKusick wrote a history of the Berkeley Unix distributions for the O'Reilly book "Open Sources: Voices from the Open Source Revolution". We recommend you read his story, entitled "Twenty Years of Berkeley Unix From AT&T-Owned to Freely Redistributable" first, to see how Kirk remembers how we got here. Sadly, since it showed up in book form originally, this text has probably not been read by enough people.
The USL(AT&T) vs BSDI/UCB court case settlement documents were not public until recently; their disclosure has made the facts more clear. But the story of how three people decided to free the BSD codebase of corporate pollution — and release it freely — is more interesting than the lawsuit which followed. Sure, a stupid lawsuit happened which hindered the acceptance of the BSD code during a critical period. But how did a bunch of guys go through the effort of replacing so much AT&T code in the first place? After all, companies had lots of really evil lawyers back then too — were they not afraid?
After a decade of development, most of the AT&T code had already been replaced by university researchers and their associates. So Keith Bostic, Mike Karels and Kirk McKusick (the main UCB CSRG group) started going through the 4.3BSD codebase to cleanse the rest. Keith, in particular, built a ragtag team (in those days, USENIX conferences were a gold mine for such team building) and led these rebels to rewrite and replace all the Imperial AT&T code, piece by piece, starting with the libraries and userland programs. Anyone who helped only got credit as a Contributor — people like Chris Torek and a cast of .. hundreds more.
Then Mike and Kirk purified the kernel. After a bit more careful checking, this led to the release of a clean tree called Net/2 which was given to the world in June 1991 — the largest dump of free source code the world had ever received (for those days — not modern monsters like OpenOffice).
Some of these ragtags formed a company (BSDi) to sell a production system based on this free code base, and a year later Unix System Laboratories (basically AT&T) sued BSDi and UCB. Eventually AT&T lost and after a few trifling fixes (described in the lawsuit documents) the codebase was free. A few newer developments (and more free code) were added, and released in June 1994 as 4.4BSD-Lite. Just over 14 years later OpenBSD is releasing its own 4.4 release (and for a lot less than $1000 per copy).
The OpenBSD 4.4 release is dedicated to Keith Bostic, Mike Karels, Kirk McKusick, and all of those who contributed to making Net/2 and 4.4BSD-Lite free.
My following answer with more details was based on the OpenBSD release note and Kirk McKusick's article.
BSD Net/1
The first "unencumbered" BSD release free from such restrictions was BSD Net/1, which was a BSD release based on 4.3BSD-Tahoe. By removing all proprietary AT&T code, the entire system became freely available,
This is incorrect. BSD Net/1 was not a full operating system, it was only a small part of it - namely the TCP/IP networking code from 4.3BSD kernel and its userspace utilities. It was copied from the main BSD codebase and released as an independent software package. Because the TCP/IP code was BSD's original work and didn't exist in the original Unix 32/V (a 32-bit VAX port of Unix v7) at all, Berkeley had the rights to release it under the free BSD license. The motivation was to allow PC software vendors to implement TCP/IP in their products using the existing BSD code, without an expensive Unix license (which was required to use the "full" BSD).
So the answer to the first question is clear: What code was removed from BSD/Net1? The entire operating system.
BSD Net/2
By removing the AT&T code, what was its impact on the features and functionalities of BSD? Was it a complete removal, or was it a partial replacement with reimplementation of affected features?
TL;DR: It was a heroic effort to replace and reimplement nearly all affected features in the system.
BSD Net/2 was a further progression of the campaign to free BSD, after the success of Net/1, naturally, BSD developers started to take the idea further to release not just the TCP/IP stack, but a free version of the entire operating system.
In fact, BSD had a major advantage here. By the time 4.3BSD has released, the development of BSD has already been independent from AT&T for more than a decade - ever since the commercialization of Unix, Berkeley quickly stepped into the clearing-house role previously provided by the Bell Laboratories - thus, many components in the kernel from AT&T had already been replaced by university researchers and their associates at this point.
Nevertheless, freeing the entire system was still not an easy task, a major rewrite was needed for the entire userland. So developers at Berkeley started a major campaign, lead by Keith Bostic, Mike Karels and Kirk McKusick. To attack this problem, Keith Bostic organized an informal team with hundreds of contributors recruited from the Internet and USENIX conferences, pioneered the use of online community which would later become the norm in free and open source software.
Their mission was to replace and rewrite Unix utilities from scratch solely based on their public descriptions, one binary at a time. And as always, should they choose to accept it, their only compensation would be to have their name listed among the Berkeley contributors next to the name of the utility that they rewrote, and nothing more. Initially, progress was slow and only trivial utilities were being rewritten, but as time went by, the list of freed Unix utilities soon exceeded 100 - more and more contributors joined the project. It was a spectacular success - within just 18 months, "nearly all the important utilities and libraries had been rewritten."
The next step was painstakingly going through the BSD kernel and checking hundreds of files, one by one, for their copyright status. And after several months of audit, it turned out that the entire kernel was almost clean; the vast majority of code were either developed at BSD, or could be rewritten easily. Only 6 files were technically challenging, thus the affected code was implemented and those 6 files were removed. The University administration gave clearance to the release of BSD Net/2. And the rest was history.
Closing the gap from the Networking Release 2 distribution to a fully functioning system did not take long. Within six months of the release, Bill Jolitz had written replacements for the six missing files. He promptly released a fully compiled and bootable system for the 386-based PC architecture which he called 386/BSD. Jolitz's 386/BSD distribution was done almost entirely on the Net. He simply put it up for anonymous FTP and let anyone who wanted it download it for free. Within weeks he had a huge following.
Unfortunately, the demands of keeping a full-time job meant that Jolitz could not devote the time needed to keep up with the flood of incoming bug fixes and enhancements to 386/BSD. So, within a few months of the release of 386/BSD, a group of avid 386/BSD users formed the NetBSD group [...] The FreeBSD group was formed a few months after the NetBSD group with a charter to support just the PC architecture and to go after a larger and less technically advanced group of users, much as Linux had done.
Lawsuits
After the release of BSD Net/2, a for-profit company, Berkeley Software Design, Incorporated (BSDi) also formed to sell a Net/2-based commercial Unix. It presented itself as a serious competitor, with an independent system free from AT&T/USL's copyright. And in their early aggressive advertising campaign, it marketed that the system was available at $995, just 1% of the USL's price. BSDi also used the phone number 1-800-ITS-Unix for sales and marketing (the "ITS Unix" phone number was later dropped due to trademark infringement, which is part of the puzzling legal history of the Unix trademark).
Seeing USL's monopoly was being threatened, it was at this point that USL started its lawsuits.
vi
being a problem because it still included parts ofed
.ed
? Are you sure it wasn'tex
?ex
andvi
are the same program. If invoked asvi
, it starts up in visual mode.