Hacker News new | past | comments | ask | show | jobs | submit login
1991 WWW-NeXT Implementation (github.com/simonw)
150 points by ulrischa 4 months ago | hide | past | favorite | 52 comments



Related: here’s the NCSA Mosaic browser as an AppImage. Runs on any Linux distro without having to recompile. https://appimage.github.io/NCSA_Mosaic/

NCSA Mosaic was made before Netscape/Mozilla/Firefox, by the same creator


One interesting thing about web is that it was graphical from day 1, in contrast to e.g. email or ftp that had more text console roots. So things like lynx were always niche, and even anachronistic. There was no era when people widely used text-mode browsers.


You are wrong.

“ The inline images such as the world/book icon and the CERN icon, would have been displayed in separate windows, as it didn't at first do inline images.” https://www.w3.org/People/Berners-Lee/FAQ.html#browser

“ Marc [Andreessen] and Eric [Bina] did a number of very important things. They made a browser which was easy to install and use. They were the first one to get inline images working - to that point browsers had had varieties of fonts and colors, but pictures were displayed in separate windows.” https://www.w3.org/People/Berners-Lee/FAQ.html#browser

In the last quote Tim Berners Lee is talking about the Mosaic browser Marc and Eric built at NCSA. It is arguably the thing that made Marc Andreessen famous. And It is indisputably the start of the graphical web. I mean, Marc literally and controversially invented the IMG tag for this.

Mosaic came out in 1993, two years after the first WWW (the browser being discussed). So in the earliest years of the web people were absolutely using text mode browsers.

(And if displaying graphics optionally in their own window counts as being graphical to you, email and ftp were already there.)


Folks who want a bit more background on this should read Tim Berners-Lee's book _Weaving the Web_ (which to some degree was written using the "Navipress" web browser since it also functioned as an interactive editor (for sites which supported the "Push" protocol --- later it was bought by AOL and became "AOLPress")

https://www.goodreads.com/book/show/821987.Weaving_the_Web


Another good book one can reach for more details is:

https://books.google.cz/books/about/How_the_Web_was_Born.htm...

One of the authors, Robert Cailliau, was officially assigned to the web project along with Tim Berners-Lee in it's early stages in CERN.


The editor part of the original browser is also graphical so you can select text and make links, headings, lists without the need to write HTML IIRC.


He is indeed wrong. Very wrong. I used gopher and email servers for more than a year before I started using Mosiac, and then it was another year or two before I let the image tag work. I have met Marc, and he, of course would agree, because both him, and I where actually there.


For folks who are curious, here is the story of the first (documented) photo on the web:

https://web.archive.org/web/20121205020416/https://motherboa...


Mosaic had support for XBM format prior to introducing color images. I did set up the Office of the Swedish Prime Minister around February-March of 1993, on a SUN SparcStation 1 if I remember correctly, running in a cabinet on a floor below the actual office on a 64kbps leased line. It was really a gopher site, but with that XBM support, albeit only black and white, found it useful to create an HTML “welcome” page to that gopher content of press releases, talks and articles.


There is world of difference between rendering rich text in graphics mode, and working in text mode, even if you don't have any images involved.


Yes and no.

Yes, the first web browser/editor was a GUI application from the start, so was the original Tim's idea. But the first browser/editor was working on NeXT machines only, which were very expensive and rare. Only few people actually had the opportunity to experience the web this way and most people seen this software in action as a demonstration only.

The first browser most people used when introduced to the web was a "dumb" command line client https://en.wikipedia.org/wiki/Line_Mode_Browser. It was as simple as possible, so that it could be compiled on any platform and used over telnet, it wasn't even using curses library.

So the early web users were experiencing the web via text browsers only until the rise of gui browsers later.

See https://blog.marbu.eu/posts/2023-04-29-the-first-web-browser...


Also most people could telnet to a host that already had the line mode browser installed. I believe that’s how a lot of non-NeXT users at CERN would be using it.


Since the entire point was to display hypertext, of course not. Text browsers were something that appeared much later, and was always weird and fringe. For example I've never used one never installed one.


You’ve probably used a machine with Lynx or GNU Emacs installed.


Lynx design was driven by the need to support browsing Gopher spaces. It really didn’t need a GUI.


I seem to remember running this back then.

I also remember OmniWeb which was a great browser for the time.


OmniWeb was I believe the only web browser released for the NeXT/Apple merger Rhapsody project.


Which, initially, was a reskinned OpenStep and a PowerPlant Finder.


