By Steven C. Buttgereit | January 15, 2017
We get called on quite frequently to customize the xTuple ERP open source ERP business system by our clients. Very much to their credit, xTuple has included powerful customization tools which are surprisingly powerful for an ERP in this class. However, as it has been said many times before, with great power comes great responsibility and getting the most out of these tools requires care and forethought. Our clients tend to have more advanced needs than the average xTuple client, many of whom may only tweak around the edges or have a single significant customization which bridges the gap between their processes and the out of box system; such xTuple users as these may never encounter another customization than the one-off script installed into their environments. Even so, by following a robust standard for even these small changes, should the day come when they need something more, they’ll have less re-writing of existing code to achieve their goals.
Through our experience designing and developing these customizations, we’ve made plenty of mistakes and encountered any number of pitfalls which can cause rework or, more commonly, conflicts with other extensions packages installed in the system. We standardize our approaches to developing extensions and for our client sponsored work with the goal of avoiding these problems. We’re happy to share our learning with the community at large and hope to inspire a discussion on how best to extend the xTuple ERP application.
To this end we’re formally documenting our standards and practices, publishing them publically under a Creative Commons Attribution-ShareAlike 4.0 International License. Please feel free to use our standards in your work and absolutely let us know if you see something that could be done better: learning never stops and while we think we’ve done something good by developing such a standard, we don’t think it’s perfect or exempt from ongoing improvement.
Please note that this is an ongoing work and the documentation will be continually added to over the next few weeks as time permits.