For Nuxeo, Success in the ECM Market Meant Switching from Python to Java
How do you proceed when you've got the most flexible and configurable ECM (Enterprise Content Management) product on the market, and you want to elbow out the big players in the industry? Well, the first thing you do is you stop building in Python, and port everything over to Java. That's what Nuxeo did.
"We've built an entire application platform for ECM applications, leveraging the Java Platform's standards, tools and technology. Java has enabled us to build technology that solves today's problems in content management and information governance,” says Nuxeo's CEO Eric Barroca.
Prior to 2005, Nuxeo's entire Enterprise Content Management solution was built using Python. But in 2005, Nuxeo was only a peripheral player in that segment of the market. Nuxeo knew that if they were to be universally accepted as a core component in an organization's knowledge management infrastructure, their product would need to be developed on a platform that was both mature, and at the same time, innovative. That meant porting from Python to Java.
Florent Guillaume, head of research and development for Nuxeo, insists that using Java greatly simplified the task of integrating and managing their complex codebase. "When you have a huge body of code like we do at Nuxeo, everything has to work very well together, and in that regard, few other languages can match Java."
None of this is meant as a disparagement to Python; there is no argument over the fact that support and acceptance of Python has increased in the past five years, but still, when you move from Python to Java, you're moving into a much larger market, with a much larger community of programmers, and you're going to be able to leverage a much more functional and mature set of programming APIs, all of which is going to help you quickly solve difficult programming challenges.
Speaking about the number of projects, frameworks and resources the Java community provides, Nuxeo's CEO Eric Barroca remarks that "huge hardly starts to describe the amount of Java libraries available. Let's just say that in 99% of the cases if you want to do something you'll find a Java library already doing it, and often more than one."
And of course, Java is so pervasive in the industry today, it's rare to find any internal resistance to adopting the technology. "All companies know Java. Most already have Java applications running. A lot of companies require Java for the IT. Most system integrators have extensive Java knowledge." And with such a universal confidence in the underlying technology, when it came to convincing potential clients to adopt Nuxeo's technology, the Java underpinning became one of the products strength, and never a liability.
And what type of Java technologies has Nuxeo been sprinkling into their special sauce? It seems like all of them, with the following being just a short list of technologies that have supported an ECM product that has seen its client base triple in just a single year:
* JDBC, JPA and JSR-170 for storage abstraction
* JTA for XA transaction management and JCA for connection pooling
* (Apache Geronimo unless already provided by the app server)
* JNDI for naming services and LDAP access
* OSGi for componentization of software artifacts
* EJB to scale applications and allow remotable objects
* Servlet, JAX-RS and JAX-WS for HTTP access and services publishing
* JSF and Facelets for UI rendering
* OpenSocial and OAuth for widget inclusion and social features (Apache Shindig)
* CMIS (Apache Chemistry)
According to Nuxeo's CEO Eric Barroca, the end result of switching from Python to Java has been the seamless creation of an industry leading ECM product. "At Nuxeo, we wanted to build a flexible and configurable platform that enabled developers and architects to build apps on top of it. So, building on the OSGi standard and inspired by extension mechanisms pioneered by Eclipse, Nuxeo was able to create a modular runtime system that is very easy to use for developers and system administrators. The Nuxeo Runtime (the layer used by all Nuxeo services to talk to each other) allows components to define Extension Points, to which other components can then contribute Extensions. A contribution to an extension point is just a small XML file that can be embedded in a JAR or simply dropped in Nuxeo's configuration directory. This turns out to be very flexible and is used heavily by Nuxeo itself and by all third-party modules."
Of course, there is no such thing as a sure bet in the IT industry, but is Nuxeo happy with the Java technology on which they laid down their chips?
"We are very happy with our bets around Java - as we reported in March, our sales are off the charts and our partnership ecosystem is thriving. The Java platform is the best platform to build software on today. Java has enabled us to build technology that solves today's problems in content management and information governance. Our platform, designed by software architects for software developers and architects, helps partners and customers solve their business problem in a flexible and elegant way. That's where Nuxeo can disrupt the big ECM incumbent vendors such as Open Text and Documentum."
And Java was pivotal in making it all happen.
NUXEO OPEN SOURCE ENTERPRISE CONTENT MANAGEMENT
Founded in 2000, Nuxeo is one of a handful of pioneering open source vendors responsible for the disruptive wave that is dramatically changing today's software industry. Nuxeo focuses its energy on providing innovative yet pragmatic Enterprise Content Management (ECM) software that specifically address the full spectrum of today’s content-driven customers' needs.
06 May 2010