Magento is difficult to modify and customize

23

Posted by nick | Posted in Magento | Posted on Feb 24 2009

Tags:

I’ve recently started a side project for a friend building an ecommerce solution that requires some customizations.  I’ve read about Magento and attended a presentation about it at ZendCon 2008 by a couple guys from Varien, the company that built Magento, and viewed a few of their sample sites.  Because I have years of experience with oscommerce ecommerce, I was eager to dive right in and customize one of these!  Unfortunately, it turns out Magento sucks to work on.  Yes, I said Magento sucks.

Features

Magento has nearly all the ecommerce features you could imagine.  It has pretty much everything that oscommerce ever had, even after installing a hundred community contributions. They support downloadable products, grouped products, different customer types (retail, wholesale) and pricing for each, and a variety of payment and shipping modules.  Magento has “current” features such as tagging and tag clouds and on the backend also has a caching mechanism to speed things up on the site.

Bugs

There are some bugs in Magento and this is expected with any software.  They’ve been releasing an updated version every 2-3 weeks.  I’m still waiting on the payment subscription feature and a bug fix that will allow me to assign downloadable products to a group product.

Interface

Looking over a Magento store from the front end and peering into the source code you’ll quickly notice it uses very few tables.  On a given page, there was one small table in one of the sidebar objects.  That’s it!  Very good for search engine optimization.

Admin

The admin took a little getting used to.  Especially the product configuration as it’s laid out a little differently than the oscommerce I’m used to.  The main problem with the admin is that it’s freak’in SLOW!!!!  The ajax page content thing is cool and all, but not when it takes a minute to refresh!  It’s ridiculous.  At one time I had four tabs open and three of them loading a page in the admin while I worked on another.  I’ve tried it in firefox and google chrome and after reading the forums, I’m not the only one with these troubles.

Modifying code

The code… well, sad to say, but the learning curve is extremely steep.  I’m not talking in hours or days… weeks is getting closer, and I’d feel comfortable with months if you’re putting in a few hours per week.  It would probably make things a hellava lot easier if you’re a Zend Framework master as Magento is built on top of the Zend Framework.  Look into the code and you’ll just dig into directories eight or ten levels deep.  Many of the directories contain sub directories with the same name, making things even more confusing.  Each sub directory may contain one to four files and each file has about 50 to 100 lines of code that seem to only call an object or set a variable.  Where is the meat and potatoes?  You know, the controller containing all the logic?  Oh, and the XML config files for every modules and chunk of code in the system are kinda cool, but I really don’t know how they work at this point.  Below is a screen shot from my Zend Studio looking at a project and a sample file.

untitled-12

Customizing

After looking at this code for an hour, I decided to try the old way of locating something in a file.  Yep, I went to the product detail page and copied the text “product description” that was printed on the page, then search the whole codebase for it.  Nothin.  Ok, it must be in the database somewhere, so check the database… damn… over 200 tables!  I tried this a few times and came up empty.

If you don’t have 100-200 hours to learn the Zend Framework and play around with Magento, then I’d say forget about making customizations to it.  Yeah, it’s open source, but not too many do it yourselfers (if any) are going to be able to modify and taylor this thing to their needs.  Sure, it’s an awesome piece of work, but take it as it is or find something else.

How they make their money

They build the most complicated open source package I have every seen… by far.  Sure, it’s open source and maybe they “gave back to the community”… no.  It’s obvious the first time you hit their website that they’re in this for big bucks.  They make it easy to download, but as soon as you need something altered, it’s damn near impossible for any casual coder.  It’s still a challenge for a PHP Expert and Zend Certified Engineer without the proper training and experience.  They do have a tutorial on “how to customize Magento” at http://www.magentocommerce.com/wiki/groups/174/changing_and_customizing_magento_code , which pretty much just tells you how to merge a new release into your existing one and show you how to create a module.  Professional installation currently goes for $149 from Magento.  I was able to install Magento on my local server, but it took some tweaking and working around a few of their bugs to get it to work.  Speaking of bugs, if you want support from them it’ll cost between $42 and $1500/yr.  Why not just look on the forums?  There are a zillion questions on their forums, but no answers.  Figures… you gotta pay for the answers. How about professional training?  Yes, they offer 19 hours of professional training for $1000. They’ve done a great job at ensuring they have jobs for a few years supporting this beast.

