Nuxeo 5 for Developers

This post contains content migrated from my Nuxeo 5 overview.

This outline page describes how to get involved with Nuxeo 5 development. Here is a roadmap for upcoming releases. The Nuxeo EP 5.2 release slated for December 2007 seemed important in that it includes Portlet integration, WebDAV, WCM, and uses Seam 2.0 and the latest Jackrabbit release. This release has been delayed and is unlikely to be generally available before February 2008 per the last unofficial response from a lead developer.

UPDATE: A new Nuxeo blog article and the updated roadmap reference the pending release and a March 2008 release target for Nuxeo 5.2. The article announced that the next 5.1.3 release would add support for useful features like WebDAV and Portlets, which it did.

The Getting Started reference describes how to setup a development environment for working on Nuxeo EP in an Eclipse environment. There are more detailed notes outlined here or here. The developers wiki also contains useful information.

An overview of their source repository is available here. A web view of the Nuxeo Subversion source repository is available here. The main SVN trunk can be browsed here. The 5.2 branch can be viewed here. Nightly snapshots are available here, but there is not currently any snapshot of the Seam2 source, which can be checked out here:

$ svn checkout http://svn.nuxeo.org/nuxeo/nuxeo-ep/branches/5.2-seam2-v2

These reference links cover Nuxeo taglibs and third-party integration options:
Some Nuxeo add-ons of interest:
  • Virtual Navigation: provides navigation built on meta-data that can be tailored to the domain, i.e. more user friendly or intuitive
Nuxeo mailing list threads of interest. It seems like the topics of using/integrating Nuxeo and a Seam web app started coming up from users in December 2007.
  • Any production sites using Nuxeo 5 yet? more...
  • how to deploy Nuxeo and Seam site and let them communicate more...
  • How can I use JBoss Seam and Nuxeo 5 together? more...
  • JBoss Portal & Nuxeo Portlets more...
S0me recent feedback from the developers:
[on WCM support] there are no public websites running on Nuxeo 5 since our focus was not on WCM (for instance our own websites, nuxeo.com and nuxeo.org, still run on CPS - but we're running our internal document management application on Nuxeo 5, of course). I have uploaded a presentation yesterday on SlideShare that highlights a few recent projects...

[on current limitation for co-locating Nuxeo with Seam 2.0 app] Nuxeo 5.1.2 uses Seam 1.1.5...
Other articles of interest:
Switch From Subversion to Mercurial

In March of 2008, the Nuxeo team switched from using Subversion to the distributed Mercurial. Performance was the primary reason cited for the switch.

Steps to support this change:
  1. Install Mercurial -- I used Mac Ports: $ port install mercurial)
  2. Install the ForestExtension: $ hg clone http://hg.akoha.org/hgforest/
  3. Configure your .hgrc to reference the ForestExtension
  4. Grab the Nuxeo forest: $ hg fclone http://hg.nuxeo.org/nuxeo

Nuxeo 5 at a Glance

Nuxeo 5 is a standards-based, open source platform for building ECM applications. The corporate site details commercial offerings. Nuxeo has been offering an ECM solution since 2001.

Initially a Python/Zope offering, the CPS Platform, they announced plans to switch to Java in September 2006. They outline their reasoning in this switch FAQ and in more technologist-specific details here, e.g.:
For the last two years, our business has grown and our customers’ requirements too. Our software must fit seamlessly in their global information systems. They also need to deliver critical applications that can offer concurrently high-performances, high-availability and manage huge data volume (> 5 TB). To achieve these goals, we improved the Zope infrastructure a lot, but feel we reached its limit with CPS 4, to the point where two of its most critical components, the content repository and the search engine, are actually Java-based (respectively, Jackrabbit and Lucene).

JBoss JEMS is the leading open source Java EE application server in the corporate world today and the only one at this point to support all the recent Java EE features we need for the development of Nuxeo 5, mainly: EJB3 and JSF. Moreover JBoss Inc. (now a division of Red Hat) can provide support for the middleware infrastructure at the level we require so that we can offer an integrated high-level support to our customers.

Some JBoss third-party products, like Seam, JRules and jBPM are also key parts of our architecture. While they should be running on other J2EE platforms, we believe it to be more natural, in a first phase, to use them on top of JBoss AS.

