It’s been about three months since I broke into Magento for my first project here at Synapse Studios so I thought I’d give my impression on the shopping cart tool having gotten to know it a bit better.

Obviously a free, full-featured, shopping cart and e-commerce solution is great concept. I mean, really, one can’t bitch too much about something that is free (notwithstanding, say, venereal diseases or OScommerce…) Magento’s feature list is comprehensive: coupons, specials, multiple checkout and shipping options, tiered pricing, layered navigation, etc. Unfortunately, when you are neck-deep into anything, you get a better sense of the minor and major flaws lurking just under the rosy surface. Take a look after the jump at some of its more vexing problems.

  1. By far, the most annoying thing about Magento is its complexity. If the default installation suits your needs, then Magento is perfect. However, if you need to modify anything (and I mean pretty well anything) like adding new functionality (modules), changing the layout, or creating a custom results (any type of result: users, products, etc) page, then you can expect to spend many, many, many hours digging through the code and fighting the schema. The XML layout method is confusing as hell and custom module creation is, well, good luck.
  2. The EAV data model is great. It’s fast and makes sense when you have many, many possible attributes to assign to a specific object. However, trying to make database-level changes to all or a subset of products is quite a pain in the ass. This is not so much a knock on Magento since the model does make sense given the options to add arbitrary attributes and such. I suppose this goes back to Magento’s lack of a well-documented database schema (or decent documentation in general).
  3. Performance is horrible. Changing a single attribute to a product in the backend takes an average of about a minute to perform, on an otherwise responsive server. AJAX or not, that is entirely unacceptable. The frontend, despite being cached, is not all that much better. I mean, yeah, you’re talking about a lot of features here but at the expense of performance to an annoying degree. The latest version is supposed to address certain performance issues, so we’ll keep you posted if that situation changes.
  4. Why slack on viewing images? When viewing a product with multiple images, why the hell does the image open a new popup window? They’ve built an entire application utilizing AJAX but they can’t implement a simple image swapping feature for product details?
  5. While on the topic of images, since Magento’s product entry method requires that you enter each product type as a different simple product, why doesn’t the parent configurable product inherit its child images? For instance, if you had a shirt in three different colors, you might think that by entering the red shirt image in the red shirt simple product that it would automatically show when viewing the parent configurable product. NO! Instead, you have to add all three color shirt images into the parent configurable product. Seems like a serious break of the inventory/product entry methodology that Magento flaunts.

Still, aside from a seriously steep learning curve, lack of meaningful image features, and poor performance, Magento is a very decent product. Again, for free, you really can’t beat it. And it’s leaps and bounds ahead of OScommerce. We’ve just found it to be a very heavy solution to a complex problem. That’s not always a bad thing, but certain problems can make working with it to customize it rather a nightmare.

Posted in: Development, Reviews