The major theme of the recently concluded Openbravo World Conference was "empowering the ecosystem".
Reading this tag line, you might be asking yourself: what does it mean to empower the ecosystem? More importantly, what is an ecosystem? How is that different from the community? Isn't open source about community?
Let's start with some definitions to clarify concepts.
For our purposes, you could define a community as a group of people that collaborate around a common project.
In the case of an open source project, some community members are developers, some are testers, some are users but they all provide value towards the development of the common project.
By contrast, an ecosystem is group of autonomous but interdependent communities that collaborate around a number of loosely coupled objectives and projects.
While the communities that animate an ecosystem are autonomous, they leverage on each other, and the value that they generate and can extract from their work as part of the ecosystem is much greater of what they could generate on their own.
Let's explore this with an example and let's consider one of the most successful ecosystems in the open source space: Linux.
Although Linux is now an OS platform of widespread usage, what users really adopt is not Linux by itself but a Linux "distribution".
Linux, in fact, is just the kernel; it manages processes and memory and provides a few other services that, no matter how important they are, are not visible to users.
Only when paired with other services like a command line interfaces and Unix-like tools, it becomes GNU Linux, the operating system itself.
At that point, you have a naked operating system, but you are still far from the powerful platform that competes with the likes of Windows and MacOS.
To get there, you need many more things; just to name a few: you need device plug and play capabilities, a window manager, a desktop environment, a browser, an office productivity suite, a music player, etc.
Most importantly, you need a repository of applications that works with well with your system. And that is, in my opinion, the major value added of a Linux distribution. It provides a whole system that has been put together for you, tested and validated to be working well holistically, from the Linux kernel all the way up to the last application.
A distribution is a very sophisticated system. Each of its components is developed as an independent project, with its own independent road map, its own code line, its own developers, and its own community of contributors.
These contributors are not necessarily interested in everything that Linux does (perhaps they are not even dedicated to only work with Linux) but only in the specific domain of their project.
Although independent, these communities leverage each other and together contribute to a winning combination that meet each user need.
And here is the power of the ecosystem: none of these communities could have achieved such a winning combination by itself, but as an ecosystem, they are unbeatable.
This ecosystem however is very chaotic. Not only each individual community has its own objectives, but each project brings in its own set of constraints and dependencies and they are not always compatible with each other.
If you were to assemble your own Linux system starting from each individual application, or you simply would like to install an application that is not part of your distribution's repository, you will soon found out that you have embarked in a very time consuming enterprise. "Google is your friend" is one of the most commonly quoted advices in Linux forums and Google will likely allow you to succeed, but only after a lot of searches for missing dependencies or conflict.
By contrast, by sticking to the applications in your distribution, everything is easy and everything works just fine because your distribution provider has gone through the process of vetting all dependencies and resolving all the conflicts for you.
The applications in your repository are proven to be working well together and a Linux distribution allows you to harness the power of the ecosystem without having to deal with its chaotic nature.
Now... how is this relevant to Openbravo?
The most significant innovation of version 2.50 of Openbravo ERP is the introduction of a modular architecture support that enables an Openbravo ecosystem very similar to the Linux ecosystem. In this analogy, Openbravo ERP itself is the core or kernel of the ecosystem and autonomous communities can collaborate on independent value added components that, when put together, can deliver the same level of value as a Linux distribution and make the Openbravo ERP ecosystem an unbeatable platform.
Let me introduce some of the concepts of modularity to better illustrate the similarity between Linux and Openbravo.
Modularity introduces three types of extensions: modules, packs and templates.
Modules are the atomic building blocks and deliver the individual functional extensions. They are the lowest level of granularity and the smallest element of reuse.
At the very least, they depend on Openbravo Core but they can also take additional dependencies on other modules.
Modules can deliver additional business logic, either in the form of additional code or additional meta data, or can deliver reference data.
Examples of modules are:
* a personnel data management window
* an alternative pricing engine
* a set of alerts to send notifications when a sales order is completed for a business partner at credit risk
* the Chinese translation
* the tax setup for France
* an integration with a web application such as the Google Calendar
* etc.
Because modules are atomic functionality and very fine-grained, we also wanted to provide a way to deliver complex solutions as an assembly of modules without forcing users to manage individual modules one at a time. That is why we have introduced the concept of packs, which are a collection of modules.
Example of packs are:
* a human capital management solution, made of modules for personnel data management, employee performance management and vacation management.
* a CRM system, made of modules to manage interactions, leads, opportunities and service requests.
* the French localization pack, made of the French translation, the French chart of accounts, the French statutory reports, the French connectors for electronic banking, the French tax setup, etc.
Modules and packs can add functionality but a very important element of an ERP solution is the configuration that allows to fine-tune the solution for a particular industry.
That is what "industry templates" - or simply templates - are about. They allow to delivered a combination of modules and packs plus a configuration file as a reusable, packaged solution that installs at the click of a button.
Examples of templates are:
* Openbravo ERP for retail
* Openbravo ERP for textile manufacturers
* Openbravo ERP for dental offices
* etc.
Besides extensions such as modules, packs and templates, there are two additional important concepts that enable the Openbravo ecosystem: the Central Repository and the Forge.
The Central Repository is the catalog of solutions where users of Openbravo ERP can look for extensions. Extension developers can publish their extensions in the Central Repository and any user of Openbravo ERP will be able to download it and use it. In other words, the Central Repository provides a very powerful distribution channel to extension developers: regardless of where they are located, how big or small they are, they will be able to reach the global community of users and leverage the full dissemination power of Openbravo ERP, with its 1.2 million downloads and counting.
The Forge provides extension developers with a collaboration environment which includes all the tools to develop an industrial strength software solution, such as a source control system and a tracker. Most importantly, it provides the infrastructure to develop and support an autonomous community around the extension project, including a wiki and a forum system.
Now that your are familiar with the modularity concepts, let's see how they contribute to the creation of a powerful ecosystem.
Openbravo ERP is at the center of the ecosystem, very much in the same way as the Linux kernel is at the center of the Linux ecosystem.
Extension modules complete and enrich the capabilities of Openbravo ERP, providing users with the same feature richness that applications provide to Linux users.
This feature richness is provided by autonomous communities that leverage the Forge as development and collaboration infrastructure and the Central Repository as distribution channel.
Because of the autonomous nature of these communities, we envision that the extension module creation will be somewhat chaotic in nature. Some modules will be complete and very high quality while others will be just started and then abandoned or not fully functional. Some modules will be developed redundantly by competing communities in the ecosystem. Some modules might cause conflicts or perhaps work well together from a a functional perspective but have conflicting dependencies.
This opens the door - and creates an opportunity - for people with the right domain expertise to select modules, validate their quality and fit for a specific purpose and vet their dependencies. This is a role conceptually very similar to the role of the distribution providers in the Linux world.
We envision that this role will be played by our community members who specialize in a specific industry and will be able to provide an industry template for that industry.
Very much like a Linux distribution, an industry template provides end users with a set of preselected modules and packs that have been chosen among the best that the ecosystem has to offer to address the needs of a specific vertical segment. An industry templates enables novice users in that segment to get an easy and safe on ramp in the Openbravo world, without the need to investigate the capabilities and fit of individual modules.
To system integrators and independent software vendors, industry templates provide an opportunity to deliver specialized, high value solutions, without the need to invest in the development of a platform or in commodity functionality.
This is the value we see in the ERP ecosystem and this the way Openbravo empowers it.