# Sun Labs Lively Kernel

Overview | FAQ | Forums | Interactive Tutorial | Enter Lively Kernel

What is it?

The Sun Labs Lively Kernel is a web programming environment and computing kernel built on the JavaScript language and graphics capabilities available in ordinary web browsers. JavaScript brings the graphics to life, and the graphics are then composed into an interactive application platform. In addition to its application execution capabilities, the platform can also function as an IDE (integrated development environment), making the whole system self-contained and able to improve and extend itself on the fly. The Lively Kernel includes the ability to save on web pages the applications built with it, and even new versions of the system itself.

How did it come to be?

It began as a study of web programming. A group of us at Sun Labs had surveyed the field and we felt that web programming was much more complicated than it needed to be. When we looked at the lash-ups of HTML, DOM, CSS, PHP and all the AJAX web toolkits, they seemed unnecessarily complex and cumbersome compared to the desktop programming environments that we were familiar with already years ago before the web.

It seemed to us that if, instead of starting with a text markup language, you began with a dynamic language and structured graphics like desktops systems of the 1980's, then even web-based applications could be just as lively and interactive as the best desktop software.

Beyond just rethinking web programming, the Lively Kernel has become a rethinking of the web itself. It offers a world of lively objects, all active and distributed throughout the universe of the web.

Can anybody use it?

Anyone can probably have some fun with it. The Lively Kernel includes a simple graphics editor, and many ingredients of a UI builder. There is an online tutorial, and most features of the system can be tried out while you are reading.

That said, it must be understood that the Lively Kernel is an experiment and a research environment in its early stages, and at this point it is probably more appropriate for students, computing enthusiasts and even children than for, e.g., commercial web site designers.

How do I get it?

The Sun Labs Lively Kernel is alive on the web, meaning that you do not download it and install it. If your browser supports the Lively Kernel (see the list of supported browsers below), then merely clicking on the “Enter Lively Kernel” link causes the system to come to life in your computer. You may see some static items on the screen but, by default, everything there is alive and changeable.

I don't understand. Where is the source code or binaries?

The entirety of the Lively Kernel is written in JavaScript, a dynamic language that uses no binary files for execution. The Lively Kernel does not require any installation or plug-ins, since the necessary JavaScript engine is already part of your web browser. As soon as you click on “Enter Lively Kernel” link, all the Lively Kernel code is loaded into your browser and running. At some point we may compress the files to make for faster startup but, if so, we will make the full uncompressed sources available on this site.

For your convenience, we have made the source code available here as a ZIP file.

For technical documentation, refer to the Lively Kernel Technical Overview document.

Is the Sun Labs Lively Kernel open source?

Yes, the Sun Labs Lively Kernel is made available from Sun Microsystems Laboratories as open source software under the GPL license, version 2.

What is the GPL license?

In layman's terms, the GPL license says that individuals may use the software for their own use without charge, companies may use it for their own use without charge, and individuals and companies may even build products based on the Lively Kernel for sale without charge. The only requirement (the so-called "copy left" condition) is that if an individual or company wishes to distribute the software with changes or enhancements, then those changes or enhancements must be made available back to the Open Source community. For further information, refer to http://www.gnu.org/licenses/.

What if a company wants to build a product around the Lively Kernel, but does not want to reveal proprietary enhancements?

Sun Microsystems, as licensor of the Lively Kernel, may negotiate alternative proprietary licenses with such developers. Interested parties should contact Sun Microsystems for further information.

How is the Sun Labs Lively Kernel related to JavaScript?

The Lively Kernel is written entirely in the JavaScript programming language. Lively Kernel applications are also written entirely in JavaScript. We call it "Lively" because the system makes the browser far more interactive and alive. The applications and even those scripts that comprise the Lively Kernel system itself can be examined and changed at will by the user.

Why do you call it a “Kernel”?

We call it a kernel for three reasons: First, the system is still reasonably small – less than ten thousand lines of JavaScript code. Second, the system is intended to be self-contained and extensible, meaning that it is possible to enhance the capabilities of the system dramatically using only the system itself. Third, the system exhibits various operating system like qualities, such as the ability to run multiple applications simultaneously and to serve as a host for entirely new types of applications, widgets and tools that were not pre-built into the system itself. In general, one of the central characteristics of the Lively Kernel is its malleability: An imaginative user can take the Lively Kernel in directions that were entirely unforeseen by its designers. In that sense, the current system is only a “kernel” of its full potential.

What is the graphics model in the Lively Kernel?