To achieve application server independence and deep extensibility we wrote Nuxeo Runtime, a powerful component management framework running on top of a host platform. Nuxeo Runtime consumes OSGi bundles or XML descriptors and deploys them dynamically to the host platform (JBoss, OSGi, Objectweb's JOnAS, Apache's Geronimo, etc. — you just need to write another adapter to support a new platform). Nuxeo components are dynamically adapted to the native host platform components (like MBean, OSGi services, etc.) giving you the full benefits of the underlying platform's capabilities.
The first generally available 5.0 release shipped in February 2007 as announced here and also covered here (touching on OSGi use). The latest stable release is 5.1.3.2 made available in February 2008.

Products integrated in Nuxeo 5:
  • JBoss AS as the target application server
  • JBoss Seam as web application framework (and AJAX support framework)
  • JBoss jBPM as business process management engine
  • JBoss Cache as cache system
  • Apache MyFaces as JSF engine
  • Apache Lucene as indexing engine
  • Apache Jackrabbit as content storage
  • PostgreSQL 8 and MySQL 5 as default target RDBMS
Nuxeo 5 is licensed under the business-friendly open source LGPL. Some jointly-developed components will use the Eclipse Public License and the Apache License. The software is developed and delivered using the open source model, with zero-cost licenses and a subscription model based around deployments, not numbers of users.

An online tour is available here and the latest user guide is available here.

Nuxeo 5 Projects

Nuxeo Runtime is the foundation of the Nuxeo 5 infrastructure. It handles deployment and extensibility of components to target platforms. This component allows the whole Nuxeo 5 infrastructure to be easily ported between Java platforms (Java EE, OSGi, etc.).

Nuxeo Core is an embeddable document management core, based on Nuxeo Runtime. It provides all necessary low-level services to define, store, manage, audit, request and search content. It is the kernel of Nuxeo 5 and can also be embedded in third-party applications to provide advanced content management features.

Nuxeo Enterprise Platform (EP), based on the above projects, provides a coherent set of components addressing the whole ECM scope. Nuxeo EP is built on two layers: Nuxeo Foundations and Nuxeo Enterprise Components.

Nuxeo Rich Client Platform (RCP) is described in the slides of the talk presented at the 2006 Eclipse Summit Europe. This project aims at building a framework to create ECM-oriented desktop applications, independent from vendor or technologies.

Rich Client Platform

While the Eclipse platform is designed to serve as an open tools platform, it is architected so that its components could be used to build just about any client application. The minimal set of plug-ins needed to build a rich client application is collectively known as the Rich Client Platform. See the RCP FAQ for more information.

Developer Information

The developer focused section has outgrown this article, and has moved to a separate post.

Operations Information

Nuxeo supports and certifies the following hardware and software likely to be used on this project.

Hardware:
  • Intel/AMD 32-bit & 64-bit
  • SPARC 32-bit & 64-bit
Operating Systems:
  • RedHat 3.x, 4.x, 5.x
  • Debian 4.0, Ubuntu Server 6.06 LTS and 7.04
  • Solaris 10

RDBMS:

  • PostgreSQL 8.x
  • Oracle Database 9i, Oracle Database 10g

Java Runtime Environment:

  • 1.5.0 (update 11 recommended)

Java EE application servers:

  • JBoss AS 4.0.4 GA and 4.0.5 GA
  • JBoss AS 4.2.0 GA (in progress)

Mapping the Java CMS Space

The Open Source CMS Landscape

Online comparisons of CMS alternatives in Java and other languages:
I've put together a comparison (Excel .xls) based on the CMS Matrix database comparing the leading open source Java CMS solutions to the Zope-based Nuxeo CPS as well as Joomla! and Drupal, the most popular PHP-based open source CMS solutions. This comparison would benefit from being updated to reflect Magnolia 3.5 and Nuxeo 5.

CMS, ECM, WCM, DMS, JCR and Portlets

Enterprise Content Management (ECM) platforms cover broader functional and technical scope than basic CMS, but most robust solutions appear to be moving in this direction:
  • Document Management
  • Collaborative work
  • Records Management & Digital Asset Management
  • Business Process Management
  • Retention Management
  • Compliance Management
  • Archiving
There is also in industry distinction between ECM and Web Content Management (WCM or WCMS). Some ECM solutions also target WCM, but not all do and WCM is more tailored for managing public web content.

Other terms encountered in relation to Content Management Systems include Java Content Repository (JCR or JSR-170) and Document Management System (DMS).

Apache Jackrabbit is the leading open source JCR, but others include Alfresco's implementation and Day Software's CRX. The Java Portlet Specification (JSR-168) defines the interface between portlet containers and portlets, and is used in many cases to integrate JCR and a CMS portal.

