Kaleida Labs
| Company type | Joint venture |
|---|---|
| Industry | Multimedia software |
| Founded | 1991 |
| Founder | Apple Computer and IBM |
| Defunct | 1996 |
| Headquarters | Mountain View, California , United States |
Key people | Nat Goldhaber (first CEO), Mike Braun (CEO from 1993) |
| Products | Kaleida Media Player, ScriptX |
Kaleida Labs, Inc., established in 1991 as a collaborative venture between Apple Computer and IBM, created the cross-platform multimedia player known as Kaleida Media Player along with the object-oriented scripting language ScriptX. Aiming at the interactive CD-ROM sector prevalent in the early 1990s, Kaleida sought to deliver a universal multimedia development framework. Nevertheless, when it launched in 1994, the platform's steep system demands, absence of a native PowerPC Mac version, and swift market evolution driven by the rise of the World Wide Web and Java curtailed its adoption. As a result, Kaleida Labs discontinued its operations in 1996.
Kaleida was one of three joint initiatives between Apple and IBM during the 1990s—alongside Taligent and the AIM alliance with Motorola focused on PowerPC technology—concentrating on advancing multimedia software. ScriptX was part of a suite of Apple-originated projects such as SK8 and Dylan, all of which were phased out by the mid-1990s.
Formation
Announced in 1991 and becoming active by mid-1992, Kaleida Labs appointed Nat Goldhaber as its inaugural CEO. The company assembled key talent from Apple's QuickTime team and IBM’s divisions specialized in content delivery, establishing its base in Mountain View, California. Kaleida was among the pioneers in maintaining an early corporate website.
The primary product, Kaleida Media Player (KMP), was engineered as a platform-independent interactive player compatible with Macintosh, IBM PC clones, set-top boxes, and other hardware. ScriptX provided developers with tools to build interactive multimedia content across multiple platforms, positioning Kaleida as a potential frontrunner in multimedia software solutions.
Goldhaber championed ScriptX as an innovative tool that simplified content distribution across diverse devices. However, his extravagant management style and elevated operational expenditures attracted criticism; reports revealed that Kaleida expended approximately $20 million during its first year while maintaining high salaries and a workforce considered excessive relative to progress achieved.
Disagreements over stock option policies and initial public offering plans culminated in Goldhaber's replacement by Mike Braun, an experienced IBM executive, in July 1993. Although Goldhaber remained on the board to support partnership efforts, leadership cited his detached management approach and limited industry acceptance as factors necessitating change. Goldhaber later pointed to cultural differences between Apple and IBM as contributing to Kaleida’s difficulties.
Refocus and release
Following Goldhaber's departure, Kaleida streamlined its business focus and officially discontinued set-top box development in April 1994. The company concentrated on finalizing and supporting the ScriptX language along with its multimedia object library, both of which had experienced significant delays. Kaleida planned to integrate the Kaleida Media Player (KMP) as system software bundled with new personal computers and encouraged CD-ROM developers to include KMP alongside content for Windows and Macintosh environments. This strategic pivot resulted in a workforce reduction of roughly 20 to 25%.
During late 1993 and early 1994, Kaleida targeted a reference hardware configuration featuring either a 25 MHz Motorola 68030 or Intel 80486 processor paired with 4 MB of RAM, mirroring typical user systems at that time. Toshiba, previously engaged in set-top box initiatives, became a minority investor. Throughout its existence, Kaleida maintained cross-platform development capabilities supporting Windows (versions 3.1 and 95), Macintosh (both 68000 and PowerPC architectures), and OS/2.
The ScriptX development kit alongside Kaleida Media Player version 1.0 finally launched on December 19, 1994—significantly behind schedule. Reviews commended its user-friendliness and comprehensive core classes facilitating ScriptX development. Nonetheless, performance challenges remained: the KMP runtime demanded 3.3 MB of RAM on Windows systems and 2.9 MB on Macs—a substantial requirement given that common mid-range Macs like the LC 475 were equipped with only 4 MB RAM at launch, much of which was occupied by the operating system. Importantly, no PowerPC-native version was released despite that architecture having become dominant within the Mac lineup by then.
Evolving Market Conditions
Kaleida was originally established to serve as an authoring platform for CD-ROM-based applications. Nevertheless, the lifespan of CD-ROM products turned out to be brief, as by 1995 the World Wide Web began providing numerous lightweight interactive experiences that had previously depended on CD-ROMs. Although high-bandwidth content such as video was not yet practical for web delivery, it did not necessitate the interactive capabilities or development environment that Kaleida provided.
The company also sought to compete against the Wintel platform within the nascent CD multimedia sector. Founder Goldhaber foresaw a "battle" for supremacy in multimedia. Following Netscape’s 1995 initial public offering, developers started viewing browsers as a fresh multimedia platform directly rivaling Windows. Consequently, Kaleida redirected its efforts toward delivering object-oriented and web-based content over the Internet.
Most prospective developers took a cautious stance, waiting for ScriptX to improve in terms of performance and reliability. However, Kaleida encountered difficulties achieving acceptable operation on systems with less than 16 MB of RAM, which at the time represented high-end hardware. This limitation enabled competitors such as Macromedia’s Director and Sun Microsystems’ Java language—both optimized for smaller devices and web environments—to gain market traction.
Company Shutdown
By the end of 1995, despite approaching the release of Version 1.5, ScriptX had lost significant market momentum. In November 1995, Apple and IBM announced that Kaleida Labs would be shut down in January 1996. They pledged to release ScriptX 1.5 and transferred ongoing development responsibilities to an internal Apple team, extending employment offers to most ScriptX engineers.
ScriptX 1.5 was released simultaneously with Kaleida’s closure in January 1996, fulfilling contractual commitments and avoiding legal complications. Ultimately, only two commercial multimedia projects utilized ScriptX 1.5: Linné Data’s CD-ROM edition of Sweden’s Nationalencyklopedin and Robert Winter’s interactive music software Crazy for Ragtime.
This termination signaled the conclusion of Kaleida’s multimedia platform venture amid changing industry trends that favored web-centric solutions and competitors with stronger market presence.
Post-Kaleida Developments
Within a few months after Kaleida’s closure, Apple ceased all ScriptX development activities; remaining personnel were either reassigned internally or departed from the company. The Director application retained a substantial role in multimedia creation before being surpassed by Flash, whose initial versions bore notable resemblance to ScriptX’s plug-in runtime architecture, event-driven scripting language, and resource demands.
ScriptX
The lead software architect behind ScriptX was Australian computer scientist John Wainwright. Written in C, ScriptX was built upon Wainwright’s comprehensive Objects in C library—acquired by Kaleida at its foundation—which emulated an object-oriented system through preprocessor directives. This library contained over 240 classes emphasizing multimedia functionality and customizable user interface components, alongside standard data structures like arrays and linked lists serving as collection types.
ScriptX was an object-oriented scripting language that integrated design principles from Smalltalk, Dylan, Hypertalk, Lisp, Object Logo, C++, and Pascal. It supported multiple inheritance for both classes and objects, dynamic binding at runtime, and lacked primitive data types—treating integers as objects instead. Each statement was an expression yielding a value, akin to Lisp's approach.
Memory handling employed garbage collection operating on a separate thread along with an object store for persistent collections. ScriptX enabled multithreading (though not multiprocessing) and granted scripting access to low-level operating system features such as events and concurrent threads. A unique commercial advantage lay in its Clock class designed to synchronize timed multimedia sequences—a solution addressing synchronization issues absent in early competing tools.
Following Kaleida Labs' closure, Wainwright spearheaded the creation of MaxScript for 3D Studio Max, a scripting language influential in gaming and 3D modeling applications like Maxis’ Sims series, sharing notable similarities with ScriptX.
Example
Presented below is a code snippet demonstrating the distinctive syntax of the ScriptX language, featured within a class responsible for mouse tracking in an application developed by Don Hopkins. The method sendTrackDrop transmits a trackDrop message to another object.
method sendTrackDrop self {class Tracker} service target x y data doit -> (
local coords := new Point
repeat while (true) do (
if (canObjectDo target trackDrop) then (
return (trackDrop target service x y data doit)
) else (
coords.x := x
coords.y := y
local t := findFirstAtPoint target coords
if (t == empty) do return false
x := x - t.x
y := y - t.y
target := t
)
)
)
This example demonstrates how trackDrop messages are relayed between objects, highlighting several unique aspects of ScriptX. Of particular note is the assignment operator :=, which is reminiscent of Pascal's syntax.
Variables are explicitly declared as local to specify their scope, contrasting with most contemporary languages where variables default to local within functions. Typically, in other languages, scoping is file-oriented—variables defined inside functions are local, while those outside are global.
ScriptX does not implement file-based scoping; methods can be associated with any class and placed in any file accessible during runtime. In this case, sendTrackDrop belongs to the Tracker class but may be located in any file, enabling versatile code arrangement by class or feature, albeit introducing additional syntactic complexity.
Further reading
- Kaleida Labs Inc. (1994). Scriptx Architecture Guide. Addison Wesley. . Documentation for ScriptX Version 1.0.
- Kaleida Labs Inc. (1994). ScriptX Core Classes Reference. Addison Wesley. . Documentation for ScriptX Version 1.0.
- Kaleida Labs Inc. (1996). ScriptX Architecture and Components Guide. Documentation for ScriptX Version 1.5.
- Kaleida Labs Inc. (1996). ScriptX Core Classes Reference. Documentation for ScriptX Version 1.5.
- Kaleida Labs Inc. (1996). ScriptX Language Reference. Documentation for ScriptX Version 1.5.
- Kaleida Labs Inc. (1995). ScriptX Technical Overview.
External links
- ScriptX overview page
- Hierarchical encapsulation of instantiated objects in a multimedia authoring system including internet accessible objects (now assigned to Quark, Inc.)
- List of patents assigned to Kaleida
- Articles with short description
- American companies established in 1991
- American companies disestablished in 1996
- Apple Inc. partnerships
- Companies based in California
- Computer companies established in 1991
- Computer companies disestablished in 1996
- Defunct software companies of the United States
- Former IBM subsidiaries
- 1991 establishments in California
- 5
- Companies of the United States by year of establishment