libGlass
The transparent solution for distributed computing

About libGlass

Glass is a library for distributed computing and cloud computing, focusing in high performance, low lag applications, particularly virtual and augmented reality.

The Glass framework is a scalable set of components that can be used by applications to perform distributed computing. Applications are built reusing the available components as needed. One of the major goals of Glass is to be a user-friendly framework, not only suitable for new applications, but also for legacy code. This is an important feature, as most available solutions for distributed computing require a substantial amount of rewrite of legacy code; some of them require a complete change of the application design.

Glass was designed to achieve the following goals:

  • User transparency: the library must be as transparent as possible. Any tasks that are repetitive or that can be done automatically should be done by the library, without user intervention. The API (Application Programmer's Interface) should be simple and intuitive, with a smooth learning curve and provide high level primitives that can be easily used to solve any problems. Legacy code should be easy to port.
  • Extensibility: the library must be easily extensible, requiring no recompilation or any other modification to support new features; they must work as plug-ins.
  • Performance and efficiency: since the library is for distributed computing, it has to be efficient, consuming as little processing time as possible.
  • Network protocol independence: an abstraction layer makes it possible to change the underlying network protocols easily. The application can use the network protocol most efficient for its needs.
  • Portability and interoperability: heterogeneous clusters and grid computing being every day more common, the library must be not only portable, but allow different architectures to interoperate seamlessly, something that is not true for most implementations of distributed computing solutions.
  • Scalability: there is no use for a distributed solution that does not scale well. Glass has to work well in all sorts of environments, from small clusters to huge grids, and be able to adapt itself to achieve best results.
  • Reconfigurable network architecture: most existing solutions are based on a fixed network architecture, usually Master/Slave or Client/Server. Given the requirements of scalability and performance, and the fact that peer-to-peer applications are everyday more common, it's unreasonable to fix the network architecture: the developer should be free to define how nodes will connect with each other.
  • Reliability and fault tolerance: distributed computing often requires reliability. It's not acceptable that the misbehavior or crash of a single node crashes the entire computation. As clusters grow in size and grid computing becomes more common, the MTBF (Mean Time Between Failures) shrinks to a point that it cannot be ignored. Glass must be able to handle node crashes gracefully, keeping the application running and avoiding deadlocks and other problems that could arise from the node crash. Nodes should be allowed to join or leave at anytime.
  • Thread support: the library must be completely thread-safe. With multicore processors now very common, it's unacceptable for a distributed computing framework to have thread issues.



Features

Glass is already stable and contains many useful features for distributed programmming:
  • Plugins:
    • Synchronous shared memory;
    • Distributed asynchronous events;
    • Synchronization barriers;
    • Remote aliases;
    • Streaming;
  • Protocols:
    • TCP/IP;
    • UDP/IP (unfinished);
    • SCTP/IP (under development);
  • Architectures:
    • Client/Server;
    • Pure peer to peer;
    • Hierarchical;
  • Bindings for:
    • Java;
    • SWIG (Python, Perl, etc, under development);



News

21 September 2010
Release 1.0.0 is online. Download it
28 May 2010
A new release, 0.9.0, is near. We are making the final tests and it should be online at some point in June. The documentation was moved to a wiki and is also being updated and extended.
13 Apr 2010
A new release has been made, 0.9.0rc1. This version contains some minor fixes, improved support for sending arrays (including bags of bytes of any size, which makes it possible to send any data easily) and Java support through JNI. It's a release candidate--bugs may exist. The next full release is scheduled for June 2010. The new version depends on Boost (ptypes was dropped).
20 Jan 2010
libGlass has been recently chosen as part of the XPTA.lab project, in which it is being improved and used by 12 independent applications.
19 Dec 2009
Despite the lack of news, libGlass is under active development and usage. A page about it has recently been created on the virtual and augmented reality wiki and its portuguese counterpart, wiki de realidade virtual e aumentada.
23 Apr 2006
A new version is in the works. It solves several issues with memory allocation and performance. The CVS version may be used meanwhile, although it's not guaranteed to be 100% working all the time. Please email us for help and inquiries. There's also plans to modify the network system to avoid memory copies, even when serialization of data is not trivial.
03 Mar 2005
Streamcast, a new P2P application for distributing streaming data that is just starting, will use libGlass.
01 Mar 2005
Well, things are a bit later than expected due to that thing called "life". But at last a new version is being finished. The code is frozen and we are now finishing the automatic test suite and looking for some forgotten bugs.
06 Oct 2004
Thanks to Russell Coggrave, libGlass was ported to MSVC. Get the CVS code if you want it. A new release is scheduled for the end of October.
02 Sep 2004
Version 0.7.0 had a slight problems that could abort the compilation. Version 0.7.1 was released to fix this.
30 Aug 2004
First public release is ready!!! libglass 0.7.0 can be downloaded now!
28 Aug 2004
A patch to run Celestia in multi-display systems is now on the CVS.
19 Aug 2004
Lucas ported Glass to Mac OSX. We are packing and testing, the packages should be release in the next few days.
10 Aug 2004
New website layout. Moved to PHP.
07 Aug 2004
Java bindings added to the CVS.
01 Aug 2004
An overview with screenshots of the GUI editor is online.
26 Jul 2004
Added gEditor and gPDA to the CVS. They allow one to create GUIs using Glass for remote updates. Documentation for them is here. Some papers were uploaded as well, see the documentation page.
14 Jul 2004
Updated webpages. Source code on the CVS repository, go download it now!
13 Jul 2004
Uploaded the webpages. This is the now the official libGlass website.
08 Jul 2004
The project is moving in. Source code should be uploaded to the CVS server before July 15. A packed, beta version of the library will be released shortly after.
Project libGlass
Project Homepage
Sponsored by
Corollarium Technologies
Trivially the best solutions.
Thanks to:
SourceForge Logo

libGlass © 2003-2014 Bruno Barberi Gnecco
All rights reserved.