You're about to read a highly subjective and somewhat argumentative post which are my own opinions on the shortcoming of Magento and why I no longer enjoy working with the framework. Which doesn't mean I'm totally free of it at work :)
I've been using Magento for around 2 years and during that time I have worked with both Magento CC and Magento Enterprise on a range of projects with budgets ranging from $15k - 250k. I've contributed open source extensions, reported bugs to the core issue queue and overall used the platform somewhat extensively.
The ecosystem is the biggest problem for me. Magento's extension ecosystem certainly has plenty of free extensions but there are also many proprietary extensions. I'm not entirely against people making money by selling their extensions which are built on an open source product. However, the extents they go to protect them really gets my back up. Developers commonly use some combination of ionCube a licensing extension and an API key that cause a world of problems for developers.
- I've had to install licensing extensions just to install the proprietary extension. Often the license extension is harder to setup than the extension you want.
- Many license extensions try to validate the API key against a remote server and sometimes cause issues if you're developing on localhost because it's not a valid domain.
- ionCube completely removes any chance you may have of debugging an extension. Very frustrating when the US based support takes two days to get back to you and the documentation is practically non existent.
- ionCube requires an extension to be installed on your web server. I don't care about this too much but never the less, another step to use the extension.
There are a hell of a lot of bad extensions out there. Often extension quality is very low, extensions go unsupported and break constantly when upgrading between versions. This is partly because of the way Magento supports rewriting classes which cause all kinds of conflicts.
Enterprise vs Community
As if paying for the extension wasn't bad enough, try get a copy of the enterprise extension? The same extensions can jump from $200 to $500 because you're using Magento EE which means you've got money.
I've tried a few base themes and non of them really impressed me. The themes in core are poorly thought out (you have to use !important) just to reset some styles and other ones which you can of course buy often give you an entire theme which isn't what you want when you've got a custom design. And don't even get me started on the clumsy design fallback system which needs an extension just to work correctly in Magento EE.
I already covered quickly on the class rewriting but let's have another dig. Rewriting classes or daisy chaining as it's often called is probably one of the single biggest problems around upgrading and maintaining code. It's clumsy and error prone.
The whole concept of the XML theme layouts is difficult for newcomers to learn, difficult to diagnose issues and pretty unintuitive all round to maintain. Say what you like, i'm not a fan. Templates are just as bad. Does my theme have this template? Nope, does the base theme have the template? Nope, which template in core do we fall back to now? Ahh finally found the template, copy it into your theme so you never get any updates for that file again, great!
Creating custom pages in the admin panel is just too hard. I'm sure some smart ass is going to tell me it's just a bit of XML and a class blah blah, i've done it all before. It's still too hard, admin pages are clumsy to build, there is a lack of API's for doing common tasks and more often than not, admin pages get overlooked in place of a manage it in code solution.
My admin panel whinge above lead directly into this point. Probably the biggest complaint I hear when taking over Magento projects is that, we can't even edit XYZ. I've no doubt that it's related to the difficulty of building admin pages and the budget it requires.
Magento's a pig. Everyone knows it. You've got to throw a hell of a lot of resources at any Magento site with any kind of significant traffic.
So what should you use?
It's not that kind of post. I don't want to talk another platform up. Whether you use Python, Ruby, PHP or something else, they've all got their own e-commerce solutions and i'm not qualified to comment on them all, i'd certainly try something other than Magento.
But Magento Has Feature X?
Yes Magento might have some features that you can't find elsewhere, maybe it's a POS integration or the multi-store. I don't care, find a new platform and invest in it. I know the next time I find myself choosing between Magento and something else because of one feature i'll be choosing the something else and writing the feature myself to contribute back to the project. Goodbye Magento. If you're looking for e-commerce website development in Perth, why not get in touch.