Gled is a Generic Lightweight Environment for Distributed computing.

Gled is a C++ framework for rapid development of applications with support for GUI, 3D-graphics and distributed computing. It extends the ROOT framework (standard data-analysis tool in high-energy physics) with mechanisms for object collection management & serialization, multi-threaded execution, GUI auto-generation (object browser & editor) and dynamic visualization (OpenGL).

Distributed computing model of Gled is a hierarchy of nodes connected via TCP/IP sockets. Gled provides authentication & access control, data exchange, proxying of object collections and remote method-call propagation & execution.

Gled can be dynamically extended with library sets. Their creation is facilitated by a set of scripts for creation of user-code stubs. Simple tasks and application configuration can be efficiently done via the interactive C++ interpreter (CINT).

Gled is used for development of programs in high energy physics and as a research tool in distributed and grid computing.

Gled is the development platform for the Greed project.

Intended use.
  • scientific computation and visualisation tools (high-energy physics in particular)
  • development of distributed applications
  • shared virtual environments
    • co-planing and data exchange
    • virtual gardens
    • 3D MUDs

Server-proxy-client-viewer paradigm.
Gled implements a specific clustering paradigm, offering servers, proxies, clients and viewers with a high degree of code reuse. The top-level server node exposes its object space to first-level nodes which provide proxying facilities to second-level nodes and at the same time function as servers, exporting their own independent object spaces. Each node in the ordered tree structure therefore functions as a client, a proxy and a server. Viewing and rendering facilities are optional and can be instantiated at any node. An infrastructure for propagation and broadcasting of method invocation requests is provided and is general enough to allow for authentication and an efficient access control. Synchronization of object spaces is achieved via streaming of object graphs and a time-ordered delivery of method invocation requests. Independent local object-spaces exist on every node and can be used for objects pertaining to local computation and rendering.

Programming and computational framework.
The Gled OO framework provides facilities for generic programming in a server-proxy-client hierarchy. ZGlass is the common base of all Gled classes and represents a generic object-graph-member with ability to have named pointers (or links) to other objects. ZList is the container base class and ZNode an object-tree-member base class. Object graphs can be traversed by algorithms (existing within the same object structure, but on any node in the server-client tree) to achieve modification of object-graph state or produce visual effects. Aggregates of objects enter into the structures at different levels and can be arbitrarily propagated to other nodes in the server-client tree. To minimise network traffic, parts of object graph can be retrieved from local files or databases. Node hierarchy and object aggregate dependency is accessible to alghoritms.

Gled is a ROOT application with full access to ROOT's data analysis and presentation services, object I/O and CINT, the C/C++ interpreter.

Objects can acquire their own threads to perform different tasks such as computation, data acquisition and analysis or dynamic visualisation. Results obtained can be pushed to other computing nodes or storage devices. As threads are spawned and controlled by standard gled method invocation requests, schedulers and job control mechanisms spawning across the whole Gled cluster can easily be implemented. Optimized streaming and method invocation propagation is provided for use in HEP computations with large data sets and fast data transfers.

Rich interactive graphical environment.
On viewer level, Gled features automatically generated GUI widgets (using FLTK, the Fast Light ToolKit) that provide object interaction and editing following C++ inheritance hierarchy. Widgets for exported object-members (data and methods) are created automatically. Their callbacks send Gled method invocation requests, thus allowing interaction with remote objects. An object collection browser, object instantiation interface and method execution request builder is provided.

The viewer implements a versatile 3D rendering infrastructure where the user has detailed control over rendering. Several rendering sessions can be operated independently. Direct access to OpenGL is provided within a parallel class structure (class Foo has renderer Foo_GL_Rnr). Renderer permits direct mouse and keyboard interaction with objects and the camera.

gled/about:true name

Gled is a misformed version of slavic verb to watch. It was the name of a mountain temple, where, according to a legend, people could gain insight into the structure of space and time.


Gled is developed and maintained by Matev¾ Tadel, © 1999-2010 Matev¾ Tadel.

Gled is free software, released under the General GNU Public License (GPL) version 2.0 (June 1991).

Extensions of Gled in a form of libsets can be distributed under different licensing terms.


Matev¾ Tadel      design, development, basic documentation
Jan Jona Javor¹ek meta-design, user documentation, web


Developement of Gled is supported by Experimental Particle Physics Department of the Jozef Stefan Institute (JSI), Ljubljana, Slovenia.

Since November 2001 development of Gled is partially supported by projects funded by Slovenian Ministry of Education, Science and Sport.

Since September 2004 Gled is used as a tool for dynamic visualization and prototyping of visualization algorithms by the ALICE collaboration at CERN. Some core development has been carried out in this context.

Perl, FLTK and ROOT have been indispensable. Many thanks to all involved.


Gled's libsets may (and do) have additional dependencies.

gled/about:related projects