Thank you for solving the dates problem, I have been hacking on for the last month. I applaud him for his novel use of github to do daily priorty lists, on github, but:

https://news.ycombinator.com/item?id=41060102

and

https://hn.algolia.com/?dateRange=all&page=0&prefix=false&qu...


I wonder whether there are some new developments in digital archeology here which makes the source complete enough for one to be able to compile it (assuming one has access to a NeXT machine with its app builder from early 1990s).

I recall when people working on recreation of WWW in 2019 were not able to compile the code: https://worldwideweb.cern.ch/code/


The InfiniteMac project runs emulations of NeXT machines in the browser. This one has WorldWideWeb.app version 1.0.

https://infinitemac.org/1991/NeXTStep%202.1

So a determined researcher might be able to compile it from source.


Just curious, does this compile on MacOS?


Definitely not. It's old enough that `Object` is the base class, lots of functions use the old NX prefix (instead of NS), it predates the retain/release paradigm, etc.

Getting it running wouldn't be an impossible task, because it's a pretty small project (~5k lines of Objective-C) and early 90s Objective-C is a pretty small language. But you'd need to shim all of the long-dead system APIs, or port the code to use their modern cousins.


No. NeXTstep circa 1990 was very different from OpenStep in 1994. If this was OpenStep-based it would have a chance.

NeXT often provided tools to migrate from one version of the frameworks to the next, so it might be possible to get it there, but it’d be a lot of work and a lot of manual massaging would likely still be required.


Maybe someone here can do it, but I can't. The Makefile tries to include something at `/usr/lib/nib/app.make`, and I don't have anything there.

There are some clues at https://unix.stackexchange.com/questions/444717/how-to-compi... but I'm not sure I'm willing to dive down that rabbit-hole.


That's "just" a makefile, which should be rather simple. The true challenge, apart from what was already mentioned as the probably incompatible API, the interface file itself, IB.nib, which is a serialization of the interface. Reading the file on latest macOS is still possible, but for deserialization it can't find some of the classes (e.g. StreamTable).

If you want to dig deeper, try the NeXTStep 3.3 developer disc: https://archive.org/details/nextstep3-3dev


> but I'm not sure I'm willing to dive down that rabbit-hole.

You know you wanna!


The repo is incomplete, a lot of files are missing. https://github.com/cynthia/WorldWideWeb seems to be a more complete snapshot.


This URL from inside the default.html is confusing:

http://crnvmc.cern.ch/FIND/PUB.P.HELPCMS.FIND(X/G/H)


This is likely url of XFIND gateway[1,2] which was basically a first web service making information from XFIND information system available via web. It was already in operational/demo-able state along with WorldWideWeb browser/editor (NeXT), Line mode browser (dumb command line client) in early stage of the web in the end of 1990. This is because gateways like these were crucial for the web to take of in the particle physics scientific community in the first years of the project.

This may seem obvious and boring now, but back then, it made a real difference (copy pasting a section from my old post [3]):

... a physicist from German particle physics lab DESY who get used to look up information via XFIND at CERN, but using it from DESY was bit clumsy. First of all he had to telnet to CERN, then login to IBM CERNVM machine, then start XFIND there and then finally place his query to XFIND. Moreover as the connection was slow an unstable, one have to repeat this procedure again in case of a network failure. Compared to this using Line Mode Browser from DESY to directly access XFIND Gateway at CERN was a big improvement, which helped the web to spread to DESY.

[1] https://www.w3.org/Talks/FINDGateway.html [2] example http://www.dnp.fmph.uniba.sk/cernlib/asdoc/fatmen_html3/node... [3] https://blog.marbu.eu/posts/2023-04-29-the-first-web-browser...


We are missing the option to run WWW.app from Previous, but you can run Mosaic in MacOS here: https://oldweb.today/?browser=nm2-mac#http://info.cern.ch/hy...

Source: https://github.com/oldweb-today/netcapsule

There are places on the web where you can emulate an early Cube or Personal Mainframe and run WWW.app to view the same.


Not fully related, but I remember looking at a website of some person two or three years ago, who claimed to be one of the original developers of Firefox, and if I'm not mistaken, in some blog post on his website, he said something about not getting the recognition he deserved for his work? and shared some early source code of Firefox.

I cannot find that person or that blog post, anyone know anything about this?


Per Wikipedia: "Firefox was created in 2002 under the codename "Phoenix" by members of the Mozilla community who desired a standalone browser rather than the Mozilla Application Suite bundle."

