New PAPPI: History

If history has any lessons for software development, it is that things change. All platforms die.

For the record, the first implementation was on a Symbolics 3650 using Symbolics Lisp and Prolog. The 3650 was a rather special machine because it had the necessary support at the microcode level for Symbolics Prolog, as well as being hardware-optimized to support Lisp. (Symbolics Prolog could not run on the regular 3600s.) It had the best software development environment known to man. Everything was written in Lisp. All source code was supplied, including that of the operating system and development environment itself. Half-a-million lines of code was just a mouse click (or three) away in Zmacs. Unfortunately, these were rare workstations. After all, they cost upwards of $66,000 each.

The second implementation was on a Sun Sparcstation using C and Sisctus Prolog. This was the era of the minimalist RISC processor. Sun was transitioning from its Motorola 68000-based workstations to the then-proprietary SPARC architecture. At around $10,000, a Sun Sparcstation 1 was a fraction of the cost of a Symbolics 3650. Unfortunately, the software development environment was nowhere as good. Also unfortunately, Symbolics's Lisp-based environment was completely non-portable, so I decided that the PAPPI GUI should be rewritten from scratch using Sun's (soon-to-be-deprecated) XView toolkit (Volume 7) plus the Slingshot extensions. The object-oriented XView toolkit used (plain) C as the programming language. Erwin Klöck and Mike Lake made significant code contributions here.

The third port happened after Sun abandoned and gave away the XView toolkit. Basically, the software was ported over to MacOSX, then still running Motorola PowerPC processors. Keith Alcock did the initial port away from the Sun SPARC architecture. But things broke on every major tick of MacOSX. Perhaps it was also because Apple was in the process of transitioning over to Intel processors. I gave up trying to fix things around MacOSX 10.6.

I guess this latest one counts as the fourth incarnation. I decided to rewrite the whole GUI from scratch using John Ousterhout's tcl/tk. At the same time, I abandoned Sicstus Prolog (and its licensing fees) in favor of the completely-free SWI Prolog. The underlying architecture was revised so that the GUI and the Prolog core of the program were decoupled. As separate processes, they communicate via sockets. Since both tcl/tk and SWI Prolog are stable, and both available for all major platforms, in theory the program should run everywhere. Without changing a single line of code, I can report it works on Windows 7 with a truly ugly workaround. It runs but the trees look ugly on Linux (Ubuntu) due to font differences. It looks okay and behaves nicely on its home operating system: MacOSX 10.8 (and 10.9).


Last modified: Mon Apr 28 22:30:33 MST 2014