Livespaces
Information Repository
The information repository is a core framework for sharing/publishing
information in a structured way. It is intended to be a sort of
uber-Plexus.
The repository will feature portal integration, shared documents, text
snippets, snapshots, transcripts, clipboards.
We will also develop a generic browser plus integration with other
apps such as Clipboard, AuTM, etc.
We have no idea how to build this yet :) Requires a lot of design work
Design
Use Jackrabbit (see below) as a starting point for the content repository as it looks like a technology that is going to be widely used and supported by industry.
Jackrabbit doesn't have full support yet for using WebDAV for a remote client repository which we would need if we want any client application/service within Livespaces to use the JCR API. RMI is supported so we can use RMI for the remote repositories (i.e. remote views of the centralized repository) for now and then switch to using WebDAV in the future once it becomes fully supported by Jackrabbit.
A http service/bundle that uses an embedded version of Jetty can host the jackrabbit repository. Jetty is small footprint web application server (i.e., like Tomcat) and so is ideal for embedding within an OSGi bundle, in fact the Oscar HTTP service bundle uses it already. We can't just use the Oscar bundle off the shelf however as we need to do some custom configuration of Jetty to specify where web application archives (WAR file) should be installed from etc.
The jackrabbit repository (contained within Jetty) can then be published as a Livespace service (i.e., the information repository service) to enable other services, applications etc. to interact with the information repository. This could include uses cases such as:
- the screenshot service storing it's screenshots within the repository
- working documents within a collaboration session being hosted within the repository so they can be recalled, accessed, exported etc.
- the file sharing service using the repository when documents are shared between participants
Using this approach the main interaction with the information repository would be through the Livespace service (i.e., entities on the bus) to abstract what actual technology is being used. Reading from the repository can simply be achieved by accessing the information repository entity structure, which includes the links to the actual content via a WebDAV URL for instance. A recommended approach for other services to add documents/information to the repository would be to add the actual information repository entity into the entity structure on the bus and then the info repos service updating this entity to specify where the actual content should be stored. The service/application can then upload the content into the repository for others to access.
Research
Back-End Technologies
The back-end of the information repository could be supported by a number of different technologies such as WebDAV, Content Management Systems, Enterprise Wikis, or messaging/collaboration suites.
- Open Source - Apache Software License
- A content repository (i.e. a low-level content management framework) that provides a hierarchical organization of files which can be stored into arbitrary, heterogeneous, distributed data stores.
- Can also integrate and manage data stored within external repositories
- WebDAV access module so that data can be accessed through WebDAV
- Allows access from Java Apps directly through the Slide API
- Slide Server requires Tomcat, or any other servlet container or app server that supports at least servlet spec 2.3
- Could potentially use the Oscar HTTP Bundle which uses an embedded version of Jetty so that we are not reliant on running an external Tomcat instance.
- Open Source - Apache Software License
- A Java content repository (implements the Content Repository for Java (JCR) API) that supports structured and unstructured content
- Provides a unified API for storing content, access control, searching, versioning and event monitoring
- Can be used with a number of underlying storage mechanisms, and these could be changed without effecting the use of the repository
- Normal file system
- Database
- WebDAV - could include use of Jakarta Slide
- Jackrabbit could be deployed within a bundle
- Could use one instance as content repository and then WebDAV as transport protocol between clients and the repository
- Basic structure consists of a workspace (or workspaces) consisting of items that can be built into an hierarchical data model. Items can be nodes or properties. A node can have child nodes, a property cannot. Properties are the "real data items" associated with a node.
- Data models that do not lend themselves to hierarchical structures are supported also.
- Doesn't define a communication protocol for inter-JVM repository access, however there are tools for using JCR content repositories over WebDAV and RMI protocols.
- Links
- A range of different licenses - not open source for everyone so probably wouldn't want to use for this reason.
- Open source license only lets you use one instance for your project and the instance needs to be publicly accessible.
- Wouldn't really suit being deployed within Livespaces for use as an information repository.
- Open Source (Community Edition)
- Enterprise Edition includes a few extra features
- Need to Enterprise Edition if we wanted to deploy a modified version of Magnolia
- Enterprise Content Management System
- Uses the JCR API as the basis of its architecture
- AJAX browser-based UI
- A range of features such as:
- versioning of content
- workgroup collaboration of resources
- portal integration (JSR-168)
- Open Source - MIT License - can modify and deploy
- Portal Platform - JSR-168 compliant
- Runs in application servers (e.g. JBoss) and also servlet containers (e.g. Tomcat, Jetty)
- Uses Liferay Journal as the content management system
- Document library uses JSR-170 (JCR API)
- Open Source - LGPL
- Wiki, written in Java.
- Files can be stored using the file system or Hibernate/database
- Will use the JCR API (i.e. Jackrabbit) for future versions of XWiki (1.1/1.2)
- Provides an XWiki API for accessing, modifying, searching documents etc.
- Supports plugins
- Runs within a servlet container (e.g., Tomcat, Jetty etc.)
- Requires a relational database (such as HSQL, MySQL, PostgreSQL, DB2, Oracle etc.)
- HSQL would be a good option here as it is a very simple database that comes as a single JAR file (actually included in the XWiki WAR)
- Can use LDAP authentication
- Open Source - Mozilla Public License
- Messaging and Collaboration Suite
- Email
- Address Book
- Calendar
- Documents
- Admin UI
- Collaboration Server + AJAX Based client
- Integration with Microsoft Exchange
- Enterprise mashups, e.g.,
- Addresses in emails when clicked can pop-up a Yahoo map
- Seems to be tailored more towards emailing and messaging in an enterprise rather than an information repository, a document repository is included in the suite but it is still in beta.
Revised on November 18, 2008 13:46
by
Matt