| <!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 "Eclipse Enterprise Content Repository Project") 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 �€” 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 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> |