|By Janice J. Heiss, October 12, 2004|
Early in 2003, Hideya Kawahara, a Senior Staff Engineer at Sun Microsystems, had an inspiration. Recognizing that desktops had not changed substantially in 20 years, he set out to make them more aesthetically appealing and more powerful. Operating on the assumption that the next user interfaces would be 3D, he initiated a side project that would consume at least two hours a day of his spare time, plus most of his weekends and holidays for more than a year before taking hold at Sun. Struck by the growing gap between a computer's 3D capabilities and what is found on most desktops, he decided to leverage what he perceived as wasted potential.
He knew that Microsoft was designing a next-generation desktop, but could find no Linux approach that satisfied him. Initially working out of relative ignorance of 3D technologies, he began exploring the potential of 3D desktops on Linux. Although for years Linux developers had worked to develop user interfaces comparable to Windows, Kawahara believed that a more aggressive approach was called for. "I was energized by the freedom I had on Linux to build what I wanted," says Kawahara. His very ignorance of the subject may have worked to his advantage. "Rather than bringing the desktop environment into the 3D space, I broke down 3D ideas and tried to integrate them into the desktop, piece by piece," he explains. "This was something that had not been tried by many people." He created a program for Linux, written predominantly in the Java language.
In late July 2003, Kawahara gave a demo of an early prototype to his friends in Sun's Desktop Solutions organization that met with strong support. Curtis Sasaki, Sun's Vice President for Desktop Solutions, happened to stop by the meeting. The next day, Kawahara got a call from him inviting him to present his demo to Sun's current President and Chief Operating Officer, Jonathan Schwartz, who was then Executive Vice President. Schwartz immediately recognized the promise in Kawahara's innovation and Project Looking Glass was formally born at Sun. "I was impressed by how quickly Sun executives saw the potential in the project and how open they were to innovation," says Kawahara.
Soon he joined with Sun developers Deron Johnson and Paul Byrne to form a core team committed to building a developer's release -- a completely rewritten version with full-scale productization in mind. In July of 2004, after completing a very initial cut of the developer's release, the Project went open source, and the rest is fast on its way to becoming history. In the latter part of 2004 Project Looking Glass will undergo the finalization of APIs and focus on 3D application development.
Kawahara, Byrne, and Johnson demonstrated Project Looking Glass at the 2004 JavaOne Conference. Attendees watched as windows were zoomed and spun and turned sideways, then flipped around to reveal another application on the backside, or arranged vertically, or side by side like books on a shelf, or swept off to the edge of the screen in a panoramic moving view. Users could enter a 3D environment and access applications and files in new and interesting ways. Windows were made translucent so that viewers could see one window behind another, and move on the desktop, much like they would in a virtual world. A simple CD player application demonstrated the kinds of applications that might work well in 3D.
Project Looking Glass, which was developed through leveraging Java technology, was created to work with the Linux and Solaris desktop environments. The Linux version is available today. The Project team has started initial planning for Solaris x86 support and is still evaluating a Solaris SPARC version.
Project Looking Glass will eventually work alongside applications designed for a 2D window system, without application modifications. The desktop features components such as Sun's StarOffice, the Mozilla browser, and RealPlayer support, along with other components. The current version of Project Looking Glass relies on the JDK 5.0, Java 3D 1.3.2, and Java Advanced Imaging (JAI) 1.1.2.
Main components of Project Looking Glass include:
Project Looking Glass Client Libraries expose the Java API and enable developers to write Project Looking Glass-aware applications. This includes a Java 3D-based client-side scene graph API and utility classes of reusable building blocks.
The Display Server module takes charge of rendering 3D space. Project Looking Glass client libraries send requests to the server regarding 3D rendering in the form of scene graph updates. The two modules exchange event information. The Display Server includes a display server control as the central master control and provides an API for developing pluggable SceneManagers.
The X server enhancement allows the X server to capture X clients' visual and send it to the Display Server for rendering in the 3D space. This is the key component in achieving execution of existing X applications in the 3D space. The enhancement uses X extensions which will be integrated into a future version of X.Org's X server.
The API is based on Java 3D technology. Those interested in development on top of Project Looking Glass should be familiar with the Java 3D API. Project Looking Glass-specific APIs are available for developing 3D Window Manager (SceneManager) and for Project Looking Glass-aware applications to interact with a SceneManager.
In addition to Java 3D, other APIs include core components to create a 3D widget set, which include Component3D, Container3D, Frame3D and others. These classes are analogous to those of AWT.
The APIs also includes classes and interfaces for writing modular and pluggable SceneManager, which includes Taskbar, background, AppContainer, and CursorModule. The design is still in the preliminary stages, and refinements are expected. The team is preparing a high level API design overview document, which will provide a perspective on the overall APIs and will be available on the project page in the near future.
Project Looking Glass has several current areas of focus, all of which depend heavily on users and open source developers. The first challenge is to fix bugs and add stability. The second challenge involves API and platform refinement. The third task is to enrich documents, in particular the evolution of the initial API -- something that depends heavily on input from users.
For a list of ongoing sub-projects, go to the "On Going Sub-projects" section on java.net.
Sub-projects include "Javadoc", "Tutorial Document", "Document Localization" and "Knowledge-base" on the documentation side, as well as "Scene Manager Configuration Mechanism" and "Demo Apps" on the coding side.
An incubator project currently has 2 active sub-projects:
The team hopes to develop a sub-project involving 3D model tool integration, and is attempting to get Visual Designer on board with the project.
Java technology developers typically use Swing for classic desktop application development. Project Looking Glass provides support for both traditional 2D application UIs and new 3D application UIs. Existing Java technology applications will initially work the same way that X applications function within the 3D environment -- they will appear as a 2D application on a 3D window.
"For Java Swing-based applications, we are exploring the possibility of providing a 3D look and feel for Swing," observes Sun's Paul Byrne. "This would enable any existing Swing application to have a 3D UI without any changes to the application. The fact that the application does not need to be changed is also a possible limitation because the app still thinks it's rendering in 2D so, although the UI will be 3D, the application will not be taking real advantage of the third dimension."
For the new class of 3D UI applications that they hope to see developed, Project Looking Glass will work to provide a set of UI widgets that are fully 3D aware. "These widgets will be based on the very rich Swing API with some extensions to provide the application access to the third dimension," explains Byrne. "Using Swing as the foundation for this work will provide a very smooth transition to huge numbers of developers who are familiar with Swing."
Project Looking Glass is now in the hands of the open source community. It has been created so that the broadest number of people can work with it. Developers are invited to use their imaginations to take Project Looking Glass in new and exciting directions.
The team hopes that existing 2D applications will eventually have 3D capacities and open source developers will build rich, interactive 3D applications with a whole new suite of interactions.
Developers who have thus far joined the project are very active with lots of comments and ideas flowing through forums and plenty of people downloading the source code and supporting each other on installation issues on a variety of Linux distributions.
Areas that need collaboration include:
The Project Looking Glass team is open and enthusiastic about receiving suggestions from developers.
Project Looking Glass Developer's Guide
- Getting Started with Project Looking Glass
- Project Looking Glass FAQs
- Project Looking Glass
- Project Looking Glass Demo
- Hideya Kawahara Interview
- Project Looking Glass Goes Open Source