Magento Developers: Is Magento really -that- good?
I dont understand exactly why (This question was removed from Stack Overflow for reasons of moderation), but Stackoverflow decide to remove this post, although is was really appreciated by the community. Nevertheless I think the public needs to be informed.
We are looking at Magento as a possible commerce solution, but we are reading more bad than good on the free product. However Magento sells itself as the best thing ever, so I am confused on its actual value. Thought I’d ask the pros here.
Can any seasoned developer here explain the difficulties in using Magento not only as a commerce solution, but a CMS solution? Can it do easy content management like Drupal, Joomla, etc? If I wanted a custom list of products, is that simple or do you have to spend hours learning where to create the code? Is it modular in the way Drupal is where you can say, here is my custom code, and interact with Magento and change some of its function?
Is it difficult to conceive how it works from a developer, user, and customer standpoint?
We don’t use Zend Framework and are not familiar with Smarty syntax (which I think Magento uses for templating). The risk in my mind is that the learning curve will be really steep (especially for the designers), and trouble tickets may take a long time to resolve (resulting in some pissed off customers).
Any thoughts from people who have used Magento extensively?
Answer 1 by Alan Storm
The biggest win with Magento is they’ve solved a lot of common e-commerce programming problems really well. Payment gateway and shipping integration are top notch, and if you’ve ever struggled with a payment processor’s poorly documented API or had to download a UPS “enhanced” PDF to get at their service information, you’ll know that’s worth the price alone. The company behind Magento did a ton of e-commerce consulting before building Magento, so they knew what kinds of things needed to be solved. These things are exposed pretty well from a customer point of view.
Magento has an incredibly robust module system for overriding, changing, and adding to core system behavior. Part of the negativity you see directed at Magento is people used to dealing with simple PHP scripts encountering a module system for the first time. Remember the first time you saw Drupal? (what’s a hook? a node? Argh!) There’s also a growing number of free and commercial extensions written for Magento the fill gaps people have in it’s functionality.
The other big gripe is performance and cacheing. Magento pushes the edge of what you can do with OOP PHP code, and relies heavily of internal caching of objects and configuration to get acceptable performance out of the system. This caching that causes confusion for developers trying to learn the system. Also, you’re not going to run this on a $5 Dreamhost account.
Magento uses some components of the Zend Framework, but it’s a really a framework in and of itself. If you’re familiar with MVC (CakePHP, CodeIgniter, etc.) patterns it’s not that difficult to get up to speed on what they’re doing. The template and skin systems are separate from the back-end module system, so the main gripe your designers will have is learning where the files they need to edit are, as well as learning the magical incantation to grab what they need.
Magento uses straight PHP for its templates, no smarty required.
End of the day? If you’ve got sharp people it’s not that difficult to conceive of how it works, and it solves so many problems out of the tarball that it’s worth the investment. Every system has it’s crap to deal with. If you had a crap free system, you wouldn’t be considering the switch. My biased, I do this for a living, advice is to bring in (perferably on-site) a Magento expert for your first project and let the team soak up as much knowledge as possible. A few weeks with someone explaining how it works it all you need.
Answer 2, by me
As Alan shows you the biggest win of Magento and its advantages I will play the devil lawyer and show why Magento is not that good.
Magento is complex
Magento is not the regular php script made by the new kid on the block, but developed by a company with good programmers. Is based on Zend Framework which is pretty complex in its term, although is not respecting ZF philosophy in all aspects. I did several ZF full projects before working with Magento and I was still find surprises in their approach, as sometimes they don’t inherit from ZF objects and they should (Zend_Form and such) or their naming conventions feel familiar but actually represent different concepts. EAV model may appear simple at first view but extending Magento means working with it and you’ll need to understand it well. OOP model is hugely complex and after some months working with it I still didn’t saw a document that will explain exactly the processes that the Varient team is doing in the background.
Magento is heavy
6000+ files. Very long and complicated call stacks. Your server needs some power in order to process Magento calls. The fact is that Magento is not targeted at small shopping carts owner, but more to the upper level of the medium segment, owners that can affor dedicated servers, maybe a small development team and maybe a paid Enterprise licence.
Magento is (basically) undocumented
I learned more from Alan Storm blog posts (and others) than from Magento official docs. It is possible that this is on purpose as Varien is giving paid support but this is a pretty ugly fact. Parallel documentation that are better than the official one already exists. There are a few books but they are only scratching the surface. You’ll spend most of the time digging for answers rather than coding.
Magento is difficult to debug
A lot of magic class loading is involved. Processes are not clear and they are very lengthy. EAV model makes all this even more difficult as data is coming from different sources and is difficult to follow. This adds to development time.
Magento is hip now
If we are going to be honest, Magento is the latest entry in the show and it gets a lot of publicity. We saw during the time the rise in popularity of other systems like PHPNuke, Drupal, Oscommerce or you name it. I never recommend putting all you eggs in one basket and dedicate to one CMS or shopcart, as the trends can change very fast. Magento is very well promoted and very well advertised and it fills a pretty big hole by itself. I am pretty certain that somebody will address all this Magento issues in a product that will be better, and that the market has a lot of space for another open source shopping cart.
These were the 2 most voted answers, you can find all the rest in the internet archive, here (thanks for keeping the information)