On Sat, Aug 31, 2024 at 12:38 AM Greg 'groggy' Lehey <grog@lemis.com> wrote:
On Saturday, 31 August 2024 at  0:12:16 -0400, Noel Chiappa wrote:
>> From: Kevin Bowling
>
>> https://gunkies.org/wiki/BSD/386 and the parent page on seem to suggest
>> it originated off Net/2 directly.
>
> I wouldn't be putting too much weight on what that page says; most of the
> *BSD pages were done by people I don't know well, and who might have gotten
> details wrong

FWIW, my understanding is also that it came from Net/2.  But it's been
a few years now, and I wasn't directly involved.  I just can't think
of anything else from which it could have been derived.

> (So confusing that '386BSD' is something different from
> 'BSD/386'. Was there ever actually a '386/BSD'?)

Not to my knowledge.

> Someone who knows the early history of all the *BSD systems (as in,
> you lived through all that) is welcome, nay invited, to fix any
> errors therein.

I wouldn't exactly call it early history, but my first exposure to
(any kind of) BSD was in March 1992, when I installed BSDI's BSD/386
(something like Beta 0.3.1).  You can read more than you want at
http://www.lemis.com/grog/diary-mar1992.php

I subsequently (August 1992) visited Rob Kolstad, who was running the
show at the time, and he filled me in.  With his help, what I recall
is:

- Some time in or before 1991, a company called Berkeley Software
  Design Inc (BSDI) was formed with the intention of completing and
  marketing a BSD variant.  The system was released as BSD/386 in
  1992.

- BSDI had a number of prominent BSD people, including Bill Jolitz.
  Bill was not in agreement that they should charge money for it, and
  as Rob tells me, in December 1991 Bill left the company after
  significant altercations, destroying all his work.  He later
  released his version, 386BSD.

Yes. They started with net/2. Other accounts have Bill Jolitz bringing some
preliminary 386 porting work to BSDi and then leaving in a huff over
charging for it. He released 386BSD based on that work (or a redo of
that work, I've seen both accounts, not sure which one to believe). He released
them to the world, and then had no ability to manage the project he created
leading to the patch kit which without a leader fissioned into NetBSD
and FreeBSD, each with different aims.
 
- At some later date BSDI released a SPARC port, at which point the
  name BSD/386 seemed inappropriate, so they changed it to BSD/OS.  I
  have a CD set of release 2.0 labeled BSD/OS.

- The last CD set I have is undated, version 3.0, labeled BSDI
  Internet Server.  I think it was still called BSD/OS, but I can't be
  sure.

  Round this time I moved away from BSD/OS, since it cost money, and
  FreeBSD seemed to be just as good.

- In June 2000 we (FreeBSD) discussed merging the code bases of BSD/OS
  and FreeBSD, specifically for SMP improvements.  At the time the
  BSD/OS release was 4.x, and we were looking at the 5.0 code.  This
  is also the first time where I saw the name written as BSDi;
  previously, including all the CDs, it was always BSDI.

There were also a number of items that did get merged into FreeBSD at
this time. We also looked at the PC Card stack moving over, but I didn't
have the time to get it working on FreeBSD because significant SMPNG
work made bringing over the code more difficult and a bigger project than
I had time for.
 
On Friday, 30 August 2024 at 21:40:29 -0700, Kevin Bowling wrote:
>
> BSD/386 seems to be a first order derivative of net/2.  Source:
> https://ia902809.us.archive.org/25/items/BSD3861.1CD/bsd1.1-manual.pdf.
> To what degree that it incorporated anything from 386bsd would
> probably rely on first hand accounts.

As mentioned above, not at all.  When the first flaky 386BSD betas
were released, BSD/386 was already up and running.

Yes. Jolitz code was in both, but BSDi's BSD/386 was first. There was
a longer beta for it as well. That code circulated a bit before it was
officially released. I think this was to attract VC funding for BSDi, but
that detail is from a half-remembered conversation with Mike Karls and
Kirk McKusick over beers far too many years ago.
 
> I don't have much to go on for BSD/OS 2.x but it seems like it was
> about rebasing on 4.4-lite if we look at the family tree
> http://www.netbsd.org/about/history.html

Yes, this would have been one of the results of the AT&T lawsuit.
FreeBSD 2.0 was also rebased on 4.4BSD-Lite.

As did NetBSD for 1.0, though they took a different tact: FreeBSD did
a fresh import into a fresh repo, while NetBSD removed bits incrementally
until it was clean, but then had issues making their repo public due to the
settlement with AT&T.

Everybody had to rebase. Nobody could continue to use NET/2 that was using
it when the lawsuit started. After 4.4-lite came out, there was no real reason for
others to start with net/2, so I'm not aware of anybody else using that code for
a full kernel.
 
> Luckily for BSD/OS 4.x we get some release notes:
> *
> https://ia600908.us.archive.org/view_archive.php?archive=/22/items/bsdos-4.01/bsdos-4.01-binary.iso&file=RELEASENOTES.pdf

Yes, that looks good.  It also narrows the time frame for when BSDI
became BSDi, some time between July 1998 and June 2000.

> For 5.x I again don't have much to go on but we can take an indirect
> approach from some FreeBSD SMPng reports where BSDi donated source
> code that was not used wholesale but instead had to be reintegrated or
> rewritten:
> * http://www.lemis.com/grog/Daemons-advocate/unix-way-c.html

Heh.  I had forgotten about that.

Yes. By the time SMPNG had started, the divergence made lots of the
kernel code not a drop in. But lots of code was integrated into SMPNG,
in addition to lots being written / modified.
 
> I would be pretty confident in saying BSD/OS is _not_ a FreeBSD
> derivative but a first order derivative of net/2

Yes, I think so.  I can't think of anything else that could have been
in between.

BSDi came from net/2. FreeBSD came from net/2. They shared code
back and forth in the FreeBSD 3.x, 4.x, 5.x and 6.x time period.
 
> ... that eventually wound up looking a little bit like FreeBSD in
> its later years.

Hmm.  You haven't discussed how FreeBSD evolved, which was from
386BSD.  And my understanding is that 386BSD, like BSD/386, was also
derived from Net/2.  I used both BSD/OS and FreeBSD side by side for a
number of years without noticing significant differences.  It wasn't
until I started porting the SMP code from BSD/OS 5.0 to FreBSD
(coincidentally also 5.0) that I realized how different the kernel had
become.

Yes. net/2 -> BSD/386 -> BSD/OS and net/2 -> 386bsd -> patch kit -> FreeBSD.

But after the BSD/386, BSDi added SMP work (ASMP) and some vm improvements.
They did a lot of driver work, including supporting PC Cards and a few other things.
They also wrote 'witness' to debug their locking work that would wind up later in FreeBSD.

FreeBSD also added VM improvement from John Dyson in 3.x and 4.x as well as
ASMP support in 4.x from Steve Passe. CAM was added between 3 and 4 as well,
so we lost a bunch of drivers because CAM was a steep learning curve compared
to the Julian Elischer scsi code that had come before (though in the end not
that different from it, the different world view was hard to approach). FreeBSD also
got a new device model in 3.2 by Doug Rabson (to this day called Newbus, despite
being over 25 years on from whatever oldbus was).

During this time, small bits of code flowed back and forth. You can still find commits
that mention the committer got the code from BSDi, though sometimes that's spelled
'from Mike Karls' :).

