Apricot

The project has been created. Please visit the project page.

Apricot

The Eclipse Apricot Project (originally titled "Eclipse Enterprise Content Repository Project") is a proposed open source project under the Eclipse Runtime Project. Apricot stands as a nickname for the project, a.k.a under the more official, but less often used name of Eclipse Enterprise Content Repository Project. This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We are soliciting additional participation and input from the Eclipse community. Please send all feedback to the Eclipse Proposals Forum.

Background

The domain of Content Management [1] has grown significantly in recent years and has turned into a key function in modern organizations of all kinds. This raised the need for Content Management Systems (CMS), and turned the technology underlying Content Management Systems into a necessary infrastructure.

Different attempts at building standard and reference technologies for Content Management systems and Content Repositories have been made, but never really succeeded in reaching the objectives of becoming a real standard. The term Content Repository is used here as defined on Wikipedia [3]: "A content repository is the technical underpinning of a content application, like a Content Management System or a Document Management System. It functions as the logical storage facility for content." A growing number of content management applications are still highly reliant on customized development for the most part, OR on a full implementation of proprietary business software products. Some Open Source software projects, such as the Nuxeo Enterprise Platform, have started to emerge, but no standardized mid-level software components have emerged to handle the commodities of a Content Repository and the functions underpinning a Content Management System. This would enable developers to implement applications without having to re-implement commonly used functions.

In the meantime, the Eclipse Foundation has developed and grown in multiple directions. Its projects are now widely used by developers in many domains. The Equinox project, for instance, has become a reference for Java applications relying on the OSGi specifications. The Virgo project offers an OSGi-based Java application server, based on Equinox.

Nuxeo, a software company [4] in the Enterprise Content Management space, has developed its products (Nuxeo Document Management, Nuxeo Digital Asset Management, Nuxeo Case Management Framework) over the years on top of the Java technology, adopting the OSGi standard and building a foundation for a strong, module-based Content Repository. All Nuxeo products are available under an open source license. The Nuxeo Platform has been developed with a robust, modular architecture that relies on a core software component for the content repository engine, and additional modules for extended features such as User Interfaces or specific functionalities. Every Nuxeo application relies on this core software, a collection of Java modules delivering all the services expected from a Content Repository. The whole platform is architected using an extension point model, making it modular and highly extensible in a similar way to "Eclipse".

The idea of the Apricot Project is to create and develop within the Eclipse Foundation a reference Content Repository implementation and to initiate this implementation in the Eclipse foundation based on an initial contribution made of the core of the Nuxeo platform.

Projects a Content Repository implementation that provides the base services that could be used for any content application, implements standards, and completes and leverages the existing Eclipse Equinox and Virgo projects, as well as others.

Scope

The scope of the project is to provide developers with a reference implementation for a content repository that is accessible through APIs. It will serve as a solid and efficient base for developing Content Applications. By "Content Applications," we mean any application with a primary function of managing structured or semi-structured content in any way. These could be Document Management applications, Digital Asset Management applications, Case or Record Management applications, Web Content Management applications, or simply business-specific applications.

The various APIs included initially in the targeted scope are:

  • Native Java APIs
  • REST-based APIs (leveraging JAX-RS)
  • CMIS [4] server APIs (HTTP and SOAP)

Each of these has a different role:

  • Native Java Services provide Java developers a nice way to extend the repository to build a full application on top of it, or to integrate it in an existing Java application. Here, the use of Equinox on the whole application would be a strong benefit for the developer.
  • REST-based web services provide developers of global solutions a way to integrate a content repository with other components of their applications in a simple, loosely coupled way. A very common use case for such an API is the development of a remote application that accesses content, such as an application running on a mobile device or on desktop software.
  • CMIS implementation allows the Apricot content repository to interoperate with other CMS systems having implemented this standard. The CMIS standard is one of few attempts to standardize some parts of the Content Repository and we think there is a lot of value in it and will continue to support it.

Other APIs might potentially be added to the project at further stages.

Description

As entitled, the Apricot Project will implement the functionalities expected in a content repository. It will provide all the services required to capture, manage and publish content of different types. It will also provide ways to define different content models to enable the building of applications that fit different use cases.

The services provided by the content repository software via the various APIs are:

  • Content Model definition (using XML Schemas to define content types �€” a list of fields and the structure of content objects)
  • Content Persistence into a relational database
  • Creation, modification, deletion of content assets including
  • Creation/modification of the data of the content asset
  • Creation/modification of the metadata associated to the content asset
  • Audit trail / logging service to log all activity on content objects
  • Storage Services to manage files (BLOBs)
  • Query Services (languages: NXQL and CMISQL)
  • Lock Service
  • Access control to manage the setup of permissions and role-based policies for managing content assets
  • Content Life Cycle management (using a state engine)
  • Import and Export Services
  • A simple authentication module to be used for evaluation or development only and to be replaced by a more robust authentication engine

In addition to those services, two pieces will be contributed in a second phase:

  • Nuxeo WebEngine (renamed WebEngine) is a web framework based on JAX-RS. It is used to create web applications exposing the content repository to web-based user interface.
  • Nuxeo Content Automation (renamed Content Automation) is a service enabling the construction of business logic (automation chains) reusing pre-defined logic blocks (operations). Content Automation is a powerful tool enabling power users to create business logic and rules by configuring graphical components.

Why Eclipse?