A DMS is used to track and store electronic documents and works at the document level, and has some overlap with CMS concepts. It is often a component of an ECM, but is not a substitute for management at the discrete content level. The jLibrary DMS project below claims to provide CMS functionality.

Open Source Java CMS

Based on those high-level comparison and the discussions/articles below, I took a closer look at the following CMS-related Java projects.
Alfresco (WCM/ECM)

Alfresco is an open source ECM with DMS features, built by a core teams from Documentum and Interwoven with 15 years ECM experience and founded by a co-founder of Documentum. Is this a good thing? Initially released in September 2006. There is also a more basic Web Content Management (WCM) package. Downloads can be found here.

It is built using Spring, Hibernate, Lucene, MyFaces, JSR 168, JSR 170 and JSE5. Alfresco's Content Repository is a custom JCR which they claim has the fastest benchmarks. There is an alpha project to integrate with a Jackrabbit JCR.

The GPL'd Community release is freely available, with 2.1 recently released with new Web 2.0 UI and a REST architecture. Information on the different licenses (OEM Program vs Commercial License) is available here.

Alfresco uses JBoss Portal per this screencast which demos the integration and use cases. There is some mention of some initial Seam re-use, but that appears to be limited to jBPM and jPDL. This wiki article discusses surfacing Alfresco content in Facebook.

Apache Jackrabbit
(JCR)

Apache Jackrabbit replaced Jakarta Slide and is used by or integrates with jLibrary, Nuxeo 5 and other Java CMS offerings. See my introductory article for more information on Jackrabbit.

Apache Lenya (CMS)

Apache Lenya seemed to have a promising future several years ago, but the long promised 2.0 release was under development for an extended period.

UPDATE: Lenya 2.0 was finally released in January 2008, but is still based on Apache Cocoon with a proprietary content repository and minimal JCR integration.

Hippo CMS (CMS)

Hippo CMS is an open source information centered CMS targeted at medium to large organisations managing content for web sites and intranets. Consists of the Hippo Repository, Hippo CMS and one or more Apache Cocoon instances as outlined here. The Hippo content repository is based on the retired Jakarta Slide retired project. Does not appear to have complete integration for JCR support.

Jahia (WCM/ECM)

The Jahia Community Edition is advertised as "a powerful Java-based web content management system coupled to a JSR168 compliant Corporate Portal Server" and is available for download here. Referenced by a Nuxeo partner and others attempting to integrate Nuxeo portlets into it.

JBoss Portal (Portal)

JBoss Portal replaced Nukes on JBoss which is also discussed here and here. Documentation is linked here and downloads here. The current Portal release 2.6 is compatible with JBoss 4.2.

Portlets can be implemented using JBoss Seam although its unclear how mature this support is given this recent posting on a tech preview.

Content management is based on JCR with an overview here. It appears to have been introduced in Portal release 2.2, using Jackrabbit. Using CMSPortlet to serve JCR content is described here.

jLibrary (DMS)

jLibrary is a newer open source DMS. It claims to take a double approach also tackling CMS concerns and making it a unique product for pure open source. With jLibrary, you can classify your documents, videos, or any other media type.

Version 1.1 was released in June 2007 so the project may be immature. Some of the lead developer's comments can be found here and here.

Magnolia (WCM/ECM/DMS)

Magnolia bills itself as Simple ECM, with WCM and DMS features. It is billed as the first and still one of the few that uses JCR as a basis, not as an add-on, of its system architecture. This makes it easy to start with the default Jackrabbit repository and switch at any time to a more sophisticated implementation like CRX, should your needs demand it. It supports portal integration in the Enterprise edition. The Community edition only appears to support standards-based templating in JSP and Servlets, with a custom tag library to speed development.

The latest 3.5.2 release was made available in December 2007. This blog posting discusses a recent 3.5 release candidate. The last stable release is 3.0 is over a year old and is compared in the spreadsheet linked above.

The Magnolia Enterprise and Community Editions are available for download here. The Community license was recently transitioned to GPLv3.

This wiki page does a poor job of comparing Magnolia and OpenCms, but serves as a bookmark for further research. This 3.0 release article includes some debate on Magnolia versus Alfresco.

Nuxeo 5 (WCM/ECM)

See my introductory article for more information on Nuxeo 5. It appears that WCM support is pending in the pending 5.2 release.

OpenCms (CMS/WCM)

See my introductory article for more information on OpenCms.