So BSD/386 was 1992 and FreeBSD 1.0 was late 1993. SMP/ng work started in 2001
or so, almost a full decade of evolution where both groups were heavily innovating
core parts of the kernel. These changes made it hard to drop in code.
 
> According to grog in
> (www.lemis.com/grog/Daemons-advocate/unix-way-c.html) there was an
> attempt by BSDi to rebase to FreeBSD but it was abandoned.

My recollection was that the intention was to merge rather than
rebase.  What we did do (the SMP code) was definitely from BSD/OS to
FreeBSD.  The rest of the merge idea didn't get very far, and I can't
recall any significant attempts to push it forward.

That's what I recall as well. I do recall that FreeBSD had to significantly
rework much of the code we got from BSD/OS due to the evolution
in both the kernel, and some of Steve Passe's work had to be unwound
before we could move forward. And it took years to get done. We'd originally
hoped to do a release in like 2001, and then did a tech preview of 5.0 in 2003
a full release in 5.2 in 2004 that was useable, but it wasn't really until maybe
2007 or so that SMP was solid.
 
> I've found scant detail on what WindRiver did with 5.0 and 5.1 so I
> am unsure, but in playing around with 5.1 it does have FreeBSD's CAM
> layer but does not look like i.e. FreeBSD 5.x in a variety of
> material ways.

It's worth considering what things were like at the time.   You, as
potential user, have the choice: BSD/OS for $1000 or FreeBSD for free.
What advantage do you get from BSD/OS?  Yes, there were some, but they
weren't really enough to keep BSD/OS viable.  That's why I had made
the change a few years earlier, and I don't think that WindRiver's
heart was really in it.  So the SMP code was really something like a
swan song.

Yes. BSDi's business model hadn't expected the rise of Open Source being
serious competitors. And the pressures from Linux also helped to slow sales
around the time the rebase / merge / whatever had been contemplated. Plus
the sale to WindRiver was supposed to be this wonderful thing, but in the
end turned out to be not so great.

I've not studied the BSDi CAM. I'll have to do that. I have studied the Ultrix/OSF/1
CAM and it is quite different than the FreeBSD CAM (which has evolved significantly
since 3.x days). The notion of source code compatibility for all SCSI drivers was an
interesting thing, but even between the Ultrix and FreeBSD CAMs, there's huge differences
in headers and function blocks that don't seem to be described by the standard and
that need slightly different code as well...  I've also not been able to find source to
the original MacOS CAM nor the early DOS CAM frameworks, though references to
them litter the early literature from the mid 90s. Both of them moved on from CAM
after the first generation of SCSI devices.

Warner
 
Greg
--
Sent from my desktop computer.
Finger grog@lemis.com for PGP public key.
See complete headers for address and phone numbers.
This message is digitally signed.  If your Microsoft mail program
reports problems, please read http://lemis.com/broken-MUA.php