Magento is Messy
Magento is a PHP Zend-based ecommerce solution. Go check out their site.
Looks great doesn’t it? Magento most certainly is NOT great and this post serves as an additional warning (there are a lot of them out there now so I am just piling on) to those that are considering it for anything. These notes were made against v22.214.171.124 so some of it may have improved though I doubt anything substantive.
For all the chatter about how feature rich and impressively architected Magento is it lacks a lot of features. A sampling:
- You cannot delete an order (without directly hitting dozens of tables in the DB to do it manually).
- You cannot directly change the status of an order (without hacking on some core config files to make this possible in a buggy way).
- You cannot edit an existing order directly.
- You cannot control the initial order status of orders in a custom way.
- Canceled orders still show up in all sales reports.
- You cannot export orders in any format.
Lots of flawed stuff going on with the general structure of this thing as well:
- Magento is SLOW. Check out this post where they proudly trumpet 5 requests per second in a new version. 5 requests per second? That is some horribly slow stuff.
- Related to the above, they pointlessly used a poorly implemented EAV model for the database schema. In practice their schema generates dozens of joins on every query, makes it borderline impossible to figure out manual SQL queries, forces you to use their PHP objects to build up queries, and most importantly ensures that literally dozens of database queries run for every single page load.
- The worst combination of convention and configuration imaginable is in play. You must configure EVERYTHING with countless, verbose objects and huge balls of XML to stitch everything together and then they put a vast, undocumented layer of conventions on TOP of all that configuration to ensure no one can pick up the system easily.
- Theming Magento requires creating dozens of files in multiple folder hierarchies and modifying way too may configuration files. It is a really heavy weight process though at least this side of it is better documented than the rest.
The main overarching problem with Magento? It is overwhelmingly a vehicle for drumming up consulting and support contracts. I suspect most of the above pain points go away if you are willing to pay the $3k – $13k every year for a commercial version plus who knows how much for consulting on top of that. Its creators have no desire for anyone to pull down the software and do something useful with it without paying. The support forums are deadly silent, even the most trivial of plugins (or plugins to fill in sorely lacking features that should be built in) cost hundreds of dollars, and useful documentation is painfully difficult to find. Magento is an incredibly impressive accomplishment of architecture astronauts trying to see how complex they could make an ecommerce solution. This is the most closed and uninviting open source project I have ever encountered.
Side note, this guy’s blog is probably the best documentation I have been able to find so if you are stuck working with this platform his posts are absolutely worth a read.
That’s all I have to say about Magento. It absolutely has some positives and some very powerful features but you should stay away if you aren’t willing to pay big money and consider another solution. I would recommend checking out a hosted solution like Shopify or Core Commerce.