[Hosted by Floodgap Systems]

Mosaic-CK: An Updated, Unsupported Port of NCSA Mosaic

for Mac OS X, Tenon PowerMachTen, Linux and other compatible Unix-like OSes

Welcome to Floodgap's Mosaic-CK page, my local hacked-up port of Mosaic to bring it into the modern World Wide Web context. Although Mosaic-CK started as my simple effort to port NCSA Mosaic to my Power MachTen systems, I have decided to expand the project to allow people to experiment and play with this historic browser package in the 21st century.

The current version is 2.7ck13 (change-log), based on the Unix source for 2.7b5, released 15 November 2020. Please read the NCSA license before use. NCSA does not support this port; please send your comments and requests to ckaiser@floodgap.com.

[Click for a 56K screenshot of Mosaic-CK on MachTen in action.]

What was NCSA Mosaic?

Mosaic is widely considered the grandfather of the modern web browser. Developed at the National Center for Supercomputing Applications at the University of Illinois Urbana-Champaign, it was the first Web browser to win widespread use and acceptance. Although it was not the first browser with a graphical interface (that was Erwise), nor the first to mix graphics with text (that was ViolaWWW), it established the conventions of a typical web browser that we still use today, and in the form of Spyglass Mosaic even became part of Microsoft Internet Explorer until version 7. NCSA discontinued support for Mosaic in 1997.

Mosaic supports a superset of HTML 2.0 (RFC 1866), with support for form widgets and basic tables and some of the Netscape-specific formatting extensions. The final version also included support for PNG, GIF and JPEG images. It was discontinued on the eve of HTML 3.2 (REC-html32) in 1997, although it necessarily does include some of that standard, particularly body styling. It does not include CSS support, nor Java or JavaScript, nor frames. Click the screenshot for a 56K image of Mosaic-CK rendering contemporary websites, including Google and Wikipedia.

[Click for an 80K screenshot of Mosaic-CK on OS X in action.]

Why use Mosaic?

Mosaic uses a very old rendering engine, and porting the entire length and breadth of HTML 5 to it would essentially require a complete rewrite. This makes it a bad choice for modern computers which can almost certainly run something more full-featured and compatible. However, its older core is well-suited to older machines and older operating systems with poorer compatibility (viz., can't run a modern GUI toolkit) or less processing power, and the rendering core still supports enough of a view of modern web sites to allow it to be functional, even if it's not attractive. Mosaic-CK's goal is to be "Lynx with graphics" -- a graphical interface but a fast, basic HTML rendering core reminiscent of that beloved text browser. Click the screenshot for an 80K image of Mosaic-CK rendering xkcd on Mac OS X.

Why a Mosaic branch?

NCSA no longer supports Mosaic, although it offered it as open source for non-commercial applications (Mosaic is not under GPL). Since it was not maintained since 1997, it has not kept pace with the modern Web or modern computer systems in even an elemental sense; for example, it breaks under current versions of libpng, it does not support UTF-8 or Unicode, and it does not know what to do with character sets in MIME types (treating them as binary files and essentially making those pages unviewable).

To incorporate these and other fixes, I spun off 2.7b5, the last version of Mosaic released for Unix platforms, into my own Mosaic-CK branch to mark it as distinct. I also wanted to add support for my own systems and other operating systems that the original Mosaic did not build on, but to also preserve the original feel of Mosaic as a historical model on modern computing environments.

What's different about Mosaic-CK?

There are other Mosaic forks. The best known may well have been (r.i.p.) VMS Mosaic, designed to be a very evolved Mosaic with many modern features and a greatly augmented rendering core.

Mosaic-CK, on the other hand, is consciously a two-headed beast: by default a basic, functional browser, but also designed to serve as an educational and historical simulation. If you use the default alternative renderer, then you get a standards-aware browser that improves on Mosaic with UTF-8 and Unicode partial support, better layout and extended HTML parsing capabilities. If you use the classic renderer, however, you see the page almost exactly as the original Mosaic would have seen it, but in both renderers getting the benefits of updated, current OS integration, more robust network code and better protocol support: the best of both worlds. And you can switch rendering on the fly (under Options, Use Classic Renderer).

As the early days of the Internet and World Wide Web become more obscure and ill-remembered, Mosaic-CK's classic renderer preserves the feel and style of those distant, more simple times, while simultaneously with its enhanced alternative renderer coming closer and closer to its goal of "Lynx with graphics" -- a GUI and built-in image support, but a fast, basic HTML core that views pages in an efficient, utilitarian text-based manner. This is what sets Mosaic-CK apart from other browsers and Mosaic forks today.

Will it build on {Linux,*BSD,Mac OS X,...}?

The current version builds on Mac OS X, Linux and probably others since the changes were more for gcc than anything specific to these OSes. Still, there is no guarantee it will run on other contemporary operating systems and I'm working on porting it to them too, but they also already have access to current browser software, so preserving back compatibility for older machines right now is more important. The only reason I did a Mac OS X build right off the bat is that testing is a lot quicker on my G5, which helps to preserve my sanity. Because I know that Common Desktop Environment has Motif, CDE systems have priority simply because it's less work.

Binary releases of Mosaic-CK

It is my plan to release, where reasonable or possible, binaries for the supported architectures. However, you should consider building it from scratch yourself (see below), just in case.

How to build Mosaic-CK

You will require the following libraries and tools to build Mosaic-CK:

The Makefile suite is designed to be system-specific: simply

make architecture

will start the process. Although Mosaic-CK contains all the historical architectures that Mosaic formerly supported, I am supremely doubtful it will build as it did on all of them, so they are unsupported. If it works for you, great -- tell me and I will promote those architectures. Right now, only the following targets are supported:

More will be added.

DOWNLOAD SOURCE: mosaic27ck13.tar.gz (0.99MB)

Bug reports and future improvements

Bug reports and suggestions are appreciated, with the understanding that compatibility for older operating systems is paramount -- if your patch requires the latest and greatest gcc or toolkit, for example, it will be rejected. Please wait for me to ask for your diff before sending it to me; drop me a line at ckaiser@floodgap.com and tell me what you have in mind first.

I do, however, gratefully accept Makefiles for other operating systems and will incorporate them no questions asked if no source changes are needed to get it to compile. You should work with the sample ones in makefiles/, copy and modify one to taste and/or success, and then hook it up to the targets in the root Makefile.

Changelog for 2.7ck13

Compatibility changes for the future

Improvements to page rendering and core

This is, also, going to be intentionally limited -- if you want it to support the length and breadth of WebKit, you should be using WebKit. For example, I have no plans to make Mosaic-CK support JavaScript or frames. Like I said, Mosaic-CK's primary aspiration is to be "Lynx with graphics." Rendering improvements will be part of the alternative renderer where possible.

Send love, kindly bug reports, Pink Floyd LPs and rare Commodore computers to ckaiser@floodgap.com.

Cameron Kaiser