As you might have seen in the news today, we decided to contribute a big chunk of our code base — our content repository, Nuxeo Core — to the Eclipse Foundation as a new project under the Eclipse RT umbrella: Eclipse Enterprise Content Repository. It’s a big step for Nuxeo, we’ve been preparing this for a few months already.
After 4 years of active development, Nuxeo Core is one of the most advanced content repositories on the market — if not the most advanced. It offers a wide range of services: content model definition (content types), mixins (dynamic schemas), storage abstraction, query, flexible access control, native de-duplication, format conversion, CMIS bindings and much more! And all of this is bundled as a set of OSGi bundles and highly optimized and tuned to scale well for large volumes (hundreds of million of objects in a single repository), but also run lean, making it easy to embed in existing apps, small or large.
Code-wise, it’s a large piece of software, yet very modular – designed around services and extension points, like the Eclipse architecture pattern. For those who like counting lines, we’re somewhere around 100K SLOC of Java code, in ~20 components, refined over the years.
Technically, it’s packaged and architected as a set OSGi bundles running on various Java container like Equinox, Virgo, Tomcat, JBoss (thanks to Nuxeo Runtime awesomeness) and integrated with the PDE for development. Everything is extensible through extension points. Really nice software!
Why Contribute? Why at Eclipse?
You might wonder why the move. After all, the software is already open source (LGPL) and follows a fully open development model.
We’ve got one main driver: innovation.
Nuxeo Core is a powerful content repository – it’s very extensible and versatile and can be used for a wide range of applications. By setting it free, we’d like to encourage the community to join and innovate in a vendor-neutral environment. We think Nuxeo Core (soon-to-be Eclipse ECR) has the potential to change the market in the same way Eclipse IDE did for the IDE market. It can ignite innovation in the content management space. We don’t know how it will morph, but we’re eager to watch it.
Eclipse has broad reach and a large developer community, trusted and respected by most thanks to the framework and process in place. We think it’s the right home for our little Core to grow big!
The content management space is changing and commoditization is setting in, led by SharePoint, vendor consolidation and more recently the <CMIS standard>.
We believe that the differentiation lies in the services we provide to our customers, not in low-level software components. That’s why we have developed offerings like Nuxeo Studio, Nuxeo Marketplace and the whole Nuxeo Connect package – a subscription offering for maintenance, support, and customization of content management applications. From this perspective, it makes no sense to keep low-level components such as a the content repository and all related low-level services for one vendor only. And besides that, content repository technology is not yet well understood in the industry. This technology is a good fit for a surprisingly wide range of software projects, and it could be a great help for many developers and architects if knowledge about content repository technology was more widespread.
We’ve been thinking about contributing the Core for some time, but were waiting for the right moment. A convergence of milestones makes this the right time:
The software has had time to mature. It is proven, robust, and deployed in thousands of shops around the world.
We have the bandwidth to do the work required to contribute the code and ignite the project.
CMIS is taking off, OSGi is hot – and the Core is compliant with both.
We believe it’s time to put more emphasis on content repositories as a technology. I believe that it’s great software and could be part of the developer toolbox, alongside traditional ORM. And for this aspect, credit should go to Apache Jackrabbit from our friends at Day. They have paved the way, even if we have a different take on how a repository should work. And we think for many use cases the Nuxeo Core approach is a better approach, especially when your content is not inherently hierarchical, which is usually the case for document management, enterprise content management, case management and digital asset management.
So here we are – Nuxeo Core is going to Eclipse, and we hope it’s the start of a long story that will make a real difference and impact the market in a very positive way.
What’s a Content Repository? Why should you care?
Nuxeo Core is a Content Repository and that might not be clear for you. So here is my own definition. A Content Repository, in the content management world, is the database where the content is stored. It basically gives you a high-level API and a set of services to easily store, query, retrieve and process content objects in a way that makes it easy to manipulate and match your domain model.
In this case, content is pretty much anything that: has a data schema (fixed or dynamic), needs access control, can live in a hierarchy, can be versioned, and can be rendered. That’s all.
Why use a content repository? Because if you start from scratch using a pure ORM or bare SQL when building an application to interact with business content, there is a very good chance that you’re going to rewrite the features we’ve developed, refined and optimized over last few years. And that’s the whole point of a content repository – it enables you to model, manage and interact with this content. That’s why you should care and use it!
You might have noticed that I haven’t mentioned “files”. That’s intentional, because that’s not the key part of the software. Of course, you can add BLOBs to any content object and we manage them well, doing low-level de-duplication and transactional integration. But a content repository is NOT just a file system. It’s much more than that. If you’re just looking to manage files, use a file system. If you’re looking to manage content, that can include files, then a content repository is the way to go! And we think Nuxeo Core is pretty powerful for this purpose.
Interested? Come on in – it’s open!
This technology is already fully open, so don’t hesitate to come by, say hi and start hacking if you like:
And… help us find a better nickname than ECR!
It’s going to be an interesting journey,