blob: 4256b7b2fb34fe68c3b70c645da5b9b51bd2e2bd [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type"
content="text/html; charset=ISO-8859-1">
<!--
This document is provided as a template along with some guidance for creating
your project proposal. This is just a template. Feel free to change it as
you see fit (add sections, remove section). We feel, however, that the
suggestions represented in this document represent the reasonable minimum
amount of information to move forward.
Please keep the formatting in this document simple. Please do not edit
this document in Microsoft Word as it adds huge piles of markup that make
it difficult to restyle.
More information is available here:
http://wiki.eclipse.org/Development_Resources/HOWTO/Pre-Proposal_Phase
Direct any questions about this template to emo@eclipse.org
--><!--
Include the title here. We will parse it out of here and include it on the
rendered webpage. Do not duplicate the title within the text of your page.
-->
<title>Apricot</title>
<!--
We make use of the 'classic' HTML Definition List (dl) tag to specify
committers. I know... you haven't seen this tag in a long while...
-->
<style>
dt {
display: list-item;
list-style-position:outside;
list-style-image:url(/eclipse.org-common/themes/Phoenix/images/arrow.gif);
margin-left:16px;
}
dd {
margin-left:25px;
margin-bottom:5px;
}
</style>
</head>
<body>
<p>The Eclipse Apricot Project (originally titled &quot;Eclipse Enterprise Content Repository Project&quot;) is a
proposed open source project under the <a
href="http://www.eclipse.org/projects/project_summary.php?projectid=rt">Eclipse
Runtime
Project</a>. 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 <a
href="http://www.eclipse.org/forums/eclipse.proposals">Eclipse
Proposals</a> Forum.</p>
<h2>Background</h2>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>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".</p>
<p>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.</p>
<p>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.</p>
<!--
Optionally provide the background that has lead you to creating this project.
-->
<h2>Scope</h2>
<p>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.</p>
<p>The various APIs included initially in the targeted scope are:</p>
<ul>
<li>Native Java APIs</li>
<li>REST-based APIs (leveraging JAX-RS)</li>
<li>CMIS [4] server APIs (HTTP and SOAP)</li>
</ul>
<p>Each of these has a different role:</p>
<ul>
<li>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.</li>
<li>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.</li>
<li>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.<br>
</li>
</ul>
<p>Other APIs might potentially be added to the project at further
stages.
<!--
All projects must have a well-defined scope. Describe, concisely, what
is in-scope and (optionally) what is out-of-scope. An Eclipse project
cannot have an open-ended scope.
--></p>
<h2>Description</h2>
<p>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.</p>
<p>The services provided by the content repository software via the
various APIs are:</p>
<ul>
<li>Content Model definition (using XML Schemas to define content
types &iuml;&iquest;&frac12;&#8364;&#8221; a list of fields and the structure of
content objects)</li>
<li>Content Persistence into a relational database </li>
<li>Creation, modification, deletion of content assets including<br>
</li>
<li>Creation/modification of the data of the content asset<br>
</li>
<li>Creation/modification of the metadata associated to the content
asset<br>
</li>
<li>Audit trail / logging service to log all activity on content
objects<br>
</li>
<li>Storage Services to manage files (BLOBs)<br>
</li>
<li>Query Services (languages: NXQL and CMISQL)<br>
</li>
<li>Lock Service<br>
</li>
<li>Access control to manage the setup of permissions and role-based
policies for managing content assets<br>
</li>
<li>Content Life Cycle management (using a state engine)<br>
</li>
<li>Import and Export Services<br>
</li>
<li>A
simple authentication module to be used for evaluation or development
only and to be replaced by a more robust authentication engine</li>
</ul>
<p>In addition to those services, two pieces will be contributed in a
second phase:</p>
<ul>
<li>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.<br>
</li>
<li>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.</li>
</ul>
<!--
Describe the project here. Be concise, but provide enough information that
somebody who doesn't already know very much about your project idea or domain
has at least a fighting chance of understanding its purpose.
-->
<h2>Why Eclipse?</h2>
<p>The choice of Eclipse as a host organization for this open source
project was driven by different criteria:</p>
<ul>
<li>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<br>
</li>
<li>The size of the
organization hosting the project had to be large enough to accommodate
a growing number of contributors to the project<br>
</li>
<li>The
organization itself had to rely on strong Intellectual Property
standards and development standards that are compatible with our
business objectives<br>
</li>
<li>The organization itself had to
gather projects that are complementary to the Apricot Project, and
which the project would complete in a
meaningful way.<br>
</li>
</ul>
<p>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.</p>
<!--
Answer these two questions: What value does this project bring to the Eclipse
community? What value do you expect to obtain from hosting your project at Eclipse?
What value do you get by having your project at Eclipse over and above the value
of hosting at Eclipse Labs?
-->
<h2>Initial Contribution</h2>
<p>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.</p>
<p>The following packages of the Nuxeo Enteprise Platform will be
included in the initial code base of the Apricot Project:</p>
<ul>
<li>org.nuxeo.core-api<br>
</li>
<li>org.nuxeo.core<br>
</li>
<li>org.nuxeo.core-events<br>
</li>
<li>org.nuxeo.core-convert<br>
</li>
<li>org.nuxeo.core-io<br>
</li>
<li>org.nuxeo.core-schema<br>
</li>
<li>org.nuxeo.core-query<br>
</li>
<li>org.nuxeo.core-storage-sql-*<br>
</li>
<li>org.nuxeo.platform-audit<br>
</li>
<li>org.nuxeo.core persistence<br>
</li>
</ul>
<p>They will be refactored before being contributed, to satisfy the
requirements of the Eclipse Foundation.</p>
<p>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.<br>
</p>
<h2>Project Lead <br>
</h2>
<p>The project leads will be initially the following people:</p>
<ul>
<li>Bogdan Stefanescu (Nuxeo) - Project Lead<br>
</li>
<li>Florent Guillaume (Nuxeo) <br>
</li>
<li>Thierry Delprat (Nuxeo)<br>
</li>
</ul>
<h2>Initial committers</h2>
<p>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:</p>
<ul>
<li>Olivier Grisel (Nuxeo)</li>
<li>Anahide Tchertchian (Nuxeo)</li>
<li>Benoit Delbosc (Nuxeo)</li>
<li>Thierry Martin (Nuxeo)</li>
<li>Stefane Fermigier (Nuxeo)</li>
<li>Stephane Lacoin (Nuxeo)</li>
</ul>
<p>We welcome additional committers and contributions as explained
below.</p>
<h3>Developer community</h3>
<p>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.</p>
<h3>User community</h3>
<p>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). </p>
<p>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.</p>
<!--
Projects are expected to arrive at Eclipse with existing code.
Describe the existing code that will be contributed to the project. Please provide
a couple of paragraphs describing the code with modest detail, including important
information like code ownership (who holds the copyright?), and some consideration
of community that exists around the code. Include a listing of third-party libraries
and associated licenses.
-->
<h2>Legal Issues</h2>
<p>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.</p>
<!--
Please describe any potential legal issues in this section. Does somebody else
own the trademark to the project name? Is there some issue that prevents you
from licensing the project under the Eclipse Public License? Are parts of the
code available under some other license? Are there any LGPL/GPL bits that you
absolutely require?
--><!--
Describe any initial contributions of code that will be brought to the
project. If there is no existing code, just remove this section.
-->
<h2>Mentors</h2>
<!--
New Eclipse projects require a minimum of two mentors from the Architecture
Council. You need to identify two mentors before the project is created. The
proposal can be posted before this section is filled in (it's a little easier
to find a mentor when the proposal itself is public).
-->
<ul>
<li>Cedric Brun (Obeo)</li>
<li>Gary Xue (Actuate)</li>
</ul>
<h2>Interested Parties</h2>
<!--
Provide a list of individuals, organisations, companies, and other Eclipse
projects that are interested in this project. This list will provide some
insight into who your project's community will ultimately include. Where
possible, include affiliations. Do not include email addresses.
-->
<p>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.</p>
<p>Andrea Zoppello, as project leader of eclipse ebpm project (<a
href="http://www.eclipse.org/ebpm">http://www.eclipse.org/ebpm</a> )
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.<br>
</p>
<p>Actuate Corporation (<a href="http://www.actuate.com">http://www.actuate.com</a>),
as
possible
synergies
between Apricot and the BIRT project are foreseen, as
well as with other technology used by Actuate.<br>
</p>
<p>Intalio Inc (<a href="http://www.intalio.com">http://www.intalio.com</a>),
represented
by
Hugues Malphettes as&nbsp; 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.<br>
</p>
<h2>Project Scheduling - tentative plan</h2>
<ul>
<li>End Q1 2011: release 0.1. Scope includes Java native API and CMIS
API.<br>
</li>
<li>End Q2 2011: release 1.0. Targeted scope includes the Nuxeo
Content Automation and Nuxeo WebEngine modules.<br>
</li>
<li>End Q3 2011: release 1.1. Targeted scope includes OSGi Services
for all the APIs.</li>
</ul>
<h2>References</h2>
<p>[1]:<a href="http://en.wikipedia.org/wiki/Content_management">http://en.wikipedia.org/wiki/Content_management</a><br>
[2]:<a href="http://en.wikipedia.org/wiki/Content_repository">http://en.wikipedia.org/wiki/Content_repository</a><br>
[3]:<a href="http://www.nuxeo.com">http://www.nuxeo.com</a><br>
[4]:<a
href="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=cmis">http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=cmis
</a><!--
Describe, in rough terms, what the basic scheduling of the project will
be. You might, for example, include an indication of when an initial contribution
should be expected, when your first build will be ready, etc. Exact
dates are not required.
--></p>
<h2>Changes to this Document</h2>
<!--
List any changes that have occurred in the document here.
You only need to document changes that have occurred after the document
has been posted live for the community to view and comment.
-->
<table>
<tbody>
<tr>
<th>Date</th>
<th>Change</th>
</tr>
<tr>
<td>28-January-2011</td>
<td>Document created</td>
</tr>
<tr>
<td>03-February-2011</td>
<td>Updated after EMO review</td>
</tr>
<tr>
<td>09-February-2011</td>
<td>Updated with new contributor and minor typos fixed</td>
</tr>
<tr>
<td>10-February-2011</td>
<td>Updated with 1st mentor </td>
</tr>
<tr>
<td style="vertical-align: top;">21-February-2011<br>
</td>
<td style="vertical-align: top;">Updated with 2nd mentor and
contributor<br>
</td>
</tr>
<tr>
<td style="vertical-align: top;">2-March-2011<br>
</td>
<td style="vertical-align: top;">New interested parties<br>
</td>
</tr>
<tr>
<td style="vertical-align: top;">5-April-2011</td>
<td style="vertical-align: top;">Last update before proposing
first contribution. New interested party and official Project lead<br>
</td>
</tr>
<tr>
<td style="vertical-align: top;">14-April-2011</td>
<td style="vertical-align: top;">Project renamed.
</td>
</tr>
</tbody>
</table>
<table>
<tbody>
</tbody>
</table>
</body>
</html>