TBT: HP Image goes dead. Long live IMAGE
July 30, 2015
It was 1988, and Adager co-creator Adager Alfredo Rego had already skied for Guatemala in the Winter Olympics. Months later, with the Summer Olympics at hand, Hewlett-Packard killed off development of a new database for the HP 3000. The project was supposed to give the server a spot on industry-wide benchmark charts, HP believed. But HP Image was only 98 percent compatible with TurboIMAGE, and that's 2 percent short of being usable. HP Image abdicated the throne that HP intended to a TurboIMAGE rewritten for the brand-new Spectrum-class 3000s.
The move matters today because it marks a turning point in the march toward industry standards for the 3000. The server has been legendary for preserving its customers' investments like app development. A from the ground up SQL database might have helped put the 3000 into a more homogenous tier during an Open Systems era. Of course, HP would've had to create a database that worked for existing customer apps. HP Image was not that database.
HP's step-back from HP Image in the summer of 1988 came after more than two years of development, lab work that hit the wall after test users tried to make their applications and data fit with the product. After dropping that baton, HP raced to put the HP SQL of Allbase/SQL into making 3000 and 9000 apps compatible.
In an HP Chronicle article I wrote back then, I quoted developer Gavin Scott while he was at American Data Industries. By that summer, HP had managed to move TurboIMAGE onto MPE XL 1.1. "Pulling the Turbo database into the Allbase concept appears to have reaped some benefit for users," I wrote. "In Scott's view, it's faster and still compatible, a rare combination."
It works flawlessly, and it is quite fast. Native Mode TurboIMAGE works exactly the way old TurboIMAGE did, even to the extent that it still aligns all of the data on half-word boundaries. You have to take that into account when you're writing Native Mode programs to access Native Mode TurboIMAGE; it will be slightly less efficient, because you have to tell your program to use the Classic 3000 packing method when you go to access the database.
That summer marked the point that HP had to give up on creating an IMAGE replacement for the brand-new MPE XL. HP eventually supplied a native SQL interface for IMAGE, thereby taking that product into its IMAGE/SQL days. But HP Image never would have been proposed if the vendor wasn't thinking about attracting SQL-hungry customers from other platforms with a new database scheme.
Instead, HP eventually had to pay close attention to retaining IMAGE ISVs and users. Scott commented this week on how that turning point came to pass in the late '80s.
Just as MPE suffered because management (really mostly the technical influencers and decision makers, not upper management) decided that Open Systems (which meant Unix) were the way of the future, I think the HP database lab had some PhD types who were convinced that SQL and relational was the answer to everything, without understanding the issues MPE faced with compatibility.
They tried to build one relational core engine that had both an SQL and an Image API, but for a long list of reasons this could not be made 100 percent compatible with TurboIMAGE, so you just could not run an existing 3000 application on top of it without major changes -- which was of course a non-starter for customers wanting to move from MPE/V to MPE/XL.
HP had already received a better strategy from independent vendors, advice HP chose to ignore. Deep in the heart of IMAGE lie routines and modules written in SPL, the foundational language for MPE and the 3000. SPL was going to need a Native Mode version to move these bedrock elements like IMAGE to the new generation of 3000s powered by RISC chips. But HP's language labs said an SPL II was impossible, because SPL wasn't defined well enough. So trying to leverage the Allbase transaction processor, HP galloped into building HP Image, using Modcal, its modified version of Pascal that already drove many MPE XL routines and subsystems.
As it turned out, it was easier to create a Native Mode SPL than to make a new SQL database that was 100 percent compatible with TurboIMAGE. Steve Cooper of Allegro, the company that partnered with Denkart and SRN to create the second generation of SPL with SPLash!, said 98 percent compatibility never succeeds.
"Just like something can never be very unique -- it's just unique -- software can't ever be very compatible. It's compatible, or it isn't." DBGET calls in TurboIMAGE worked faster than DBGET ever would in HP Image. The number of items is reported in TurboIMAGE's DBGET automatically. HP Image had to run through a DBGET chainhead from stem to stern once again to get that number, "and that's a lot more IOs," Cooper said. Scott noted that native TurboIMAGE was a direct result of that independent language work on SPL.
The ultimate solution was to basically give up on HP Image completely and simply port TurboIMAGE from MPE/V to MPE/XL, which actually turned out to be relatively easy (after they stole the ideas surrounding the architecture of the SPLash! compiler to make their own Native Mode SPL II compiler (what TurboImage was written in.) HP's language guys spent several years saying a Native Mode SPL compiler was not practica -- but of course SRN, Denkart and Allegro succeeded with SPLash! thus making them look stupid).
Scott said TurboIMAGE was too simple to need SQL's prospective advantages. It was just a fast networked database that had a common API which thousands of apps were using.
HP Image and Allbase/SQL were big and bulky and complex, and thus a lot slower than TurboImage once it got to Native Mode. Today the world runs primarily on SQL/relational databases, up until you get to Big Data distributed no-SQL databases used in huge clusters. But in those days TurboIMAGE had the big advantage of simplicity, and the biggest advantage of having an API that all existing HP 3000 applications were already written to.
I'm not sure about "turning point" for hte database labs. I think they just continued on doing their Allbase stuff, they just didn'thave to think about Image anymore. It was intrepid programmers at CSY that got TurboImage working (with help from the compiler guys) and TurboImage remained simply one other MPE subsystem, not really part of any "database lab" which wouldn't care about a crusty old proprietary non-relational database.