koko: reviving timbl’s WorldWideWeb browser

on NEXTSTEP 486 on JAWS

“Genghis Khan and his brother Don
Could not keep on keepin’ on”
(1971) “You Ain’t Goin’ Nowhere” – Bob Dylan

With working NEXTSTEP 3.2 in hand, I wondered if I could find sources for the original browser that Tim Berners-Lee wrote when he invented the World Wide Web at CERN, and if I could, could I get that browser working. Success!

Tim Berners-Lee WorldWideWeb on NEXTSTEP 3.3 on JAWS

Tim Berners-Lee WorldWideWeb on NEXTSTEP 3.3 on JAWS

Source for Version 0.15 of his browser is readily available at https://github.com/cynthia/WorldWideWeb.

I ftp’d the source to the JAWS machine and was immediately dismayed to realize I had no build environment. No compiler, no make, nothing.

NeXT had sold a separate product with the development environment. I suspect that I have the 3.2 development stuff in the attic somewhere, but I didn’t remember that possibility right away, and started looking for a copy on the Web.

NEXTSTEP 3.3 CD

At first I found a company that was selling an ISO of the 3.3 development environment, but (a) I couldn’t get beyond the CAPTCHA to buy the ISO, and (b) I wasn’t sure about mixing 3.3 tools on 3.2 base. Then I found https://archive.org/details/NeXTSTEP33CISC, with everything I needed to have 3.3 including the development tools on my JAWS box.

Building “WorldWideWeb”, as the browser is called, was easy, but when I tried to run it, it immediately put up an alert about not being able to find cernvax.cern.ch and terminated. (It looks like CERN started considering reinstating that host in 2013 but has not actually done so: https://first-website.web.cern.ch/notes/2013-05-01-request-restore-cernvaxcernch.)

It wasn’t hard to tweak the code to stop looking for cernvax. I was able to get the browser to render Tim’s default.html. I had to figure out URIs I could use that would not invoke HTTPS, since WorldWideWeb only supported HTTP. Even so, I couldn’t get the browser to successfully connect to one of my servers. The browser would try, telnet from jaws would get expected responses accessing port 80, so I was hoping it would not be hard to resolve the problem.

I was beginning to try to resolve that problem when I accidentally zapped the 1G disk I’d used for NEXTSTEP. These old disks fail enough on their own that I shouldn’t have been so careless, but I was.

NEXTSTEP seems to get confused about disk geometry when trying to install on the 9G disks I’ve been using for Dell SVR4. The installer at some point recognizes the full disk, but at other places acts as if it is only 1023MB. Then it seems to fail when writing the boot sector. One 1G disk I bought on eBay was dead on arrival. As I initially wrote this, I was waiting for a couple more disks to arrive.

Update July 10, 2019: After getting more working 1G disks and a replacement power supply for the Optiplex, I was able to get back to where I was, and also get NEXTSTEP 486 to work on the Optiplex, dual boot capable with Dell SVR4.

I installed version 3 of the CERN server on both jaws and optiplex.

WorldWideWeb connect timing out was a byte order problem.

In timbl’s private tcp.h, he had #define htons(x) (x)

NS 486 has all sorts of byte order macros, so commenting out that one #define was really all that was needed, though it took me quite a few missteps to figure that out. I wonder if he really needed that #define for NS 68K or not.

WorldWideWeb can now fetch and render hello.html from version 3 of his server running on jaws and from Apache 2.0.47 on Fedora 1.

Apache 2.4.39 on Fedora 29 returns 400, presumably because Apache stopped supporting original HTTP.

This feels like a good stopping point with NS for now, so I plan to get back to building Dell SVR4.

One Response to “koko: reviving timbl’s WorldWideWeb browser”

  1. Technologists Notes » Blog Archive » NeXT, give Steve a little credit for the Web Says:

    […] koko: reviving timbl’s WorldWideWeb browser on NEXTSTEP 486 on JAWS […]