If you want to master this solution

  1. You need to be an object oriented PHP expert.
  2. You need an awesome IDE to work with that has intellisense. Zend Studio is a good choice. Don’t even think about using Dreamweaver here folks.
  3. Gain experience with Zend Framework.
  4. You must have a lot of time available to learn this solution
  5. Pay for their training and figure out how this damn thing works.

Thanks Varien for the cool product, but it’s not for me right now.  Don’t have the hundreds of hours to learn your system; there are much easier shopping cart solutions available.

  • Share/Bookmark

Comments (23)

Since Nov 2009 I have been working with magento and now I have a single magento install as a multi-site for almost 40 shops and around 25,000 products.

Everything is set on a dedicated server (no cpanel, overcomplicated panels - just pure lamp on centos without even email or DNS; we use godaddy and google for those 2 things).

The server is a quad core with 8Gb of RAM and properly tunned for performance with apc-cache and the only thing we are hosting is a magento install for all those 40 domains (shops).

We haven’t added any plugins/features to magento. It’s basically the out of box thing, with a very simple theme added to it.

We have tried all kind of performance tuning and this the best we achieved.

I must admit if people are just browsing the website, it loads very quickly. But the problem is when we update products and orders. It takes about 2 minutes to save a product and it eats 120% of the CPU and 10% from the memory.

Our products are scrapped from other websites, so we need to do regular product updates and let me just tell you that using the dataflow is the fastest way to import products, but even that takes about 1 hour and 10 minutes to process 500 products. So when we have to do batch updates for 11,000 we have to wait endless hours.

If you’re thinking about using magento for your shop, it’s ok, but make sure to have a dedicated server and don’t even try to have more than 10,000 products or a multi-shop. It just doesn’t work.

MAGENTO is simply NOT scalable in performance.

Interesting, thanks for spreading the word Catalin. I’d be interested what the database looks like and how the products are setup. I recall a product type in magento that exponentially creates product “combinations” rather than relationships, similar to the poor methods prestashop uses. I wonder if this could be the reason.

They are called bundle products and we only have about 100 of them.

The rest of the products are Simple Type products with only one attribute (manufacturer).

I hope you’re not working on this “side project” for free??

wow, wish I would have seen this before I wasted about 6 hours of possible billable time. I’m a zen cart user, but heard lots of buzz about magento, wanting to stay ahead of things I sandboxed magento. I’ll be leaving that sandbox to grow weeds.
Zen does what I need, if your an os user the conversion is easy and offers a bit more. I’m looking to create a mod for class registration where company pays for multiple students. Was thinking I would do it in Magento - think I’ll stick with what I know! Thanks.


Magento has a very abstract, flexible design, which is great in an academic way, like if you built a giant, room-sized, 10000-moving-part machine that would butter a piece of toast. Impressive, and hugely impractical.

What good is the most flexible software in the world if it’s not accessible to the vast majority of your potential audience? In my 25 years of software, I have never run into a system so cryptic and obtuse to use.

What makes a big problem enormous is Magento has broken the cardinal rule:
If you’re going to use a dynamically typed language, DOCUMENTATION MUST TAKE THE PLACE OF STRICT TYPING!

Because of this, it is common to spend hours figuring out problems that would normally take minutes, or seconds.

Really, what are the major objects you care about in an e-commerce site? Stores, Categories, Products, Attributes…. at any time, anywhere, one should easily be able to ask “What’s the current category?” or “Give me all products with criteria x and y”. But asking obvious ecommerce-site questions in Magento requires a huge amount of incredibly non-obvious, complex and arcane knowledge.

I call “emperor has no clothes” on Magento. At some point, someone will match their feature set with an intuitive, flexible, documented developer interface, and it will be over for them. Only masochists would want to stick around.


i hate seeing thank you comments but thank you. you have saved me a lot of time. after struggling yesterday to get magento installed locally for hours and then reading this article i’ve decided it’s not for me, and to try something a little simpler.


I agree on this. Read through all the sites and reviews that claimed Magento was the second coming. It’s got a ton of features and attempts to accomplish a lot.