I do remember from the time that it actually was one young guy who made a strip down version of the Mozilla browser that then got incorporated as a Mozilla product and replaced the Mozilla browser some years after. I don't see that mentioned anywhere though. History says it was Blake Ross[1] coming from Netscape but I don't remember it that way.

[1] https://en.wikipedia.org/wiki/Blake_Ross


the graph mind cares what you do, but not who you are


The Release Notes page is great: https://www.w3.org/History/1991-WWW-NeXT/Implementation/Feat...

Thank you simonw, I'm working on a successor to the web now so this is great.


Thx simonw this rules


Stats show 72% Objective-C and 10% C. What benefits does Objective-C over C that makes this a language of choice for this project? And what parts are implemented in C? Can someone share some info about this?


There's a book on Objective-C:

https://goodreads.com/book/show/1945013.Object_Oriented_Prog...

and also see the magazine articles:

- “No Silver Bullet – Essence and Accident in Software Engineering.”. Fredrick P. Brooks, Jr.

and the rebuttal:

- "There IS a Silver Bullet" by Brad Cox from Byte magazine – the October 1990 issue: https://theopensourcery.com/there-is-a-silver-bullet/

Basically it was Smalltalk bolted onto C and with the elegant and robust NeXT frameworks meant that much of an application's functionality was provided by the underlying system which was revolutionary at the time.

From a different discussion:

>A quick overview of Interface Builder is Steve Job's demo for NeXT --- perhaps: https://www.youtube.com/watch?v=dl0CbKYUFTY > >where they discuss how dragging/drawing allows one to make 80% of the app, and the balance of 20% is one's own code.

https://news.ycombinator.com/item?id=40966774


NeXTStep was famous for rapid application development. The framework combined with Interface Builder, a GUI builder, is just magic. I read a quote a while ago, Berners-Lee saying that without NeXTStep he couldn't have built the project. Unfortunately I can't find any reference anymore.

Edit: Seems somebody else found it, see other comments.


NeXT invented Objective-C and encouraged its use, and the object-oriented paradigm was as popular back then as rust is today. It was just trendy to do so.


They did not invent it, it was developed at PPI (later Stepstone), before NeXT was founded.


To a great degree, NeXT was comprised of an assemblage of talent and technologies which Steve Jobs put together:

- Mach microkernel --- Avie Tevanian may well be the most heavily recruited computer science student in history with offers from AT&T, IBM, Microsoft, and NeXT

- Interface Builder --- Jean-Marie Hullot originally did a graphical layout system for developing on the Mac

- Display PostScript --- to a great degree, NeXT was responsible for this

- Objective-C --- as noted elsethread this was worked up by Brad Cox at Stepstone

and, of course they licensed Unix from AT&T (and other bits from other sources such as a Pantone color library, or Webster's dictionary for Webster.app, and Mathematica from Wolfram was included early on).

Wish my Cube hadn't stopped booting up...


>- Display PostScript --- to a great degree, NeXT was responsible for this

Confirm, got to see a live demo at Comdex ATL back in 1992? Mind blown.


Quartz, née Display PDF is a nice alternative (and is probably even more reliable these days), but I still miss Display PostScript and the ability to program custom fills/strokes and so forth --- huge potential security hole as Frank Siegert's "Project Akira" showed though.


Yes. The Computer History Museum has a two part interview with Steve Naroff, one of the engineers who worked on Objective C:

https://youtu.be/ljx0Zh7eidE

https://youtu.be/vrRCY6vwvbU


Can someone elaborate on the usage of that? What lessons can be relevant to the current era?


One way to look at this code is as a quick prototype to get the idea into real thing to play with. And to appreciate that, one have to realize that the original idea included both reading and editing of web pages easily in the same client in WYSIWYG fashion.

See https://www.w3.org/People/Berners-Lee/WorldWideWeb.html for context:

I wrote the program using a NeXT computer. This had the advantage that there were some great tools available -it was a great computing environment in general. In fact, I could do in a couple of months what would take more like a year on other platforms, because on the NeXT, a lot of it was done for me already. There was an application builder to make all the menus as quickly as you could dream them up. there were all the software parts to make a wysiwyg (what you see is what you get - in other words direct manipulation of text on screen as on the printed - or browsed page) word processor. I just had to add hypertext, (by subclassing the Text object)


From just skimming, it’s some nice, clean Objective-C. Always pleasant to read!


I got use that, or some near version of it, back in the day. Cool to see here.


Can we build this browser in OpenStep?


Wasn’t NEXT one of the original HTML tags?


NEXTID




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: