[You may have heard about the Magento fork Mage+.]
Lee, just tell us: who are you and what are you doing?
I’m a Magento technical architect, developer and contributor to Magento CE. I specialise in architecting and building large scale and complex installations of Magento – having built enterprise Magento platforms for Warner Music Group both in Europe & USA, and for Rebate Networks, who operate a collection of localised flash-sales websites throughout the world. I’m also the founder of the London Magento Users Group.
I created a fork of Magento CE called Mage+, after the frustrations I’d experienced whilst working with Magento.
We’ve seen Mage+ on GitHub. It’s not the first fork of
Magento CE, there have been similar around like agent-ohm
who forked Magento CE 1.3. What will your project do better
than the other forks?
I watched Agent Ohm with great interest several years ago. There were some great ideas, and some clever solutions to some of the problems that we’re still seeing in all versions of Magento. I’m currently trawling through the changes that Mark (Kimsal) made to AO, I’m sure that some parts of AO will eventually appear in Mage+
I believe that where AO went wrong was in trying to change too much, too soon. In doing so, AO became incompatible with the (at the time) hundreds of extensions available from Magento Connect – so that incredibly useful resource was lost to anybody adopting AO. I don’t think Mark realised at the time that in changing Magento so radically, he was effectively distancing himself and AO from the Magento community.
Ultimately, I think that has been the key to the failure of all previous forks – they’ve failed to understand that in order to be successful, you need to embrace and empower the Magento community.
Mage+ is different from other forks, in that Mage+ is trying to maintain compatibility with Magento as much as possible. The focus is on creating a truly enterprise piece of software – bug fixes, reliability, security, data integrity, robustness, durability, documentation and long term support all trump the addition of more and more features. The Mage+ website (http://mageplus.org) now contains a very prominent link to the release notes, that explains exactly what has been changed in Mage+ since it was forked from Magento CE.
What was the reason you forked Magento CE?
Firstly, I’d like to say that Varien/Magento has done an incredible job in producing Magento – and it was noble of them to make it an open source project. However, making a product open source doesn’t come without certain responsibilities, and I feel that Magento haven’t fulfilled these responsibilities quite as well as they could have if they had been more involved with the community.
I became frustrated with the Magento product and the way in which the Magento ecosystem was fragmented and broken. There were so many issues that I could see could easily be addressed by creating a truly open source fork of Magento, that to fork seemed the most pragmatic solution.
I think the README.md contained within the project’s repository sums my reasons up quite well, but here is a more detailed explanation.
Historically, the development process for Magento CE has been very opaque – and there has never been a roadmap for any version of Magento made public, let alone allowing the community to contribute their suggestions towards it. Even to those that have signed the Magento Contributors Agreement, the development process is still opaque. Because the (subversion) repository provided to those that have signed the MCA (Magento Contributors Agreement) is several Magento versions out of date, and because there is no visibility of issues that have already been resolved by Magento’s own internal team, there’s not much motivation to contribute. There’s also no attribution to those that do, which is (IMHO) totally unacceptable for any open source project. It’s partly for these reasons that there are issue reports in the bug tracker – with patches attached – that in some cases haven’t been actioned for over 2 years.
The Mage+ project uses github in order to make it easy for developers to contribute to the project, and every contribution that is merged into the project receives full attribution – both in the github commit logs, as well as in the project’s release notes. This full and transparent attribution policy encourages contributions towards the project, which in turn creates a better quality product. Additionally, a link to the contributors log is also found in the footer on every page of the project website. Ultimately, for any open source project, it’s contributions from the community which keep the project alive.
Using github also offers a clean and easy method to upgrade Mage+. After users have forked the project in order to begin their own Mage+ implementations, they’re free to fetch updates from the upstream project whenever and as often as they like – and these updates will be seamlessly merged into their project. This ease of updating means that bug fix releases can be made very frequently, and it’s a simple process for every installation of Mage+ to be as current as possible at all times.
Originally, Magento’s business was based on Magento CE – and as they’ve pivoted their business from offering only an open source product to monetizing the Magento product, they’ve slowly removed Magento CE from prominence on their website. Magento CE itself is no longer recommended as a production implementation – the recommended options now being Magento GO, Magento Enterprise or Magento Enterprise Premium. The Magento website now states “[Magento CE] is recommended for expert developers and highly technical enthusiasts and hobbyists in non-mission critical environments”. I have to wonder if this signifies that this product will not be supported for much longer, and what that will mean for the 100,000+ stores currently running on Magento CE
To date, there has been no long term support (LTS) option for Magento 1.x. I work with some of the largest companies using Magento – and at the moment, many of those are nervous about what Magento2 will mean for them – will their Magento 1.x be supported after Magento2 is released? and for how long? when will they be forced to migrate to Magento2 simply because Magento 1.x is no longer supported?
For companies that are about to begin projects costing sometimes €500,000 or more, this is a very real concern – what is the life expectancy of the platform they’re about to implement? will there be another expensive project required in a year or so to migrate to Magento2? typically, these customers expect a product with a life expectancy of 3-5 years.
Mage+ aims to address those fears by committing to long term support from the outset – those that do not wish to, or that are unable to migrate to Magento2, will not be forced to do so through fear of not receiving ongoing support.
By offering long term support to Magento 1.x versions, Mage+ offers peace of mind to merchants that are already using Magento CE and to anybody that is planning to, or implementing Magento right now, in the period before Magento2 is released.
Mage+ support has been modelled on the Ubuntu LTS offering, and just like Ubuntu LTS, the aim is to provide long term support updates for Mage+ v1.x for five years, through May 2017.
For vendors of commercial 3rd party extensions, this means that there will be an active sales channel for their existing products for at least the next 5 years – that’s sales and revenue that they would not otherwise have without the Mage+ commitment to long term support.
With all of that in mind, and with all of the benefits offered to the Magento community by this project, I’m confident that it will be a success.
At your GitHub’s repo README.md you mention that you want Mage+ helping the original Magento project. How?
There are a number of ways that Mage+ could help the original Magento project. I think the greatest demonstration of this will be for Magento to observe what can happen when the community is empowered and recognised for their efforts and contributions.
This will be particularly noticeable when the community is able to drive the direction of the product and the product roadmap based on issues that – to them – matter most.
There will also be more obvious and direct benefits to the original Magento project, as many bugfixes and security fixes will be identical and so can be incorporated into Magento.
In the same file you promoted some bold goals for your project, like long-term support, visible roadmap and increased collaboration with the community. How will you assure this? What will be needed to realise those goals?
Mage+ is a massive project, with many facets – from documentation, through to complete audits of both code and database, ongoing review of community contributions, improvements to both admin and default themes, and in the future – forums, and so on. So, I’m glad you’ve asked that, as concerns of how these goals will be realised are understood and valid.
Obviously, the support from the Magento community is the key to achieving all of this – and so far, the support I’ve received from the Magento community has been encouraging. Through collaboration and discussion with the community, particularly concerning the issues they’re encountering with Magento on a daily basis, I hope to devise a detailed product roadmap. What actually goes into each version of Mage+ will be decided by the community – through their own contributions and bug reports. Ofcourse, there are features that I’d like to commit to Mage+, but as already explained Mage+ isn’t about trying to cram more and more features into Magento
There are currently over 100,000 stores running on Magento CE, and I suspect a large proportion of those stores already have people fixing issues within them on a day-to-day basis. All it takes is for a small percentage of those people to start contributing their fixes back to Mage+ and then the community becomes self supporting. This increased collaboration itself leads to long term support – which becomes much easier when you’re able to leverage the work that other people are doing for themselves anyway.
Your GitHub’s repo organisation is just one person. Will it be open to other “core contributors” from the community?
Absolutely. As more pull requests are made, and I can see which contributors are consistently making good quality contributions, I’ll be adding to the team so that these contributors can assist with the project on a more involved level – merging pull requests themselves and so forth.
As this team grows, more structure will be put in place and there will be individuals responsible for specific functions such as issue verification and triaging, documentation and the project website, for instance
I’m currently investigating the possibility of implementing a project governance structure similar to that seen with other large open source projects such as Typo3.
How can the original Magento CE benefit from additions you or your contributors made? will there be some sort of manual upstream requests to the Magento CE team?
As I mentioned earlier, I’m already one of the Magento CE contributors – however, I also mentioned the massive difficulties that currently exist in contributing to Magento.
Mage+ itself is open source, and released under the same OSL v3.0 license as Magento – so the Magento core team are free to take whatever they wish from Mage+ and incorporate this into Magento CE or Magento Enterprise.
I’ve committed to contributing the database trigger changes in Mage+ both to Magento CE and to Magento2, so yes – there are features and bugfixes already flowing back into the original Magento project from Mage+
Will Mage+ provide a Magento CE 2.x fork once Magento 2 will be published?
That’s certainly a possibility, but at the moment there are no plans.
Hopefully, we’ll see Magento engage more with it’s community of users and developers, adopting a more collaborative development methodology with Magento2. Certainly, the hosting the Magento2 project on github is a good first step in the right direction. I’m watching closely.