Moving websites from Drupal 7 to Drupal 8 continues to be a massive undertaking for the Drupal content management system (CMS) community
Drupal 8 was a move in the right direction but it’s created a lot of stumbling blocks in the upgrade path and some confusion amongst the non-technical users of Drupal.
Additionally, Drupal 7 was a very solid version. It continues to offer enough for Drupal users that making the business case for moving to Drupal 8 is difficult. We’ve heard many business leaders or non-technical decision makers say, “we can’t justify the time/cost/effort” or “we’ll just wait for D9.”
Even looking at the Drupal.org’s Core Statistics, you can see that nearly a million sites have yet to be upgraded from Drupal 7 to Drupal 8. Progressive Drupal developers understand the technical benefits of D8, it’s: more efficient, easier/faster to work, scalability is more reliable. However, from the perspective of a business decision maker, it’s not clear why the foundation of Drupal 8 would be more cost effective for an organization. Drupal 7 works just fine, right?
As a result, many Drupal sites are “stuck” in Drupal 7. What if there was a way to ease the transition from Drupal 7 to Drupal 8 or even Drupal 9? Or what if Drupal developers could realize the modern and efficient benefits of Drupal 8 while working in Drupal 7?
xTuple has the Drupal Solution
Four years ago, our team embarked on a mission to integrate Drupal 7 with xTuple open source ERP. Our goal was to build an eCommerce, marketing and customer service solution for ERP customers using Drupal 7. Both eCommerce and enterprise solutions require high-level code quality and reliability. At first, we found that Drupal 7 introduced various improvements in the process but eventually we hit a ceiling. The codebase, containing 120+ enabled core and contribributed modules along with massive custom functionality, was getting less and less maintainable. Plus, the management of 3rd-party PHP libraries and their autoloading was a problem.
In 2014, xTuple’s Web Services Team realized success required many Drupal 8 features long before it would be production ready.
After four years of development, we have built a Drupal 7 system that embraces best practices (unit testing, code-driven development) and full OOP capabilities of PHP. Initially, the goal was to shortcut major Drupal APIs to speed up development of the most critical and complicated components, such as custom form element and field types. What we ended up with is a large scale application framework on top of Drupal 7 that integrates with major core and contributed APIs. We even reduced the number of enabled modules from 120 down to just over 45! All system dependencies are managed with Composer (a dependency manager for PHP). Business logic code is separated from Drupal global functions as much as possible, allowing us to unit test the system. Plus, using PHP7.1 and the best OOP practices allows us to statically check code which makes refactoring and maintenance seamless.
Inadvertently, we solved this dilemma with our xDruple system, a developer-oriented, OOP application framework for Drupal 7, compatible with major core and contributed modules. We plan to provide a maximum compatibility between our existing Drupal 7 code and the upcoming Drupal 9 system. This will offer a solution to speed up migration from Drupal 7.
Our solution is general enough to be useful to others, so we decided to make xDruple open source and available under the Lesser General Public License (LGPL). Currently, xTuple is migrating and documenting all components of the framework to public access on GitHub. Our team submitted an abstract to present at DrupalCon 2018, where plan to introduce the open source community to our xDruple solution. Other organizations will want to see how xTuple's open source profile of Drupal 7 can solve many of their challenges. Drupal Developers interested in being one of the first to see the code may sign-up for early access.
Want access?
Interested in being one of the first to see the code? Sign up and we’ll be in touch.