But it’s extremely overated. It doesn’t really do anything better than another cart. It’s bulky, slow, and has a lot of little annoying bugs still laying around. You have to put massive hours into edits that would take a short period of time in other carts. Despite their appeal to the community, their add-ons are rather sparce. They do not respond at all to the community even on major issues that arise.

I’m stuck with it but trying to migrate back to a less complex cart. While the extra features lured me in, I’ve learned when it comes to carts, I want it to be simple. I’d avoid this hunky piece of junk like the plague. Stick to a trusted cart that’s been out awhile.

I have been looking into offering my clients ecommerce and have been trying to find best solution. Was thinking of Magento, but now I read this, am not so sure. All I want is to offer reasonably straightforward shopping, with the client able to log into backend for simple maintenance: ie price changes/add products.

But I would like to be able to customize completely using CSS, as I do offer clients ‘design’ rather than template driven websites.

I guess Magento is not the answer? Any alternatives gratefully received. Am looking at one mentioned below right now…

I know that Magento and Virtuemart for Joomla are not comparable for many reasons, but I experienced that is possible to build an ecommerce section inside a Joomla site spending a third of the time you need realizing a Magento ecommerce website

Yeah, I had the same experience.

On the surface Magento seems like a breeze.

But when you crack open their “templates” and try to modify things, it gets wee-bit hairy.

I use PHPEdit as my IDE, so I was able to modify it to get it to work the way I wanted, but then mid-way through, I scrapped the whole thing, and went with a simpler-to-modify shopping cart solution from TurnKeyWebTools.com that I used to build this site for a client:

http://www.wewriteyourvows.com

Just my 2 cents.

Great post, however I do disagree with “Magento sucks to work on.” I would probably agree more with “Magento sucks to learn,” because I’m pretty comfortable doing work on Magento at this point. It all depends on what type of work.

I’ve been working on Magento sites for a little over 1 year. I started out by learning how to install, configure and change the design. Understanding the file structure wasn’t so hard, like anything, things become easier with more time spent (more experience gained.)

I’m now just starting to get into modules. It took about a week for me to figure out how (with no prior Zend Framework experience.)

Anyway, my main point… If you’re a developer serious about e-commerce, there is no substitution. Magento is a great solution.

I think so.Magento is very difficult.I’m trying to make a template of magento from apsd file.But have many things to do so i can’t make a template , also i’m working on OS 2 years ago.
Any one help me make a template from a psd file?
Thanks.

Well, I agree that Magento has a HUGE learning curve, but so does every other “enterprise” product, this is just normal. And I think the “DogSlow” argument is not really valid. Of course it’s going to be slow in a shared hosting environment, where you and 50 others share the same Hardware, but seriously, Magento was not ment to run in that kind of environment.

I am currently deploying magento in an “enterprise” environment, and testing on a HP G5 (which costs around 6.000 Euro), magento seems fast enough to me.

Also, remember that Computers are getting faster and faster, so not too far in the future magento will run smooth everywhere. Also I tried on my Lenovo W700, installing magento on Ubuntu which runs on my installed VMWare Server, and the performance was good on the backend, and the frontend was fast.

If there is one thing that I really dislike about Varien then it’s the lack of available documentation.


