source code


The source code of GLS³ is licensed under the GPL. Although currently still in early Beta, we thought we should give you a peek of what we are working to achieve. At anytime, please feel free to contact us.
Source Code - GZipped TAR
Design Documentation - PDF

about GLS³

GLS³ is implemented in C++, with much reliance on the Standard Template Library (STL), and uses ZThread, for multithreading support.

Apache's Lucene is used for Information Retrieval (IR). Lucene is a widely recognized IR library used in the implementation of internet search engines and local, single-site searching. After evaluating several IR libraries, Lucene was selected for its leading performance results, the detailed documentation available and its wide adoption, and thus, active development.

PostgreSQL was used as the Database Management System (DBMS) for storage of Metadata about Documents, Types and Stores. The Design Documentation describes why PostgreSQL was selected as the DBMS of choice. However, we are evaluating the possibility of migrating to to a lighter DBMS, specifically, SQLite.

The core of GLS³ is an user-level daemon process that communicates with other client processes through either an API or an Internet Socket Interface. Information is sent to the Socket Interface as XML, and requests are received through it also through XML, hence comes the need to parse XML documents in the GLS³ daemon. Additionally, To pass objects between the GLS³ daemon and the API, objects are serialized to XML. libxml was used for parsing XML documents.

GLS³ includes a pseudo file system that provides a backward-compatibility layer for non-GLS³-aware applications. The pseudo file system is implemented as a client module for FUSE. This file system, named glscubefs, allows users to browse and search the stored information through the traditional file systems interface.

Additional dependencies may be brought up by Importers. For example, the PDF Importer depends on xpdf.

GLS³ does not depend on any libraries specific to a desktop environment, with the only exception being the Browser. The prototype browser was implemented in HTML, CSS and JavaScript, along with a small KDE container application that uses KHTML for rendering.



under development


  • Transaction Processing: Encapsulating requests in transactions and rolling back the failed ones.

  • Additional Importers: The current build of GLS³ contains Importers for the following file formats: OpenOffice Calc, OpenOffice Impress, OpenOffice Writer, PDF, JPEG, WAV, MP3 and AVI. The next collection of Importers planned for development are for the following file formats: Microsoft Word, Microsoft Powerpoint, Microsoft Excel, BMP, PNG, QuickTime, Real Audio, RealVideo and OGG.

  • Composite Documents: Composite Documents are Documents that preserve the hierarchical organization of a group of tightly-related Documents, for example, the source code of some application.

  • Keyword Substitution: Maintain a user-editable dictionary of keywords and their possible substitutions. For example, a search for "UN" would yield results containing "United Nations", and a search for "cv" would yield results containing "resume".

  • Active Queries: A client application using the GLS³ API or Web Interface can register a Live Query, and when any changes occur to the stored information that match this query, the client is notified. For example, if a client application is showing search results, and a Document in these results is deleted, the application would be notified about this change so that it would remove this specific entry from the displayed result.

  • Metadata Boosting: Allow Developers to specify boosting values to specific metadata.

  • Finalizing the Installation, Type registration, Store creation and loading of some XML configuration files. Currently, parts of these features are carried out manually.