This site has been retired. For up to date information, see handbook.gnome.org or gitlab.gnome.org.


[Home] [TitleIndex] [WordIndex

library.gnome.org (libgo) is planned as a location to display documentation of unstable, stable and past releases of GNOME platform for users, administrators and developers in a rich user experience. libgo is a part of a new www.gnome.org revamp effort but it's implementation will not be integrated into whatever will drive wgo.

1. Introduction

It is aimed to be a place where users can browse and interact with up-to-date online documentation by writing and sharing annotations and a place where they can report bugs and learn how they can get involved in process of writing and translating documentation.

As it will be a place to present documentation for developers, like API references and other maintained documents, it will take away some of the content from developer.gnome.org web site. (look here, and here for more info on dgo future)

libgo is developed by Goran Rakić as his Google Summer of Code 2006 project and here you can see original Project proposal. Some parts of these pages goes way beyond what is planned as SoC2006 requirements, and are just a plans for further development. I will mark that parts in italics.

Server config: See /ServerDetails for the current configuration (on gnome.org server). This hopefully has enough hints on how to set it up locally.

2. Concept of channels

As libgo will contain both users/admins and developers docs, which are having different audience, I came to a concept of distribution channels. libgo homepage will reflect this using two distinguish colors for interface of different channels. Initially, I planned to have two channels - for users and for developers, but after some reading on live.gnome.org, I am thinking of latter adding one more - for administrators.

2.1. For users:

2.2. For developers:

2.3. For system administrators: (latter)

Content will be periodically autogenerated with a tool that is developed in Python. Implementation is extremely flexible and there are many level of abstractions so it is easy to support all sorts of documents stored on different places etc. There are many more details on implementation on this page.

3. Big picture

Speaking about documentation flowchart described in Paolo Borelli's comment on Live Documentation Editing, libgo takes it place as static content provider and an easy way for users to give Feedback on documentation either by writing annotations or using libgo's frontend to bugzilla to fill a bug report. Latter, Live editing tool like sarma or something else can be integrated into libgo. I will stick to annotations only for now.

4. Schedule

4.1. Planning

(completion by the end of June - done!)

When executed, libgo tool update content source located in cache from CVS/SVN server, generate XHTML files and write them down to output dir. At the end it generate index files for browsing and prepare annotations storage.

Documentation fetching and building is done with a concept of locators (that find document items to be built), decorators (that can do a tweaking of how specific document item is built) and document objects (that represents document item and have all the informations how to convert themselves into XHTML files for output). You can look at this page for more informations on implementation design, support for localization and how locator and build process for user's documentation is implemented.

Support for annotations is implemented using JavaScript, but libgo interface is usable even without JavaScript enabled (when annotations are not available). I don't know if I will use server-side generated JavaScript files (imported with <script src="..."> tag) or I will do annotations loading using XmlHttpRequest but either will work. Look here for more info on annotations.

When localized pages are generated, standard Apache MultiView method is used, with English as a fallback language, but there is a way to override your browser settings with a cookie set from JavaScript (and this require JavaScript to be enabled).

4.2. Mockup building

(completion by the end of June - done!)

I designed interface based on "ReadUp: A Widget for Reading" paper by William C. Janssen. Page has two columns, so text rows do not get too long (which is then very hard to trace with eyes), but CSS will hide second column for printing. In right column, there are 2 tabs: Sections and Annotations (Based on feedback I've got from Thomas Wood, I am removing "Pages" tab and rearranging Prev/Up/Next buttons as horizontal.) (some navigation buttons are desaturated if navigation action isn't available), followed by the buttons for selecting different format (PDF, Single HTML page, Multiple HTML pages) and printing, and search button at the end. Keyboard shortcuts will be provided for these actions.

small-lib1.png small-lib2.png small-lib3.png small-lib5.png small-lib7.png

Larger: lib1, lib2, lib3, lib5, lib7

Please note that browse by keyword will not be available for first stable release, and I am planing to integrate this feature with goals of Project Mallard on providing tasks based documentation. Also, Annotations are not longer saved in cookies but on server side as storing on server side make annotations sharing and editing documents using annotations possible. More info on annotations.

For UI design, I was using Tango color palette, and few Tango icons.

I am already planing to provide RSS feeds for recently updated documentations for every channel and for every suported language (language feeds have list of recently updated documents, translated to a selected language) so user can choose what feed to subscribe.

4.3. Developing

(completion by the end of August - in progress)

I planned to this in iterative manner, with small pieces added in each step. But now when I am coding, I want to have one set of features finished before releasing, so if somebody want to play with it can see something of bells and whistlers. Except to see code in next week.

Please, read notes about how I am doing implementation, and what I am calling a concept of locators, decorators and document objects on this page.

4.4. Wrap-up

(completion by the end of August)

Final tweaks and setup on a public test platform.

5. Thoughts/Ideas

These points come from GnomeWeb/GuadecNotes:

6. Comments

(((Many of these comments were originally published at GnomeWeb/DeveloperGnomeOrg - moving them here)))


2024-10-23 11:10