We looked into moving to Magento at one stage but as many others have said Magento has far too many shortcomings, which unfotunately far outweight the good things about it. Just to include some: Complex, Dog Slow, Needs dedicated hardware, hard to customise, poor DB structure for a large catalogue, etc. The final blow was the release of Magento Enterprise… I really don’t see much support happening for Magento Community Edition. Ultimately having looked into many many other eCommerce solutions I have to say that PrestaShop gets my vote. Just like Magento it’s well architected using current programming techniques, OO PHP, smarty, etc but unlike Magento it’s lean and mean. Unfortunately it’s not mature enough :(

Nicely said J.Greene. I have been doing everyday Magento development for almost a year now.

I have learned a lot of PHP OOP programming just by studying the code of Magento. Not to mention I went trough process of learning Zend Framework and a bit of Doctrine ORM (just for the fun of it). I do lot of blogging on Magento on my site, http://activecodeline.com.

Anyhow, my point, I’m still struggling with lot of stuff with it. It’s hard to tell your client that the certain X feature will take around 6-12hours to develop and implement, while the same feature can take around hour, two at most in some other platform or CMS. I’m talking about features like “Could you add 3 more fields to my Customer Address, and make those available under Customer Account page and under Order information”. For this little request, you would need to extend Customer Address object (extend entiry object of customer address or…), change few template files and so on.

One year after and official documentation is still no were to find. All those Wiki documents you can find on the official site are either out of date or so obscure and totally unusable to developer. Around 1 on every 5 searches I do on Google, I find my own site listed on first page. Not sure if I should be happy and proud or disappointed for this.

One thing is for sure, they never gave impression they are community oriented. And now that the Enterprise Edition is out, makes you wonder how much community editions we will have after 1.3.1 release. I cant say I hate them, making money on open source requires clever business model. This one looks clever… for them, so…

At this point, I will say no more. I do my living on Magento development but…

Happy coding people.

Hi,
I hear your pain! However, Magento has a level of functionality built in that other systems I’ve used (Zen-Cart, OsCommerce, etc) just don’t have - multiple stores/websites, for example.

I too did the fruitless code search for a way in, & have spent more hours than I can afford scanning the forums & google for answers, sometimes with no luck whatsoever. However, the more I’ve studied and failed the more I’ve learnt to the point where I’ve written my own modules (Suppliers, etc) that do just what I need them to do.

That said, the documentation is sparse to say the least. Varian need to slow down with the feature releases and stabilise the product & the documentation. They need a real push on their wiki, with some Varian produced tutorials on how to achieve common goals, etc.

Then, all of us who agree that this is a great product and a bitch to work with will be able to push the platform forward - which will help Varian make money too!

I am so not impressed–the product handling features are wonderful, but if I didn’t have a customer who was extremely enamored of the product because of the nice-looking website, I’dve tossed it immediately as ridiculously complicated and user un-friendly.

Documentation is atrocious, and when you have to google how to add a manufacturer to the list (and you find the answer somewhere OTHER than their site!), you’re looking at a very poor product no matter how cool everyone thinks it is.

I suppose we should be grateful because those of us who do figure it out can make scads of money with it since we’re such a rare breed right now… *rolls eyes*

I have been working with Magento and although it was difficult to figure out at first, after a little while it starts to make sense. I like it much better than OSCommerce as far as customization.


Magento is an enterprise level solution. It is not a quick-to-install-and-modify platform. It gives you a lot even if you consider spending $500 for support. Think about writing it from scratch or buying something simillar - not a chance! It is not for everybody but it is definitely a diamond! And yes, it is complicated but look on the feature list! And Zend Framework was a good choice.

What open source ecommerce do you recommend with the experience you had with magento. I am definetly no php pro, so am looking a software where i can customize with ease, something like the eCommerce site in yahoo, all we do is change via webpage, little code modification.

I looked into presta shop for about 15 minutes and was impressed. Tableless design on the front end and plenty of good PHP code objects driving the application. Plus, it’s not stupid complicated like Magento to figure out.

If you’re looking to do a lot of pointing and clicking with little to no code modification, a yahoo ecommerce is probably your best bet. Godaddy has a shopping cart solution as well, but I don’t have any experience with that.


I agree 100% — you are not the only person who thinks Magento should not be exalted as the greatest ecommerce app in existence today. Well, perhaps it is, but it certainly has its faults as you point out.

Here are some other things I found lacking with Magento:

1) the server requirements are high — unless you have your own server you’re going to be getting to know your sysadmin pretty well before you even get started.

2) it is extremely sensitive, and a little buggy. One false move in the db and you’ll have to reinstall the whole damn thing. I had my new cart all built out in magento, ready to launch. Then I looked at it the next day and found that somehow there were now 5 sites in the config, and the front end reflected that. When I attempted to delete some of the extra sites, the whole thing fell apart and I couldn’t even restore the db to get it to work properly. After searching forums and such I found there were many others that had this happen to them as well — so don’t judge me :)

Anyway, I think Magento is intriguing, but it is too difficult to modify for it to be a product that I want to work with on a regular basis.


Write a comment