The design is inspired by the Morphic graphics framework originally built in the Self programming system (http://research.sun.com/self/), and later incorporated into the Squeak Smalltalk environment (http://www.squeak.org/). It is a desktop-style graphics architecture supporting superposition, transformation, clipping and other useful graphical traits and operations, as well as a multi-user event model.

Whoa! What do you mean, multi-user?

The hand metaphor used for the cursor in the Lively Kernel allows for several users to actively inhabit a single world at the same time. We had this working in an earlier version, and plan to make it work in the release version as soon as possible. The objects are serialized at times of change, very much the way they are serialized to store a web page. The performance is not optimized, and the synchronization is not as rigorous as systems like Croquet, and yet it has shown itself to be practical for simple applications like a multi-user whiteboard and simple shared games.

Where does the Lively Kernel run?

The Lively Kernel is intended to run in every commercial web browser client with no plug-ins or installation whatsoever. However, the system uses advanced features that are only now appearing in web browsers. Because of differences in the underlying graphics capabilities of the various web browsers, currently the system runs best on Apple's Safari browser. It also runs on Firefox, although with less performance and with some remaining bugs. Microsoft Internet Explorer is not supported currently, but we are hoping to support it in the near future.

Why doesn't the Lively Kernel run on Microsoft Internet Explorer?

Unfortunately, the graphics libraries supported by different web browsers are still incompatible. Safari, Firefox and Opera have support for a graphics standard called SVG (Scalable Vector Graphics), while Microsoft Internet Explorer supports VML (Vector Markup Language). Currently, we have a public Lively Kernel implementation available only for those browsers that support SVG. We are hoping to have support for Microsoft Internet Explorer available soon.

What is SVG?

SVG stands for Scalable Vector Graphics. It is a declarative graphics language and specification designed by the World Wide Web Consortium (W3C). It is supported by most web browsers, although the implementations are still somewhat incompatible. While SVG is commonly used via its HTML-like declarative syntax, the SVG functionality of a web browser can also be accessed programmatically from JavaScript.

How dependent is the Lively Kernel on SVG?

To us, SVG is an implementation vehicle. We have chosen to use SVG because of its functionality and widespread availability in commercial web browsers. However, to end users and developers, the Lively Kernel is an environment that is based purely on JavaScript. At that level, the use of SVG or any other implementation technology is not intended to be visible at all. Future releases of the Lively Kernel may include back-ends also for other graphics standards than SVG.

What exact browser versions currently support the Lively Kernel?

Safari – 3.0.2 and later (RECOMMENDED)

Firefox – 3.0 beta and 2.0.0.14

Note: On Firefox and Opera our system still has various bugs. Performance is also rather poor on Firefox 2.0.

For best performance and quality of experience, we highly recommend Safari.

Why is the performance of the system poor sometimes?

The performance of the Lively Kernel is heavily dependent on the performance of the JavaScript virtual machine and the SVG engine inside your web browser. Neither JavaScript virtual machines nor SVG engines have been optimized for executing significant, long-running web applications yet. However, based on our earlier experience with other dynamic languages, these problems should go away soon. For instance, there is no reason for a JavaScript application to run any slower than a comparable Smalltalk application (Smalltalk is an equally dynamic programming language), or significantly slower than a comparable Java application. It is just that JavaScript virtual machines have not been optimized for high performance yet. In the near future, web browsers will likely have JavaScript engines and graphics libraries with dramatically better performance.

What future releases are planned for the Lively Kernel?

The development of the Lively Kernel is still very much in progress.
In the future, you can expect changes in areas such as:

* Saving of applications directly from within the Lively Kernel

* Dynamic access to source code base

* Graphics enhancements: curves, filters, fancy borders, etc.

* Multi-user collaboration capabilities

* Programming enhancements (more advanced development tools, debugging facilities, etc.)

* Music and sound

* Internationalization

You can also expect additional ports of the Lively Kernel to make it available in additional browsers and other environments.

What have people done with the Lively Kernel?

See our developer and user forum for interesting links. Note that by posting there, you are giving Sun permission to publish your application (with credit) in the archive. The archive is a repository maintained by Sun Microsystems showcasing various applications that we consider to be fun or useful.

What Lively Kernel projects are currently going on?

The best way to find out what is going on is to visit and read the forums.

How do I become a Lively Kernel developer?

Visit the forum and our web site for latest information. Currently, we do not have much developer information available yet. We will post developer information on our web site as soon as such material becomes available.

How can I contribute to the Lively Kernel?

Visit the forums to find out what people want and are working on. If you produce a bug fix or enhancement, then post it on a forum to share it, and submit it to us to proffer it for inclusion in future releases.

How can I share something built with the Lively Kernel?

Post a link to it in the forum. Please include your name and email address if desired, and a line or two of description – ideally enough for a search engine to find it.