After publishing our first preview release in May 2013 we consistently have been asked about the possibility to reuse parts of the Open Source OroPlatform as standalone packages. I would like to clarify our position on this topic and future direction.
We began work on the OroPlatform as a foundation for OroCRM, and other business applications, and even called it from the very beginning a Business Application Platform (BAP). The set of functions created by the platform is very big and includes fundamental items such as users and permissions management, search index, data audit, UI controls, internationalization and much more. These features are distributed across almost 50 bundles inside the Platform.
The OroPlatform is based on the Symfony 2 framework and uses the Symfony bundles concept for modularity purposes. Major platform functions are organized into Symfony bundles, but distributed in a single platform package. Based on bundles dependency analysis a single Platform Package has more than a hundred dependencies between bundles, as features are very connected and not always simple to decouple (not saying it isn’t possible). This metric can be improved as well as many bundles can be separated to standalone packages and reused in an easier way. We understand the benefits of this approach and are planning to work on bundles reorganization step by step.
As for now OroCRM and OroPlatform are distributed as standalone packages:
- https://github.com/orocrm/platform – Platform bundles
- https://github.com/orocrm/crm – CRM bundles Future plans
Both packages have a set of bundles that are related to their domains and the OroCRM package depends on the Platform package. In this way the OroPlatform can be used independently from OroCRM as a foundation for any other application.
You can create your own application and start using the Platform by defining the proper dependency and bundles initialization or you can start from platform-application or crm-application repositories.
The model is very similar to the symfony-standard application that has a dependency on the Symfony framework, with the exception of the availability of each bundle to be used as a standalone package (which will be improved over time).
We are happy to review any community contributions as we strongly believe that the Open Source OroPlatform will save thousands of development hours for many Business Application developers.
Let’s Oro it!