The architecture
The projects listed below implement modularly the core concepts of needed for a rich, interactive development kit. The packages are implemented in JavaScript, however, interoperation with other languages and systems are possible. This allows to mashup and "lift" other applications into the realm of Lively programming. can be used both on a web page and as a desktop app that can be locally installed.
Controlled code execution that enables runtime system modifications and extensions. lively.vm provides a way to inject scopes into the normal JS eval and instruments code to observe side effects and control flow.
JavaScript source code parsing and transformation tool. This is jused to analyze and instrument code so that inspection, evaluation, and debugging are possible. Code analyzation is also used in the various tools of's IDE.
Package and module, backbone of It incorporates a Smalltalk-like meta interface that allows Lively (and/or programs using Lively packages) to have a runtime representation that allows inspection and modification.
Serialization and deserialization of JavaScript object graphs, allows to snapshot the state of objects and Lively pages (worlds). Foundation of the wiki system and PartsBin. Offers a plugin system to make it compatible to libraries and other data sources and object types.
persistence and data
High level access of HTTP and file system resources, easily extensible to other backends.
In-browser and server-side database for object storage and versioning. Based on CouchDB and PouchDB that offers synchronization and replication
Object repository to share and publish applications and their components.
server and system interop
Can be used to remotely run and control operating system processes on Unix / Linux / Windows. Also provides an integration to initiate interactions via the lively.2lively messaging system.
node.js based server build around the same flexible concepts as the client-side Offers a plugin system that can be used to easily extend server-side functionality.
multi user and network
Remote, peer-to-peer message sending mechansim between lively systems. It is built around a simple receiver-selector-argument semantic that allows systems to exchange information in a ore flexible way than normal client-server interactions
User authentication and authorization system. Provides a user model that is based on a token-based capability system. User objects are available to other subsystems and are used for Wiki and PartsBin object ownership. Can be used to design multi-user interactions
graphical user interface and tools
Rich, interactive and composable graphical user interface, modeled after Self's Morphic UI. Provides an abstraction above HTML / SVG / Canvas but can be integrated with native Web content to create mashups and system integrations. Using the ObjectEditor, graphical objects can be directly scripted which lowers the abstraction of typical programming tasks.
Tool support for programming and debugging JavaScript, HTML, CSS, shell. Other languages can be plucked in as needed (see cloxp and LivelyR).
A dataflow system that can be used for reactive data bindings. In combination with lively.morphic it comes with a graphical extension that allows to interactively connect objects, similar to visual dataflow programming.