The choice of Eclipse as a host organization for this open source project was driven by different criteria:

  • The choice to open the core of the Nuxeo open source project to a broader community and to make it available to other projects implied joining an existing organization already hosting different projects, having setup processes, tools and policies that align with the way we have developed the software in the past and our vision of Open Source development. hence the need to join an existing organization and contribute to it
  • The size of the organization hosting the project had to be large enough to accommodate a growing number of contributors to the project
  • The organization itself had to rely on strong Intellectual Property standards and development standards that are compatible with our business objectives
  • The organization itself had to gather projects that are complementary to the Apricot Project, and which the project would complete in a meaningful way.

In addition to that, and equally as important from a technical point of view, the Apricot Project was a good fit technically and already relies on some Eclipse projects, such as Equinox, Virgo, Jetty, P2.

Initial Contribution

Nuxeo is offering a re-purposed version of some of the core technology of the Nuxeo Enterprise Platform as an initial code base for the project to cover the scope introduced above.

The following packages of the Nuxeo Enteprise Platform will be included in the initial code base of the Apricot Project:

  • org.nuxeo.core-api
  • org.nuxeo.core
  • org.nuxeo.core-events
  • org.nuxeo.core-convert
  • org.nuxeo.core-io
  • org.nuxeo.core-schema
  • org.nuxeo.core-query
  • org.nuxeo.core-storage-sql-*
  • org.nuxeo.platform-audit
  • org.nuxeo.core persistence

They will be refactored before being contributed, to satisfy the requirements of the Eclipse Foundation.

Additional resources will be added as well, such as the support for CMIS [2] and a Simple authentication implementation to illustrate how the project can be integrated with a user management layer.

Project Lead

The project leads will be initially the following people:

  • Bogdan Stefanescu (Nuxeo) - Project Lead
  • Florent Guillaume (Nuxeo)
  • Thierry Delprat (Nuxeo)

Initial committers

The following individuals are proposed as initial committers to the project, in addition of the project lead, they all have provided significant contributions to the existing code base:

  • Olivier Grisel (Nuxeo)
  • Anahide Tchertchian (Nuxeo)
  • Benoit Delbosc (Nuxeo)
  • Thierry Martin (Nuxeo)
  • Stefane Fermigier (Nuxeo)
  • Stephane Lacoin (Nuxeo)

We welcome additional committers and contributions as explained below.

Developer community

We expect the Apricot community to grow and we are prepared and looking forward to extending the initial set of committers beyond individuals working for Nuxeo. The members of the existing Nuxeo community who already contribute to Nuxeo software projects will be invited to join the Apricot project.Other developers looking for content repository services who have knowledge about this domain will be welcome to join the developer community. This will accelerate the growth of the community, which is already active and growing. Both the initial committers and Nuxeo as a company will actively promote and support this effort of broadening the use of the Project and its developer community.

User community

The main objective of the Nuxeo Enterprise Platform, and of the forthcoming Apricot Project, is to provide developers with a powerful, reliable, yet easy-to-use development platform for building content applications. With more than 1500 installations known, Nuxeo Enteprise Platform is already used by a large community of developers (who are not necessarily developing it as a member of the developer community).

Growing the user community is another goal of the Apricot Project, and Nuxeo as a company will actively promote this effort in sync with the Eclipse foundation. At launch, the existing Nuxeo user base will naturally join the user community. We hope that the synergy with other Eclipse projects will contribute to accelerate its growth.

Legal Issues

No legal issues are foreseen and Nuxeo will repurpose its initial code base to be distributed under the correct licencing required by the Eclipse platform. Dependencies to external software will also be reviewed and cleaned up when needed.

Mentors

  • Cedric Brun (Obeo)
  • Gary Xue (Actuate)

Interested Parties

Nuxeo, as the initial contributor. Nuxeo is also active in a number of Open Source projects and organisations who are interested in the project. All members of the Nuxeo community are potential interested parties as well.

Andrea Zoppello, as project leader of eclipse ebpm project (http://www.eclipse.org/ebpm ) as possible synergies between eBPM and Apricot are foreseen, in particular for complex projects where Context and Document Management need to be integrated with processes.

Actuate Corporation (http://www.actuate.com), as possible synergies between Apricot and the BIRT project are foreseen, as well as with other technology used by Actuate.

Intalio Inc (http://www.intalio.com), represented by Hugues Malphettes as  a user of Nuxeo Open Source software and of the future Apricot codebase as provided on GitHub and a Committer on several Eclipse RT Projects.

Project Scheduling - tentative plan

  • End Q1 2011: release 0.1. Scope includes Java native API and CMIS API.
  • End Q2 2011: release 1.0. Targeted scope includes the Nuxeo Content Automation and Nuxeo WebEngine modules.
  • End Q3 2011: release 1.1. Targeted scope includes OSGi Services for all the APIs.

References

[1]:http://en.wikipedia.org/wiki/Content_management
[2]:http://en.wikipedia.org/wiki/Content_repository
[3]:http://www.nuxeo.com
[4]:http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=cmis

Changes to this Document

Date Change
28-January-2011 Document created
03-February-2011 Updated after EMO review
09-February-2011 Updated with new contributor and minor typos fixed
10-February-2011 Updated with 1st mentor
21-February-2011
Updated with 2nd mentor and contributor
2-March-2011
New interested parties
5-April-2011 Last update before proposing first contribution. New interested party and official Project lead
14-April-2011 Project renamed.