I'm the General Manager of Webmecanik, a editor hosting and supporting Mautic open source version (as many other exist). It features maintenance, debug, support, training, partnering programs, etc. All of that managed from France and hosted in France, Switzerland or US depending on our customer needs. We count today more than 300 customers in 8 countries.
Today, I'd like to share the Webmecanik team's opinion about the major challenge Mautic is facing. The arrival of Mautic 3. Please note that this is our opinion, not the best and not the only. Just a share of my team's thoughts.
Introduction: Mautic needs to face 2 major challenges
David Hurley, the founder of Mautic has started a blog posts series to explain his vision of Mautic 3. Starting with these posts, Looking ahead to Mautic 3 and Headless marketing automation, the main highlighted challenges are:
- Maintenance: keep Mautic sustainable
- Performance: allow users to do whatever they want within the app
To answer those challenges, the workaround may be:
- A major update of the framework (Symfony 2 won't be maintained after 2018)
- A better separated front-end from back-end for a better maintenance for an API first software management
- Integrations kept out of the core that generates sustainability issues
- Enhanced performance avoiding speed and scalability issues. That could be addressing DB concerns and or technologies chosen.
The conclusions from those articles and the several discussions on #core Mautic Slack channel between David and some community members seem to be selecting a new stack (Laravel + React) and consequently re-writing the app from scratch (except the experience from a user perspective of course). We think this is an excellent stack according to the highlighted challenges, maybe the best one up to today. But if you add on top of the balance the fact that it is not a new software but a major version of an existing software, the conclusion should be much more balanced.
In our opinion, restarting from scratch is not the best way to address those challenges and thus for several reasons. Let us detail them hereunder.
Symfony is a a Strong Framework: changing drastically would implie several concerns
First, Symfony is a great, strong and powerful framework, especially with a good use of Doctrine. So keeping away from the maintenance issue brought by the end of the Symfony 2 by moving to the LTS version of Symfony 3 offers any project great opportunities to reach success. You can count several big companies with web app using Symfony like Blablacar, Spotify or even YouPorn (source stfalcon.com).
Community developers experience
Mautic has been in service for 3 years now and as any open source project, it relies on a pool of community developers contributing on new features, bug fixes and enhancements. This community is precious and should be pampered, in my opinion. An open source community is made of two types of contributors - users and developers. They both bring important feedbacks - feature needs, bug reports, feature development, bug fixes, etc.
Taking the risk to drive some community members away by a drastic change is in our opinion harmful for the open source project itself. The experience of the community and especially on developers is now based on Symfony. Some would be excited to change, some others are not skilled and some more would maybe like to stay on this expertise field.
"Make sure everyone on your dev team feels comfortable with the coding language you’re using, and encourage developers to ask each other questions and address technical problems as they come up."
This is also one of the key lessons given by Basecamp in one of their blog posts that underlines this point.
Time to deliver
Restarting from scratch would also mean redeveloping everything. Changing the stack would also mean changing the pattern, redesigning everything. The current version of Mautic (2.13.1) has been built in almost 3 years.
"Despite what you may think, rewriting your software will probably take almost as long the second time as it did the first time. Sure, you have more information now on what you need to build, but this information is already dated."
This quote is from an interesting article explaining why you should (almost) never rewrite your software. They also highlight the reasons why you should not do it: the code sucks, you feel smarter now than before, you estimate that you picked the wrong stack.
Taking that into account, I don't think we can objectively expect the delivery of this version within a couple of month with the same amount of features.
Facing the same and new issues again
Last but not least. It is related to what have been said previously. If you change your stack, your dev team will loose part of its experience. You are not smarter than before. The consequence is that you'll meet the same issue and if not, some new issues.
They did it by making the single worst strategic mistake that any software company can make:
They did it by making the single worst strategic mistake that any software company can make: They decided to rewrite the code from scratch.
The idea that new code is better than old is patently absurd. Old code has been used. It has been tested. Lots of bugs have been found, and they’ve been fixed. There’s nothing wrong with it.
Taken out from an article about Netscape strategy released by Joel Spolsky. And this is basically true. It is not because you decide to re-do carefully that you'll do it better, simply because you get rid of your experience and several tests at the same time.
Webmecanik position about Mautic 3
This is a simple conclusion to the previous paragraphs and you probably already understood our point of view. We encourage the Mautic community to choose an improvement of the current legacy by better distinguishing front / back / api, update the framework to Symfony 3 LTS version.
Concerning our strategy -as a hoster of Mautic in the cloud- directly impacted by Mautic open source project choices:
- if this is the chosen path by Mautic we'll contribute as major contributor we are and we'll offer this new version to all of our existing customers,
- if they choose to go for a total creation of a new app. then we'll never force our customers to change the software and loose all their data and campaigns. We'll offer both Mautic 2 latest version supported by Webmecanik softwares, and Mautic 3 as two different products.
These options have been inspired by Basecamp when they launched Basecamp 3 after Basecamp 2. The philosophy and structure being different, they decided to keep both softwares (even Basecamp Classic, the first version).