Why you should never use opencart

Recently I had the opportunity to work on a decent sized e-commerce project based on OpenCart. I haven’t used it before but I had heard its a very simple and easy to use. So the following is just a quick overview of all the fundamental flaws and issues with OpenCart and why you should NEVER use it as a platform of choice for your projects, unless you want constant headaches, ugly code and incredible amount of code repetition.

The obvious

So lets start with the obvious… A quick peak at the installation sql schema reveals something mind-boggling. The engine of choice for ALL tables, including orders is MyIsam, which first of all shouldn’t even be a consideration in any MySql 5+ setup really, especially for web purposes and second and more important maybe IT DOEST SUPPORT TRANSACTIONS. Simple logic dictates that transactions are a fundamental part of e-commerce, but apparently the team behind OpenCart decided thats not that case!? I am already stunned but lets not stop here… MyIsam doesn’t support foreign keys either, so all integrity and constraint checks are done with PHP, nasty…

Code Repetition

The system is FULL of code like the following:


$this->language->load('account/account');
$this->data['heading_title'] = $this->language->get('heading_title');
$this->data['text_my_account'] = $this->language->get('text_my_account');
$this->data['text_my_orders'] = $this->language->get('text_my_orders');
$this->data['text_my_newsletter'] = $this->language->get('text_my_newsletter');
$this->data['text_edit'] = $this->language->get('text_edit');
$this->data['text_password'] = $this->language->get('text_password');
$this->data['text_address'] = $this->language->get('text_address');
$this->data['text_wishlist'] = $this->language->get('text_wishlist');
$this->data['text_order'] = $this->language->get('text_order');
$this->data['text_download'] = $this->language->get('text_download');
$this->data['text_reward'] = $this->language->get('text_reward');
$this->data['text_return'] = $this->language->get('text_return');
$this->data['text_transaction'] = $this->language->get('text_transaction');
$this->data['text_newsletter'] = $this->language->get('text_newsletter');

So, we load the language file and manually map ALL the entries from the simple array that each language file is, to a new array with the exact same key as the language string. That usually makes a 10 lines controller into 50 or 60 lines one… Some heavier controllers have in excess of 150 lines just to map the languages !? Then we move on to the form handling. Well there isn’t a form handling framework to speak of, inputs are handled like so:

if (isset($this->request->post['model'])) {
$this->data['model'] = $this->request->post['model'];
} elseif (!empty($product_info)) {
$this->data['model'] = $product_info['model'];
} else {
$this->data['model'] = '';
}

if (isset($this->request->post['sku'])) {
$this->data['sku'] = $this->request->post['sku'];
} elseif (!empty($product_info)) {
$this->data['sku'] = $product_info['sku'];
} else {
$this->data['sku'] = '';
}

if (isset($this->request->post['upc'])) {
$this->data['upc'] = $this->request->post['upc'];
} elseif (!empty($product_info)) {
$this->data['upc'] = $product_info['upc'];
} else {
$this->data['upc'] = '';
}

if (isset($this->request->post['ean'])) {
$this->data['ean'] = $this->request->post['ean'];
} elseif (!empty($product_info)) {
$this->data['ean'] = $product_info['ean'];
} else {
$this->data['ean'] = '';
}

And again for a form with 50 fields we have 50 blocks like the following. Of course that code can be replaced with 3 lines that do the same, something like:

if(!empty($this->request->post)){
foreach($this->request->post as $k => $v){
if (!empty($this->request->post[$k])) {
$this->data[$k] = $this->request->post[$k];
}
}
}

Because there is no validation framework, each Controller invokes a validate method for each entity it processes, where validation is done with good old PHP functions manually for every form field. I mention that last, since its kinda ok for a PHP app from 10 years ago, but nowadays it doesn’t make sense.

Database

I already explained the usage of MyIsam, lack of transactions and lack of foreign keys but lets elaborate on the database a bit. Because of all the previous items, each controller has a validate method where different constraints are checked and validated (instead of using the MySQL engine to do that). Same goes for the deleting of entities, so intead of having Cascading foreign keys, we manually first find all related entries and then delete them.

The madness doesn’t end there. The query to get an actual product is fairly heavy, joining 8 or 9 tables to gather all the product info. What boggles the mind is that this query is called in multiple locations inside of loops with no caching whatsoever. Same goes for the getProducts function which represents the heaviest query in the entire system. No sign of caching…

In the entire system there is almost no caching anywhere, what’s funnier is that there is caching in the backend at certain places but not in the frontend. For the places where there is cache, the default and only supported one out of the box is file, which if we have proper caching on the mysql server is probably even slower, to open ,read the file and deserialize the result. The list goes on and on and on, but the bottom line is that is a mess.

Templates

Templates you might think are good old PHP so what could go wrong, eh? Wrong… The way the system works is that it treats every single content block on a page as a module, so in order to add something, even as simple as

<p>asdasd</P>

well, you need to create a module. So creating a module consists of adding a backend module(necessary step), which involves copying some dummy existing module, refactoring the names, changing all the 50 language lines and so on, then creating the frontend view and controller for it, and voilaaa 2 hours later you can render something. If simplicity is its core selling point, thats everything but simple (or correct me its simple but so tedious and time consuming you can call it complex).

Seo URLs

Again mind boggling. Take a look at this snippet(SEO url handler):

foreach ($parts as $part) {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE keyword = '" . $this->db->escape($part) . "'");

if ($query->num_rows) {
$url = explode('=', $query->row['query']);

if ($url[0] == 'product_id') {
$this->request->get['product_id'] = $url[1];
}

if ($url[0] == 'category_id') {
if (!isset($this->request->get['path'])) {
$this->request->get['path'] = $url[1];
} else {
$this->request->get['path'] .= '_' . $url[1];
}
}

if ($url[0] == 'manufacturer_id') {
$this->request->get['manufacturer_id'] = $url[1];
}

if ($url[0] == 'information_id') {
$this->request->get['information_id'] = $url[1];
}
} else {
$this->request->get['route'] = 'error/not_found';
}
}

The url_alias mapping table contains two field entiti_id=id and keyword for that entity id. What happens if you have a manufacturer and a category with the same name one might ask… Well its up to the gods of OpenCart to decide which one you will get back. Of course they could have prefixed categories with category/ manufacturers with manufacturer/ and so forth and added an entity type to the rewrite table, but why bother. You cannot add your own parsing and rewriting logic if you want to extend the system (thats due to architectural issues which we will get to soon), so that means you go in that if statement and add your logic(making sure to add something to prevent the same key linking to different entities lol. The rewrite method is the same thing essentially. By far the worst routing system ever.

Security

I havent seen any major security issues yet, everything is filtered pretty well, even though in a really stupid and repetitive way as everything else in the system, but this probably needs some looking into: http://www.opencart.com/index.php?route=common/home/__construct

Architecture

Let my start by pointing out that this is not an OOP software. It uses PHP OOP syntax but the way things are done is completely procedural. There is no abstraction, no separation of concerns, methods call eachother all over the place in some cases such as the tax and shipping system passing reference of one variable through 10 different tax classes with no clarity at all. That is not object oriented programming or a properly structured application. Of course you cannot extend any of the core services, you have to modify the core itself.

There is a frontend and admin apps which share the same core, the same functionality, same entities, but yet they are 2 separate code bases, repeating eachother almost 1 for 1. Any change in an admin Model should be manually done in a frontend Model as well…again retarted way of doing it. So because of the poor architecture, the guys decided to come up with this thing:

https://code.google.com/p/vqmod/

Don’t ever use that please, after installing a couple of modules, you end up working with more xml containing PHP, than actually PHP code. Biggest mess ever.

Conclusion

That was my experience with OpenCart and I shall say by far the worst programming effort ever. Its a system that somehow works, barely hanging in the balance with stuff going all over the place. I tough its good to share it with you, so if you are doing some research about what to base you next e-commerce project off of, you should’t even consider OpenCart. Just FYI, extensions are not much better either, they are as a big as a mess as the core itself. If you are doing a serious project go with Magento or a good Java alternative would be BroadLeaf. If you need something with a shorter learning curve, try Prestashop.

EDIT:

After posting this article it has gained some popularity and people have expressed both agreement and disagreement with my views which of course is fine. However most of the feedback I received in the comments from OC supporters was limited to trash talk, personal offences, absolutely technically flawed ideas (like explanations on how code repetition is OK if the code is “simple”) and all other sorts of nonsense ideas (envy of how much the OC author makes, etc, etc), but very little if any real answers to my points were provided (including from the OC author himself, who mostly resorted to trash talk). I would advice people who read the article to quickly gaze over the comments too, so that way they will gain a better idea of not only the software flaws of OC, but the kind of vibe and technical skill level that goes around in the OC community…

  • Qphoria

    Just found this article and figured I’d say my piece….

    You are of course entitled to your opinion about any software, but this article is riddled with a mix of inaccuracies and overzealous slamming of some relatively common coding methods that you claim to “have never seen before”. This leads me to believe your exposure to the world is a rather new one (read: know-it-all youngster).

    Database:
    First off, the database using MyISAM.. You should realize that OpenCart has been around for about 8+ years now. Back when it was first started, innodb was hardly even heard of. Everyone used myisam and still many do today. zencart, oscommerce, even WordPress.. the very blog you are using uses MyISAM (http://markmaunder.com/2011/06/23/wordpress-myisam-vs-innodb-mysql/)

    It always humors me when I read about how people write about myisam “Oh the horror” or “I cannot believe it” or “this is an outrage” as if using MyISAM was the equivalent of burning down a church. This is the usual fresh-out-of-college points of view where people look back and say “why would you ever using analog electronics when digital is so much better?!”. Congrats on your youth and new found programming knowledge. But your first lesson in life is that not everything is magically going to update to the latest bleeding edge technology overnight because you read about it once.

    You might have noticed that HTML5 has been around for years but only starting to finally take hold with most major websites. Even Amazon.com is still HTML 4.01… “Oh the humanity!!”.. I’m sure they are losing sleep while counting their billions.

    MyISAM is plenty popular and still very valid in use. Sure it is true that other database methods: PDO, innodb, etc could improve things in the long run but it isn’t something that happens overnight. You don’t just upheave a community of mods and code examples and invalidate them overnight with a new transaction engine. These things must be finessed in. InnoDB also cannot use fulltext search so you have to find alternatives to things like this. It isn’t so black and white.

    Code Repetition:
    I’ll be the first to admit I dislike the reuse of code. I personally added loops for most of these and an automatic language includer to avoid needing to write code like this. However, opencart is also a learning cart and is aimed at newer programmers. Daniel preferred keeping the code this way as it adds a sense of reference for understanding with minimal performance hit. It’s not ideal for the advanced programmer, but great for newbies. You can still choose to code the other way in your own addons and extensions. The core code should be viewed as a learning tool. Again, there may be room to improve, but nobody losing business over it.

    Templates:
    Well your understanding of this section is just plain wrong so I can’t even comment on this. I think you are referring to “modules” which you are right.. there are 6 files for a module to satisfy the framework design… but modules generally do more than simply display one line. If you look at an actual module like “latest” then you’ll see reasoning for all the files. First off it is an MVC design.. so MVC means 3 separate files. Since there is an admin and a catalog piece, that means 3 separate files per side, hence the 6 files. You don’t need 50 language files.. in fact OpenCart has language fallback that allows the module to show in English until you find time to translate the module to your own language. The use of language files is nothing new in any platform. You can’t expect every mod to include 200 languages when most don’t need more than 1 to 3. As far as needing 6 files. One of the features of OpenCart is the ability to store the “admin” folder on a separate server than the “catalog” folder. This is another great but underrated security feature. So while it might make sense to share the “controller” file for both catalog and admin pieces, it is meant to be kept separate. Sometimes you gotta do what’s best in the long haul and security is more important than a few extra files.

    SEO URLS:
    Agreed. This was done poorly. It was actually done much better in old 0.x versions of OpenCart but changed in later versions and I personally agree that it should be done better. The hardcoding of the types is the more annoying part to me because as that code shows, only the 4 major item types can be SEO, the rest are just left without the ability to add a custom keyword. But this has been handled by over 100 different 3rd party mods already and there are ample options to solve this. So while it could be better, it isn’t like there aren’t possibilities, and many of them free.

    Security:
    This is the first and foremost the main focus of OpenCart. You won’t find any major security holes because the coding is done very securely. Even all the database joining and stuff is done meticulously to properly clean and filter malicious calls. There hasn’t be a real threat since back in the 1.4.7 build 2 years ago when the admin session was added to the url for enhanced security, preventing anyone from tricking you into running commands on the admin side while you were logged in. Before that was a dompdf hole which was caused by using the 3rd party dompdf library and not directly related to OpenCart.

    Conclusion:
    This is where you get a bit full of yourself with small things like reuse of code for clarity purposes and the use of the more popular MyISAM being taken as a violent act instead of understanding it as a viable alternative. To say it is the “worst” only shows that you are wet behind the ears and have seen very little. You forget that OpenCart is the fastest rising open source cart in history and its security as well as its ease of use are what make it so promising and popular. There are always bugs to be fixed and features to be added with ALL software… even with big names like Microsoft and Apple. But these do not happen overnight.. they take years.

    Your naivety and ignorance shine through on this article more than the alleged faults of OpenCart. It reeks of spite against the opencart coders and general misunderstanding instead of being a credible source of argument or critique.

    • ferisoft

      Well you say it yourself:
      “However, opencart is also a learning cart and is aimed at newer programmers.”

      and I think that is the key – it is not a serious piece of software to run critical application such as an ecommerce one on. I actually used it for a very big store since I had to so I had to customize most of it for the exact reasons I outlined in the post. I think its fair to address some of your points though:

      MyISAM doesnt support transactions so you can forget using it for applications such as ecommerce where transactions are CRITICAL unless you handle all the transaction logic in memory which opencart doesnt. So what happens if you are saving an order and one of the related queries fails? That is just one simple example. So I dont remember seeing a decent ecommerce application which doesnt use that feature (that counts to the never have seen before ones). Never mind the lack of foreign keys and handling of constrains into memory. Also to your argument its a 8 year old software and changing that takes time, it took like 2 days to change everything to InnoDb and make it work somewhat. This blog uses InnoDB, so not sure which version of WordPress you are talking about. The problem with HTML 5 is not the same issue, it is a problem of browser compatibility, which has nothing to do with features and stability.

      Coding repetition – I agree you may not be loosing business over it, but you gotta find a bunch of sub-standart developers who are fine with working in such a mess.

      I dont see any security gains of separating the admin and frontend. I see it only as convenience and separation of the logic in the application but the model is your domain layer, it should be shared between all the apps given they access the same database, having two models with exatly the same logic behind them and copy pasting code between them makes 0 sense, you can however have a CORE app in addition to admin and catalog that holds all this shared information.

      I agree with the security and I said it in the argument I havent been able to find anything major really, accept by default you can access methods like __contruct and __destroy in the url which is a bit sketchy even though it doesn’t tie to a vulnerability directly from I have seen.

      SEO URL- I really dont care about the modules, my point is to the system that comes stock and its maybe the worst possible approach, I am not sure really why its taken too.

      This blog post was inspired after a team of highly experienced developers – 4 of them worked on a big enterprise level frontend that we had to use opencart for. All the points are mentioned are true and were shared amongst all who worked on the project. It is the single most painful open source codebase I have had to work in for the reasons I mentioned and is full of bad practises. Just by looking at how some stuff is done you start to ask yourself – are those guys really handling money transactions and orders…? Yes sure its growing fast and there are a lot of garbage PHP projects that are growing fast because its easy for people to click install in Cpanel and install a small shop on their hosting…If you plan to do any serious ecommerce work I strongly advice against using it. Also can you please tell me one way, shape or form in which any of the mentioned recommended software at the end of the post is worse than opencart, because I personally cannot think of one.

      PS. I agree the language is a bit too harsh and pointy but this article was inspired by tremendous amounts of frustration after working with opencart for a few months so I wanted to really help other people by sparing them the pain they are going to go through… Also the software you gave as an example – zencart and oscommerce, I think they are garbage too for many of the same reasons listed in the post, I would use one of the ones I recommended at the end of the post.

      • Qphoria

        Being “newbie” friendly doesn’t necessarily mean it’s not professional. It may means there is some extra code reuse but it is completely optional when developing your own modules.

        You may not see the benefit is a separate admin/catalog but so what? You can’t pick apart every platform for things you don’t like or you’ll never be happy. I wish the start button was on the right side of Windows instead of the left, but you adapt. Being more secure shouldn’t be a negative, even if it means you have to have a few more files. At least not to the point where you need to make a slam article about it.

        Your biggest issue seems to be with MyISAM vs InnoDB. According to this: http://wordpress.org/support/topic/wordpress-use-innodb-by-default InnoDB is a rather newer feature… WordPress came out in 2003 and just got innodb in 2012. if that is the case then perhaps you should allow the same right for OpenCart which only came out in its current form in 2008. It has some time still. It is true that something can break in the middle of a query causing the order to be only half completed. But this doesn’t happen enough to be an issue. The core itself works and all the hype and potential of losing orders etc because of MyISAM is so rare that it’s not even an issue.

        You also seem to be comparing a “free” cart to “Big Enterprise” carts that get a ton of money for development. This is more of a hobby and is still young. There is only one main coder on the project and it has come a long way since its inception but is still young and there are tons of things planned for it. Slamming it at this point is like ridiculing an 8 yr old for not knowing Calculus.

        In the future HTML5 for the default theme is planned and I would assume InnoDB is inevitable. I appreciate that you can get frustrated with OpenCart or any software when you don’t initially understand it but really if you are going to slam OpenCart then it is only fair that you make 2 more blog posts to slam Zen and OSC and every other product you hate. I assure you that if you hate OpenCart, you will loathe zen and osc. At least OpenCart core is well tabbed in the php files. Even with all the reused code, it is readable.

        Magento may seem nice on the surface but it is also backed by Paypal which is good and bad. It is also a pain to customize. Prestashop is backed by a full team of around 50 employees but most modules on their store cost upwards of $200-$300 for the same mod found on OpenCart for $50. All carts have their own quirks. No cart is perfect for everyone.

        • ferisoft

          Anyways, you are a module developer for OC so I get where you are comming from. I wont comment any more on it so it doesnt escalate more. You are entitled to your opinion and Im happy that you enjoy using OC and working with its code base. In the meantime for anyone else wondering “Should I choose OC for my next project”, please go over the points in the article, download it, make a small module for it and see for yourself if those points are valid. It will definitely save you a lot of frustration and pain in the long run… Bottom line for me is that there is a lot better open source alternatives such as the ones mentioned.

          Just one question to you as a developer. How exactly did you verify and test that:
          “The core itself works and all the hype and potential of losing orders etc because of MyISAM is so rare that it’s not even an issue.”
          With no acid transaction support there is ALWAYS a risk that your data might not be consistent, that being rare doesnt mean it doesnt happen. Also your orders table will get locked for every order you write, so concurrency and scale in opencart dont really look achievable to me.

          • Daniel Kerr

            Hi this is Daniel the owner from opencart.

            you are an amateur! I don’t know what big project you claim to have worked on but what you have pointed out here is pathetic!

            you also forget to mention when you recommend people to use magneto is that it requires a dedicated server just to sell one product! obversely not very optimised! even with cache opencart beats the crap out of it in page load times.

            every company i have met at expos are moving away from magento because its a bloats piece of crap!

            there is a reason why opencart is the no.1 most used ecommerce solution in places like china and india, its the easiest code base to understand!

            my biggest competitor magneto has paid millions of USD to advertising fees. yet opencart is still no.3 in the world without paying a penny!.

          • ferisoft

            Your codebase is jokes I dont know how that makes me the amateur. From order handling, to session management, to blocking and concurrency to millions of unoptimized SQL queries, thousands of lines of code repetition, lack of abstraction and modularity and clear architechture. To me it looks like this was a learning project for you and it caught up because other people who want to learn PHP find it easy to get used to, which is true. Its not a serious piece of software by far and you shouldnt be offended by that, I guess there are passengers for every train…I would appreciate if you can point out how each point is pathetic too. I think it makes sense for people to see your logic behind those decisions and why they were made.

          • Kevin

            I’ve been developing websites for roughly 8 years. About 5 years ago I was asked to do a store. So I started into eCommerce.
            First store was completely made by me. Coded everything front and back end. Needless to say wasn’t the most efficient but they only had roughly 20 items at any given time so it worked well.
            A while later I was asked about another store. The customer asked if I could do the store in Magento because they had heard it could handle unlimited items and was the best. So I installed Magento and ran through it and learned it. It was on on a shared server which was recommended but I gave it a shot.
            Talking about slow as crap!!! I had only loaded about 40 items on it and it took forever on the front end. Back end wasn’t too bad but the front end was plain horrible.
            Customizing wasn’t too much fun either.
            So I asked them if I can load something else and we can see what we can get. (This customer wanted roughly 300+ items and adding more frequently.
            Did some searching around and came across Opencart.
            Built the site and added some extra modules and got everything they wanted. Ended up being around 450 items by the time I finished the site.
            At this point the Magento store was lucky to hit 35/100 on speed tests.
            Opencart with 450 items easily hit 75/100.
            It was WAY faster.
            Very easy to create Modules for and very very easy to do XML Vqmods for.
            So far in the past 5 years i’ve probably created 15-20 stores with Opencart and so far it is by far the best i’ve worked with.
            I have worked with Oscommerce (junk), zencart (good but not as good as OC), and WordPress ecommerce.
            So far the absolute worst i’ve worked with is Magento.

            Just a few months I wanted to give Magento another try and it still haven’t improved at all.
            I like to do every few months or every release I install the new verison of eCommerce CMS and go through it.
            I even offer to build some free small sites for people to see what I can do with it and if I don’t like that version of the CMS i’m trying to quickly build them an Opencart site.

            It sounds like you have a personal issue with Opencart, Opencart so far is the fastest and easiest to work with.
            Magento is the most expensive if you don’t feel like creating your own extensions.
            Opencart may not come loaded with all of the new bells and whistles but you can easily upload a vqmod or module and get it how you want.
            Magento, if you don’t feel like creating every single add on you want on your store you will end up paying a few thousand dollars just for some extensions.
            Plus if you don’t feel like creating a template and you decide to download a template for Magento well you will spend a TON of money.
            Magento is expensive and BLOATED.
            I have servers I run web hosting from and even doing a private server with 8GB of ram and 2 dual core Xeon processors and 65mb internet Magento was STILL slower then Opencart.
            I’ve tried just about every eCommerce CMS out there roughly 5-10 times each and Opencart stays at the top of the list.
            Every site I go to do now I use Opencart.

          • Richard Bill

            Ferisoft, I am not sure if OpenCart code base is a joke..its okay kind of system. Nothing great about it. But certainly Daniel is a joke. He is an idiot who just got lucky with this OpenCart system.

          • Leon

            Sorry dude, but from my experience OC should be No. 1!

            I have been struggling with so many e-commerce solutions (paid and free) and man.. I paid a lot of money just to end up totally frustrated.

            I also used magento. Its not bad but in my opinion it should be place 3 right after Prestashop with OC as No. 1.

            I am not a developer – I’m seeing OC with the eyes and as the person who it was programmed for.

          • syed nayab

            if we go by the stastics, Opencart is number two http://wappalyzer.com/categories/web-shops

          • Juan Perdon

            This article has only one name, dirty envy. Opencart is a great ecommerce solution, I installed on servers with limited hardware and works better than anyone.

            Prestashop maybe, for the moment i use opencart.

          • techchattr

            Envy what lol ? :D
            If it was envy why i didnt rant on Magento, they make a lot more money than DK lol :D

          • Ravidev Thangavel

            Daniel Kerr is correct. I am using opencart. It is fantastic. I support OC

          • SwampCritter

            Thanks Daniel,

            I have used Zencart, then PrestaShop, then moved my site to your code. It has been a few years since leaving PrestaShop because of performance issues. I loved their admin tools and their look, but for some reason the performance was horrible. I replaced it with OpenCart on the same server and performance was no longer a problem.

            I assume that PrestaShop has improved since then, but I haven’t seen a need to leave your software.

            Thanks again.

          • Dondon

            But you still stupid person…. and that’s the bottom line…

          • Richard Bill

            OpenCart will not be #1 Daniel just because you head it. You know dickheads do not go higher. C’mon have sense to accept criticism.

          • Daniel Kerr

            I don’t know how you have the balls to criticise my work when you produced this:

            http://salonmelani.com/

          • techchattr

            You really are an idiot. This is my first website, which I created when I was 14 , six years ago and yes it sucks. But I dont care to admit that and to take critics for it. You on the other hand are a complete retard, who doesn’t understand what constructive critisism is and think through it. I haven’t seen any meaningful answers to my points, nor to the topic on Opencart forum, where the guy clearly points a lot of weak points of the system and you call him an idiot. Instead of talking trash, you may want to try to explain in plain terms how those points dont make sense. Can you show me some serious companies and big stores that use opencart? How much of opencart codebase has been tested? How do i scale opencart for many app servers once I start getting traffic? How do I override core functionalities without changing the core and without using this devilish invention VQMOD? The list just goes on and on and on and on… Like don’t get me wrong, its great for someone new and with poor understanding of PHP to work on and learn. Its definitely not good for someone who wants to do business with it (which i guess is the main point).

          • Daniel Kerr

            So where is your big open source project that gives you the right to criticise my work! I have coding in php since 1999 so thats 14 years of php coding experience on top of what ever programming language the c64 ran back when was 7 years old!

            you seem to think you have a lot of experience under your belt at 20. I wouldn’t trust a 20 year to work on a big project.

            apart from the opencart site that does over 1 million unique hits a month, there is also:

            http://giftshop.redcross.org.uk/
            http://www.officeking.com/ This site pulls in quite a few mill a year.

            but you seem to have changed the subject from framework to the application.

            before you continue arguing with me you need to actually ask your self can you ever admit when you are in the wrong!

            I have studied the history of many OOP languages and can tell you that there is not one OOP framework in PHP that follows the correct principles of OOP programming. developers are supposed to be able to show ERD diagrams and visually displaying the program before even writing one line of code. with frameworks like ZF and symphony ERD goes out of the window because they use static methods for a lot of things.

            “How do i scale opencart for many app servers once I start getting traffic?”

            many apps servers! what does that mean? you mean different applications running from the same framework? you build each application starting from the index.php file and include what ever library classes you require.

            “How do I override core functionalities without changing the core and without using this devilish invention VQMOD?”

            I have never recommend vqmod to anyone. its not part of the opencart core yet!. it can be used to replace parts of a file that already exists to change the behaviour of the file. phpbb has a system similar to vqmod called automod. the advantages are that you can have multiple mods on a single cached file. I don’t believe symphony has a system that can change just parts of a code in a file. I imagine it would replace an entire file or which ever method is being called. not the best way integrate multiple extensions.

            “Like don’t get me wrong, its great for someone new and with poor understanding of PHP to work on and learn. Its definitely not good for someone who wants to do business with it”

            Like anyone in their right mind would listen to some one who is 20 years old on how to run their business!

            you have recommend people to use magento. I know plenty of companies that have had to switch from magento because its costs them to much just to maintain the site. one company i worked for took 9 hours to fix a tax bug. that is not cost effective, but some one like your self at the grand old age of 20 is giving people advice on how to run their business.

          • ferisoft

            I read an i laught: I don’t believe symphony has a system that can change just parts of a code in a file.
            and you claim to understand OOP. I will stop since otherwise I have to send you an invoice for my time that i spend on answering your jokes… People who know programming will draw conclusions after reading what me and others said…

          • Daniel Kerr

            you and who? there is only you, steve and noname who i suspect is you. you really are a nobody!

          • endbellen

            The guy who wrote the article is most likely a bellied. Oop is shit. Cunts love it.

          • Richard Bill

            Daniel…you are shit for sure. No doubt on that.

          • jonnyynnoj

            “before you continue arguing with me you need to actually ask your self can you ever admit when you are in the wrong!”

            Incredible.

            I hope this doesn’t cause offence to you, the mighty DK, but is there a chance (albeit a very small one), that maybe, just maybe, it is you who is in the wrong?

          • malinda

            hi, i’ve done e-commerce projects using Open cart, Magento, prestashop , and pure PHP, yes open cart is not 100% OOP , but i recommend Open cart for the e-commerce

          • octp

            Screw you Daniel, screw your OC, screw your lousy codes and lousy database.
            But thank you for letting many developers earn tens and thousands of bucks using your lousy shit.
            Btw, wtf is ferisoft?

          • Daniel Kerr

            So where is your big open source project that gives you the right to criticise my work! I have coding in php since 1999 so thats 14 years of php coding experience on top of what ever programming language the c64 ran back when was 7 years old!

            you seem to think you have a lot of experience under your belt at 20. I wouldn’t trust a 20 year to work on a big project.

            apart from the opencart site that does over 1 million unique hits a month, there is also:

            http://giftshop.redcross.org.uk/

            http://www.officeking.com/ This site pulls in quite a few mill a year.

            but you seem to have changed the subject from framework to the application.

            before you continue arguing with me you need to actually ask your self can you ever admit when you are in the wrong!

            I have studied the history of many OOP languages and can tell you that there is not one OOP framework in PHP that follows the correct principles of OOP programming. developers are supposed to be able to show ERD diagrams and visually displaying the program before even writing one line of code. with frameworks like ZF and symphony ERD goes out of the window because they use static methods for a lot of things.

            “How do i scale opencart for many app servers once I start getting traffic?”

            many apps servers! what does that mean? you mean different applications running from the same framework? you build each application starting from the index.php file and include what ever library classes you require.

            “How do I override core functionalities without changing the core and without using this devilish invention VQMOD?”

            I have never recommend vqmod to anyone. its not part of the opencart core yet!. it can be used to replace parts of a file that already exists to change the behaviour of the file. phpbb has a system similar to vqmod called automod. the advantages are that you can have multiple mods on a single cached file. I don’t believe symphony has a system that can change just parts of a code in a file. I imagine it would replace an entire file or which ever method is being called. not the best way integrate multiple extensions.

            “Like don’t get me wrong, its great for someone new and with poor understanding of PHP to work on and learn. Its definitely not good for someone who wants to do business with it”

            Like anyone in their right mind would listen to some one who is 20 years old on how to run their business!

            you have recommend people to use magento. I know plenty of companies that have had to switch from magento because its costs them to much just to maintain the site. one company i worked for took 9 hours to fix a tax bug. that is not cost effective, but some one like your self at the grand old age of 20 is giving people advice on how to run their business.

            also relating to your post about symphony. after looking through the code its just a mashup of other projects libraries. I don;t think symphony came up with yamil yet because mageno uses it they say magneto is using a symphony component.

          • http://www.thefactsite.com/ Luke Ward

            Mark Zuckerberg was in his early 20’s when Facebook was founded, he seemed to do a good job at such a young age? And just because you’ve had 14 years of php coding experience doesn’t mean you’re the best, and the thing that makes you so much worse is that you’re extremely cocky and can’t take constructive criticism. I have used opencart for a few projects and dislike it for many of the reasons above – would I use it for one of my own projects? Yes… I’m fairly new to php, so I would use it.. however… reading this, and seeing how much of a bellend you are, I wouldn’t bother with opencart… I know my one opinion doesn’t count in your mind, but you won’t be “the best” forever – not with that attitude.

          • Cozzbie

            You call Techattr’s piece “constructive criticism”? I mean the post started with “Never use opencart”, how is that constructive? I won’t say that Tech doesn’t raise valid points, he does, but going through the banter between him and DK, I will say that they are both very similar minded people bashing themselves for pretty much the same things ie claiming they are both PHP gurus.

            Having said that, I must say that the onus was on DK to show more maturity in his approach. In the world of PHP you always meet criticism and getting worked up over it all is never worth it. He really should’ve answered some of the issues raised by Tech and show more zeal towards the “educational” pattern he claims opencart was built on in the first place.

            Now to Tech, lovely piece of an article, shows lotta indepth that even I never considered. I’m an opencart user too and I like it, it works, and quite well too, good luck to all of you out there looking for “advanced php frameworks” that work. Sadly you seem to miss some core points. Ecommeerce frameworks, should meet a basic standard in the very least, and EASE OF (FRONTEND) USE should be number 1, and opencart does this well. You mentioned Magento, but failed, (in the queer constructive manner that you claim) to point out that Magento isn’t easy to setup and costs a fortune to maintain. Prestashop is a good option though, kudos

            Once again, lovely piece, at 20 you have shown great insight on programming that even I at 29 find puzzling but instead of bashing someones good work so bad, be more constructive, showing better alternatives in every criticism and if opencart doesnt solve your problem, make a framework we all can use and enjoy and tell us how easy it panned out, and to DK, I think name calling shouldn’t be something an advanced person like you should be getting into, but a more constructive approach, where users like me can actually learn something new with every new line you write should be embraces

            I remain very loyal to the GURUS of this thread.

          • ferisoft

            Well most of those points have already been raised many times and DK has plainly disregarded them and bashed anyone who raised them. You can see numerous examples both here and on OC forums. after such complete denial of the truth i dont think i couldve named the article differently because the attitude of the author shows what the future holds for this project.

          • SwampCritter

            I didn’t like the name calling between either of you. It seemed too much like WW Wrestling.

            However, I can see how DK could be offended. Just looking at the table structure of OC shows he has dedicated a HUGE chunk of his life toward the product. The product works and it is a lot easier to use than you give it credit. It is great work and it is amazing that one person did most of it with no guarantee that there would be a payoff.

            I also agree with Cozzbie that you show a lot of potential. Go write a replacement cart. Competition is good. Can you do it using razor (.cshtml and C#)?

            take care, and thanks for the article

          • Richard Bill

            He man…no one asked him to do any favor. He is making money because of OC that is why he is supporting so DK (or better DH :P) should stop ranting about that. He is not in community service. He gets offended like a child every now n then and then starts crying.

          • Richard Bill

            I agree with you ferisoft.

          • kevin

            There was nothing constructive about the rant.
            It was plain dissing.
            Daniel Kerr isn’t cocky about his program, he knows it works!
            Techattr seems like a wanna-be cocky douche him self.
            Does he have an eCommerce CMS out there for millions of people to use???
            Daniel Kerr has the credentials to back up what he says.
            Techattr doesn’t

          • ferisoft

            What credentials did you read his replies in this post?

          • Lasse Rafn

            Daniel is posting on TechChattr – wtf?

          • FSU_nole93

            Zuck is a bad example. He had the biggest business sharps behind him, you can’t accredit Facebook’s success to him like that because of the stories his Publicists have spewed up and spit out on the internet to fuel American tech dreams.

            While I think it was harsh, Daniel’s implication of experience being King is true. You can’t replace it.

          • FSU_nole93

            Daniel, thank you for all of your work with OpenCart. It has allowed me to eat, and it has allowed many of my family members to eat as well. Bless you.

          • Richard Bill

            Your 14 years do not seem to have yielded anything useful which would have made you come up as a mature man in your comments. Looks like you are still stuck at 7 years of age.

          • Guest

            ad dumb statements towards me; I don’t give a shit anyway, why should I? – Your opinions are dumb and your behaviour is like a kids.. I’d say you’re 14 years old, not that you have 14 years of experience..

            Bye.

          • Lasse Rafn

            You’re an ignorant fuck. I can’t believe someone can be so annoying. You’re like a fucking Jehovah at someones door.. Preaching all your shit, that you probably just heard from a book or teacher back in ‘your days’, when your skills was relevant and you mattered.. Get down from the high horse, you’re not special.. Or, are you? Show me something, and no I don’t want to see some clients ugly webshop which, not at all, follows the HTML5 and CSS3 standard (‘OH HUMANITY!!!!!?’), show me something that allows you to be so cocky, let me see your huge Open-source E-commerce platform with millions of users. IF you can’t show me that, shut your f*cking cunt and get over it, and stop using OpenCart. Get the sand out of your vagina, remove the itch from your ass, and stop being so butthurt, because some code does not follow your way of coding.

            – This is coming from a person who is not very ‘fond’ of OpenCart either, but I see the difference between a cocky bitch, and a good developer, pretty well…

            Bye.

          • kabatza

            - Opencart is not perfect – but nothing is!
            – Code is repetitive but this is not really a problem – if you don’t like it you can easily change it if you want.
            – The SQL queries are again easy to change to your liking.
            – Why don’t you spend a couple of months and make your own perfect fork version and let us see the result…you are welcome to do so. Oh, and do it without using vqmod, the “devilish invention” as you say.
            – Vqmod is FANTASTIC for the development stage. In the production copy files should be replaced with the cached-modified ones.
            – What is professional or not is very subjective. following the trends is not necesary professional.
            – I don’t know why you sugest to people to use Magento… their comunity eddition sucks big time!! Prestashop is OK and may actually be better for those who cannot code at all, but modules and extensions still cost more than the opencart ones. I personally hate the auto-install im prestashop.
            – “How do i scale opencart for many app servers?” is this a joke or what? what does this have to do with opencart? You create a cluster of servers behind a load balancer. The more the better of course and there is no restriction like with Magento Enterprise where you have to pay extra after a number of servers. Optionally move the admin side in a separate server (very easy to do with opencart).

          • Jason Judge

            And there you go, an example of just why OC has stayed in the dark ages. To improve any product, it has to be accepted that it is not perfect. If all issues are rejected as a personal criticism about who’s willy is bigger, then it’s a lost cause. Don’t go near this thing.

          • swed

            I absolutely second you in all but your
            last sentence! I been following OC since v.1.4 and have come to really like
            it… I have now however become wary. It wasn’t coz of ferisoft’s article that I find
            interesting but far from constructive. No, DK’s totally unreasonable answer
            here made me reflect on the state of OC’s future development and it also
            confirmed that the author of OpenCart is in fact not the least open minded!
            That’s serious!
            After witnessing DK’s childish outburst
            my faith in him is gone. Now I also understand why I feel that the team behind
            OC constantly is being held back. It’s a pity that DK have become a hindrance
            to the development of his own creation. If it wasn’t for Qphoria, who is rock
            solid, I would migrate to another cart this very evening.

          • goinindia

            Hi,

            I am a newbie web developer. I designed my first website with prestashop. It was a great first experience.The code in prestashop is easy to replace and security is also great, But then I came across Magento and was amazed at the software and what it offered. After spending 2 whole days trying to learn magento I came to the unfortunate conclusion that magento required a team of 4+ php coders just to setup and do basic tasks which I was doing using prestashop without much of PHP knowledge put to test.

            So finally after that realization sunk in and after being depressed(about it for a couple of days, and a drink binge to recover), I decided to give opencart a try just to cheerup (I had heard horrible things about opencart , including this article ).

            I had the most amazing experience using opencart I would like to say, it was like an epiphany…I realized for the first time what I was dealing with. Here there was this amazing piece of work which could help me setup an almost flawless website in minutes. I had the support of almost 1700 free modules to work with and the design was totally editable to my requirements.

            Now I am not a great programmer like ferrisoft or some of the other guys… but opencart has made me a truckload of serious money. I really dont mind if the sql uses mylsql (or any other for that matter) as long as it works correctly and my clients are happy with the end result. Because of opencart I can design a website for a fraction of the cost what big designers charge and I can deliver a fully functional website in less than 2 hours………

            In the last 1 year I must have designed over 100 websites in opencart and have zero complaints from my clients. I have no complaints about the code of opencart , I have no complaints with daniel K (cmon man he is actually giving this awesome software for FREE).

            After going through the article and reading through the comments section (as recommended by the author of this article) I have come to a few conclusions:

            1) Daniel K is an extremely cocky SOB , but if I would have created a great software like this I WOULD BE COCKY AS HELL especially if I was distributing it for FREE.

            2) ferrisoft and likechattr are the same single person.

            3) I can understand ferrisoft’s anger with opencart since it would take away a significant part of the income he could generate by using his great undertanding of PHP , since even a newbie like me can create a great working website in minutes without being as knowledgeable like him.

            4) ferrisoft has amazing grasp of php and looks like he could be a great coder someday. Maybe even better than daniel K if he creates a free ecommerce platform better than opencart without any of the flaws of opencart.

            Disclaimer:

            1) In the past one year I have made a living out of developing websites using opencart and would say that I am biased as hell about opencart as it has made me a lot of money.

            2) I am a PHP and programming newbie so a free software like opencart has provided a good source of my livelihood.

            3) I am in no way associated with daniel K and quophoria to write a positive review about their product but my parents would like to bestow their blessings on daniel K for providing me with a opportunity to make a living.

            I would request ferrisoft to create a mod which plugs all the errors in opencart and post if for free so we all can benefit from his knowledge.

            Even better if he can create a free shopping cart with all this features it would be even better since with his knowledge(which he has been kind enough to share with all of us here he has been quite open about having the knowledge of how to improve the software).

            I would be quite looking forward for a future release from ferrisoft.

          • Richard Bill

            Seriously daniel don’t you have any other work but to scratch your balls and criticize people. You cannot pull out someone’s initial days website and rate them because by that comparision first version of Opencart was even shittier than OS Commerce.

      • Andy

        Firstly, if it took you a month to get into OpenCart development, you aren’t really a developer.. It took me less than 1 week to get a website online, with a customised wholesale system, and quite major modifications. So, either my PHP (which I’ve barely touched in 3 years), is really good, or…

        In regards to code reuse, I think the current design is actually good for business. It’s very easy to understand, and VERY fast to develop for in practice. Yes there are more lines of codes. But, they invented Ctrl+C for a reason and there is no reason why you can’t speed some things up.

        Also, I find it hilarious you mention Magento. Magento is great if you have site developers who don’t know PHP. But, every layer in magento is a complete headache. The only thing that works is the modules system (when the layout XML is properly documented, which it often isn’t). Even if code reuse is better, it takes far longer to develop a module for Magento than OpenCart.

        Finally, it doesn’t matter what you do with it, Magento will always be slow (we are running PHP 5.5 with Opcache and its still noticeably slower than Opencart).

        Also, can you name any benefits IN PRACTICE you have seen from using InnoDB on an ecommerce site? In practice, all I’ve seen are broken websites caused by the foreign key constraints failing (in cases where it wouldn’t have been a problem anyway).

        Unless you run Amazon.com, I don’t think you’ll really notice any benefits.

        Also, strange you recommend against VQMod because of the XML.. When you need XML to layout your interface in Magento (which is a pain).

        I’m sorry, but are you seriously recommending Magento instead of Opencart? If you are running enterprise, yes. For any other business which doesn’t generate millions in profit per year? The additional development costs will drown you!

        • ferisoft

          “Also, can you name any benefits IN PRACTICE you have seen from using InnoDB on an ecommerce site? In practice, all I’ve seen are broken websites caused by the foreign key constraints failing (in cases where it wouldn’t have been a problem anyway).”
          You are a morron.

    • Victor Hornets

      Wait… What’s wrong about burning churches?

    • http://somewhere.com/ FMN

      Thanks Qphoria, I mostly agree with you.
      The best part is, OpenCart is simple and nicely structured, be it database or folder/file. It is so easy to learn as compared to Magento & Prestashop, which I have installed and played.

    • Christof Coetzee

      I’ve been building ecommerce sites since 2000, worked a lot with oscommerce back in the day and later Magento (the beast).
      About 2 years ago I evaluated some alternative platforms because the TCO of Magento is too high for most owners and also an over-kill for most projects.

      I’ve been using Opencart ever since and I have to admit that under the hood Opencart does look a bit naive and basic, but I’ve learnt to embrace this as it makes the codebase VERY easy to grasp and modify, you can modify or build an Opencart extension or module in 10% of the time compared to Magento – less frustration and easier to maintain.

      No software is perfect and I find that Opencart is 100% sufficient for most of my ecommerce needs, sure you will get the odd project where i.e. Magento or a PAAS like Shopify and Bigcommerce is the better solution, and then you go with that, but Opencart will serve you well for most of your projects.

      • SwampCritter

        lol, your comment made me think of KISS – Keep It Simple Stupid

        There is a beauty in simplicity.

        “If you can’t explain it to a six year old, you don’t understand it yourself.”
        ― Albert Einstein

        “Like all magnificent things, it’s very simple.”
        ― Natalie Babbitt

        “Life is really simple, but we insist on making it complicated.”
        ― Confucius

        “Simplicity is the ultimate sophistication.”
        ― Leonardo da Vinci

        “Our life is frittered away by detail. Simplify, simplify.”
        ― Henry David Thoreau

        “The greatest ideas are the simplest.”
        ― William Golding

        “Nature is pleased with simplicity. And nature is no dummy”
        ― Isaac Newton

        “A child of five could understand this. Send someone to fetch a child of five.”
        ― Groucho Marx

        • Atanas

          Absolutely agree!

  • Daniel Kerr

    so after reading your profile i suppose you recommend a code base like Symfony2.

    wow! how many years has that project being going now? I remember it just starting out about 10 years ago. and its still scraping the the bottom.

    talk about flogging a dead house. its like zend framework. another fad thats dying the death it deserves!

    no serious open source project uses them because they are bloat.

    • ferisoft

      Yeah except Drupal 8, PHPBB and so on that use Symfony2 components. Also looking at the most popular packages on composer I see mainly packages that are either symfony ones or part of the full-stack symfony framework distribution:
      https://packagist.org/explore/popular

      Actually the architecture behind the full stack Symfony2 framework is way superior than the MVC framework thats in the core of opencart for a complicated application like a full-blown shopping cart. Thats not even my point, im not recommending using Symfony or Zend or whatever else, write it yourself if you want to reinvent the wheel, thats not the issue, the issue is the lack of best practises and solid architecture behind the software that you built, heck there isnt even a testing framework in it, how do you guys write tests for stuff in OpenCart…oh wait its not even tested… :)

      • my2cents

        1) FROM: http://forum.opencart.com/viewtopic.php?p=72582#p72582

        General feedback and suggenstions about OpenCart

        by cstuder » Tue May 18, 2010 5:50 am

        cstuder wrote:
        Coding guidelines
        The trailing ?> are also not required and always the source for potential problems.

        DK reply: Idiot

        2) FROM https://github.com/opencart/opencart/tree/master/upload/system/library

        removed ?> from all files with classes in them

        took DK just a little more than 3 years to admit even that!!!!

        • cprksh

          i think repeating of code is acceptable with it’s best loading time.

          • my2cents

            My opinion is that nothing should be write twice.

            When you need to change it, you need to change it twice. What happens when you have the same stuff repeated in different files. Why just not refactor it?

            Repeating code makes controller actions too long and not very readable.

            Translatable text should not be handled inside a controller action.

            Why store html encoded data in the database?

            Look at the auth code for customer and admin users. The password crypting algorithm is repeated inside every query.

            That is very error prone and silly.

            Opencart has an overall clean design. Coding leaves a lot to be desired.
            So developers should focus on improving the underlying framework or move to a maintained framework. It does not need to be ZF2 or SF2. Could be Yii, kohana, laravel.

            It will pay back…at least just to avoid that totally unacceptable thing called vqmod.

            Extension can be added using mixin-like classes, class inheritance (kohana cascade for example) and especially events.

            using xml to instruct how to replace/insert/delete part of the code is quite illogical for a serious programmer.

            The main developer should stop adding new features and rethink in new terms some of the basic stuff.
            It’s not 2004 anymore. A lot has changed and good things are now in PHP that weren’t there before. Bringing all that into openacart will make it a better platform. …but i understand there is a lot of business around the extensions….

            ..but again…my 2 cents

          • ferisoft

            Keep in mind loading time and scale are not the same thing. What you need for a web environment is scalability not just fast load times from one app server. There are no scalability mechanisms in opencart. There is some sort of retarded file cache thats not distributed and slower than just querying the DB, and you cant abstract any of the other components such as session, filesystem, etc in order to scale them. So as soon as you start to grow, you either have to rewrite the entire system or export everything, delete it and start from scratch, which was the whole point for writing this article. Also as soon as you start getting some sort of concurrency you will have tremendous issues since MyIsam locks on table level not row level.

          • opencartuser

            You mean like this?

            if (!$this->error) {
            return true;
            } else {
            return false;
            }

            instead of just

            return !$this->error;

            i use opencart but the same code over and over again…kind of a copy and paste framework.

          • techchattr

            Or 1000s of lines of:
            $this->data['heading_title'] = $this->language->get(‘heading_title’);
            $this->data['text_my_account'] = $this->language->get(‘text_my_account’);
            Notice key names…same.. o_O

          • splatterHead

            Would you little bitches stop the clatter?
            If feri soft ? has better ways for solving code then write them and submit them to use. shiz there is always a better way of doing things so do them and make them public. standing around pointing out flaws is not helping any one, it sounds like your smart so write some fixes and lets see if it improves something.

            Daniel, why do you care what a guy who has started a fight just to make money advertising other carts thinks!

          • techchattr

            Im not making any money from other carts nor are they perfect. But they are much better than OC simply because its hard to be worse in a technical aspect. Pointing out flaws helps everyone its called bug reports and its a concept that doesnt fly very well in the oc community as you can see from dk replies. On why i wont fix it because the fix would be shift+del and start from scratch any patching here and there wont help its just too flawed.

          • goinindia

            so ferisoft and techchattr are the same single persom , with MPD

        • ferisoft

          Yeah I see most of the points clearly overlap, but DK replies in that post are hilarious. Clear lack of knowledge, clear lack of professionalism, clear lack of experience. Just goes to further highlight my point that you shouldn’t ever be using this system after reading what its author has to say.
          This is what made me cry laughing though:
          “You don’t know OOP! go back and do more research and try and filter though the crap thats put out by idiots! Like the people at Zend.”

          If you think the people at Zend are idiots, uhm why did you voluntarily decided to use their product(PHP)? At least I mentioned you were an idiot but I was forced to use Opencart, i didn’t choose it…

          • kevin

            Doesn’t look like his “lack of professionalism” has hurt his rating on Opencart downloads lol
            Still going over every other eCommerce solution out there haha.

          • ferisoft

            Its great that people like it I would wonder why any DEVELOPER would anyone download it after reading this post though and again that was the whole purpose of the post, it was intended for developers by a developer.

      • Daniel Kerr

        components are different from the actually framework. also Symfony creators the people who created many of these compents. they are taken from other projects and just used in Symfony

        • ferisoft

          Really, how are they different? :D

          • Woods

            Feras – I’m no programmer, but I do know a thing about ethics. You straight up attacked this software. Then get butt hurt when you get attacked back? You’re a hypocrite. I’ll chalk it up to youth and hope that one day, you’ll look back and see that you are the asshat here.

            I tried Magento and unless you’re a programmer, forget about changing anything on your own.

            I’m using opencart and it works. It’s fast and does everything I want it to do, reliably. You may argue with all this techno jargon crap, but there is one point that you will not win. It works really well and is easy to configure and modify.

          • ferisoft

            @Woods
            I dont think you read the article or understood it. It is targeted specifically towards developers and it stresses weak points in OC’s architecture and why its not suitable for any SERIOUS e-commerce work. Sure you can install it and sell a few products, handle a few orders a day and all that, but as soon as you start getting thousands of visitors it will start showing its weaknesses. The post is mainly targeted towards people who are developers and are considering OC and a few other options as a starting point for a project. It clearly outlines the problems with it along with sample code. Anyone is free to interpret them however they want. I am glad that the software works for you, unfortunately it didn’t for me because of the reasons outlined above, so I decided to share them and spare a lot of headaches for other people.

            I don’t recall where I am being butt hurt or hypocrite really? I show clear examples of flaws in OC and all the people who commented seem to see them. The author DK, hasn’t come with any solid answers to those, except for bullshit and bullying not towards me only, but anyone who ever dared to argue his ridiculous architecture decisions (you can see references to threads in the OC forums where other people voiced similar issues as me), instead of point responses and explanations to those decisions. I dont understand how my first html learning project that is still online (from 6 years ago) is even remotely related to the points in this post?

          • my2cents

            …and did you know that he stores htmlencoded data into the database, because he’s too lazy to create a plugin system to escape variables in the views???…well he encodes all the request parameters…so when you try to use smtp authentication with password containing htmlentities you cannot connect….but he have had only 14 years to rethink that…

          • Woods

            You’re blowing things way out of proportion. To attack a guys livelihood with exaggeration is morally deplorable. One day you’ll get cornered and maybe then you’ll realize the error of your ways and why DK is pissed and striking out at you and others. Technically I’m sure that you make some good points. Ethically your in big trouble here. Check yourself.

          • ferisoft

            If you are not a developer how do you know it’s out of proportion, when the article is mostly technical? The system is fundamentally flawed on many levels and I am objectively reviewing it by examining the code and providing clear examples. It’s not a personal attack to anyone and DK’s name is not mentioned anywhere in the article, the only personal attacks came from the author really. His livelyhood is not of my concern (its called freedom of speech in the developed world), again the point of this article is to spare fellow developers tons of pain and as you can figure after reading the comments I am not the only one.

            And I see you are clearly defending the guy, which would be OK if I was the first raising those issues so he had no time to address them, but those are fundamental problems that were raised many many times about OC, and the author did nothing except to personally attack the people raising concerns and giving advice (calling them idiots, morrons, incompetent etc), while actually the only incompetent person seems to be himself fooled by his denial to accept the truth and constructive advice. No serious person who develops software and receives valid and polite notes about clear problems answers like that…

          • richarddale

            Woods you’re talking shit my friend. Nothing wrong with expressing an opinion. I’m a front end guy and I’ve just used OpenCart. Most of its templates and CSS are out of date but I didn’t find the system too bad. It might not work too well for large projects but for smaller stores it worked great for me and my client loves using it.

          • R. Rogerson

            Out of date? It’s a mess.
            2 JS versions for adding to cart – called from 2 different locations.
            JS calls in the header (local only, no CDN’d stuff).
            Half the CSS seems redundant … not to mention the Div-itis and ID/Class-itis.
            (And don’t get me started on set heights and position absolute – changing 1 thing requires modding 6 others!!!)
            (Fixed width? In this day and age? Really?)

            Lets all be honest here – “it’s acceptable”.
            It’s not good, nor great – but it’s free, and fairly simple/easy to make basic/minor changes.
            The code base, the structure, the naff queries, the design – all of those are bearable for mom-and-pop stores. They don’t know what’s under the hood, and generally don’t want to. It runs, it does the job. When they want something serious, they leave and migrate to a proper ecommerce platform.

            So OC is acceptable as a launcher, and passable for small outfits.
            For any serious sites (speed, usability, accessibility, seo etc.), it’s a lot of work to fix, to the point you might as well go for a different platform (or fork out over 500 to get it patched … then struggle with updates!)

          • stefa

            great post! I can only aggree on many of the aspects you mentioned. Can you recommend any alternative free Ecommerce product similar in performance and complexity to OC?

          • techchattr

            I tend to like Magento, but since you say similar in complexity and performance, give Prestashop a try: http://www.prestashop.com/
            Its definitely much better written than OC and its more feature rich out of the box too…

          • goinindia

            ok so finally the cat is out of the bag you are a magento developer… I can understand the pain opencart has caused to your bottom line

          • Steven Mars

            I’ve done magento development. For a client who understand security risks, and a developer who understands how to turn cache on, it’s a good solution. FYI I mostly do prestashop work though.

          • goinindia

            I was doing prestashop in 2010-2011 but discontinued because of 2 reasons:
            1) Apps were way 2 expensive
            2) Software was very heavy so website used to take some time to load.

            These problems were resolved by opencart. But yes it did come out with its own set of problems. The checkout of opencart is no where near to the awesome checkout of prestashop. Also developing in prestashop is much easier. Also prestashop code is way much better than opencart.

            But everything else is much better in opencart

          • Open Cart User

            I’m currently using Open Cart because it seems like the most cost effective solution (for me) to run an online shop. I’m no coding guru, but I can tweak things and get by so open cart suits me well. One thing I must agree on is that Daniel Kerr is a total W@NK3R! I do not understand why he has such an overly defensive posture about everything. I once posted in his forum about a potential security flaw. I was then banned from the forum. When emailing to ask why I was banned, I just got crazy aggressive rants like you see in this thread. This guy is sure to have a heart attack before 50 unless he learns to relax!
            I was previously using Cubecart which is quite similar., but not “free”. I’ve not found a product like Opencart(plus paied addons) that actually works and is equally cost effective. So at least for now I will keep using it. When you consider setup costs, monthly fees etc, I find it works out OK. There are however features that you must buy as an addon that really should be standard in the program. (product options updating price etc) It is just such a shame that the admins are such egotistical @holes as if they approached it with professional attitudes they could really make it great.

          • Steven Mars

            I would switch to prestashop, 1.6 is really good

          • Dave N

            Shame that it’s gone so far and neither side can back down.
            Here is my 2c:
            When deciding on an e-commerce solution there are many factors. The specification should dictate what you need completed. The initial points in the post are valid (code repetition isn’t great, polymorphism seems misplaced if non-existent, transactions are critical…) but for the majority of simple online stores opencart is a godsend. It’s simple to setup, simple to modify (small modifications/touch ups) and simple for non technical users to administer.
            I like using it for simple stores that have less than 100 products and roughly 20 transactions / month.
            I don’t mind VQmod either for simple things, at least it’s simple to see which core files are modified. Not promoting it but not bagging it.

            Summary:

            This article does attack a free bit of software. The points are valid but represented with an opinion which (in my opinion) is too harsh.
            I agree that there are numerous improvements that ‘could’ be done and probably should be considered by the developer (opencart 2.0?)
            I will continue to use opencart whenever the need arises telling merchants that we are using Opencart and noting down potential limitations should the store blow out be hugely successful.

        • imho

          4 simple and hopefully useful advices:

          1. (try to) learn english language
          2. (try to) learn serious php coding
          3. (try to) learn a couple serious frameworks (they are actually a little more than their names)
          …after that, you can comment on them.

          (if you ever used zf2 or sf2 you would know that they are a collection of decoupled components, you can pick what you need for your projects….many other projects actually do that)

          4. if you haven’t appreciated the tone of 1.2.3, remind that to yourself when you post replies to other people.

          the same goes for opencart:

          before criticising opencart, keep in mind that the project is mostly an effort of a single individual offered for free to anyone (including yourself…the reader). Take a look at the overall design and recognise that it was clean even at the time when oscommerce ruled and presta hadn’t a single front controller.

          people with more skills than the oc developer are welcome to join the project and help improve it bringing their knowledge and contributions. the oc developer(s) is(are) welcome to review contributions without offending and tagging people as stupid.

          • Daniel Kerr

            my poor english is because im typing on my phone.

            also your lack of experiance as Programmer is showing. you should know its harder to code simple code than complex code. writing optimized, straight farward code takes years of experiance.

            also both of you are cowards to critise me when you have not posted links to
            anything you have done!

          • imho

            So if you haven’t seen any of my work (which btw is property of the company(ies) i work(ed) for), how can you say that i (we, everyone that is not you) lack of experience. I’ve been a software developer for 20 year. I worked and work in c, c++, java, php, ruby, perl. I wrote a couple of php framework and carts for customers back in 2002.

            I agree with you that it’s harder to write simple code, because REPEATING CODE IS HARD TO DEBUG HARD TO READ AND TO CORRECT. so it makes you waste a lot of time.

            WRITING THE SAME ALGORITHM IN MANY DIFFERENT PLACES IS NOT SIMPLE CODE, IS JUST PLAIN STUPID. Why is it so difficult for you to see that?

            In my opinion, Opencart project, your project, started with a clean design. Merits to you (the 2nd part of my comment was weighted on your side). But wake up, it’s not 2004 anymore.

            Try to be a little humble and listen to what other people are trying to tell you.
            The impression you give is that you flag as stupid every(thing|one) that you don’t (want to) know and that is arrogant.
            Not everyone who’s not you is stupid: that’s just statistics. And learning from others makes everyone better. If you don’t think so, good luck to you.

            As a proof of good faith, please get rid of those language assignments in controller methods.
            Just build a view plugin to do that automatically. Controller methods should only let entities (raw arrays in opencart case) and services play the game…

            …but these are just humble opinions of an inexperienced and stupid guy…tomorrow i will ask my company to fire me for being so.

          • Daniel Kerr

            “I agree with you that it’s harder to write simple code, because REPEATING CODE IS HARD TO DEBUG HARD TO READ AND TO CORRECT. so it makes you waste a lot of time.”

            this is what search and replace is for!

            another big the difference between opencart as a framework and ZF and symfony.

            Symphony uses the template system twig that is nearly 1mb.

            Zend frameworks template system includes 40 files on every page load!

            OpenCart template system is 104 bytes and is just one file. On a page load there i s generally 90 includes.

            Symphony uses swift mailer which is over 1 MB.

            Opencarts mail system is 10.4kb

            So a part from copying and pasting code to produce each desired page which is the more efficient framework?

          • noname

            Daniel, search and replace is really not a tool for good programmers.
            “if (substr($request->get['route'], -10) == ‘__construct’) {” are you kidding with that kind of code? don’t you know what regexp language is? e.g.

            preg_match(‘/__construct$/’, $request->get['route'])

            The project size is not a measure for speed, by comparing relative size and feature capabilities, its way more richer that yours opencart “template system”. They has smart caching too, so code size is not related to speed in any case.

            Btw. look at the symfony 2 validation and I cannot imagine what cases you cannot cover with that validation component.

            And don’t try to invent all stuff by yourself “your own opencart mail system” “your own template system” wtf? who cares. better use 3rd party components which is used in many systems, has many bugfixes and are still maintained.

            Its looks like you are some kind of person who are closed in your room and don’t read any news, any books, any information, you are just building your world just from your own imagination. Like psychopath.

            PS. I see you love to copy and paste and don’t imagine how can we build a systems without a copy and paste :)) I remembered one coworker who duplicated each method which he has needed to change, and named it methodname2 methodname3, and called its named method instead of original :D It was really funny then he didn’t have a clue who could possible to solve that problem without copy and paste :D has no clue about polymorphism, inheritance or overrides :D

          • Daniel Kerr

            “And don’t try to invent all stuff by yourself “your own opencart mail system””

            so i should rely on 3rd party projects. I should include a file that is an added 1mb and god knows how many includes for such a simple task as sending a mail.

            My final thoughts:

            There is a reason why opencart is the 3rd most popular ecommerce solution in the world even though we have never spent a penny on advertising, unlike projects like magento which has spent millions. Its because i never used a bloated framework like ZF and symphony and because i don’t listen to sh*t for brains code monkeys who are going to spend the rest of your lives working for slave labour wages!

          • techchattr

            Get yourself together dude…3rd most popular. You sent me two websites. I cant imagine more than a dosen bigger websites using this piece of shit, one of which was actually made by me, hence the blog post. No self-respecting CTO will choose opencart for any meaningful ecommerce work. Sure to sell 10 products, who cares…And I dont know about the slave labor but seems like you are too broke to even hire a designer… lol

            But to everyone reading, after going through the comments I am pretty sure how solid of an idea you have right now about the author and the quality of the software, so I hope this helps your decision to move away from OpenCart.

          • my2cents
          • techchattr

            But thats what the Cambridge IT professors advised him to do guys, allow access to constructors, getters and setters from the URL and throw plain errors and warnings…Its a best practise, didnt you know it?

          • ecommdev

            That would be that professor who now lives under a bridge on the Cam river.

          • stefan

            Hey Daniel,

            you created a really successful product with opencart! Thx for that! Although some of the points made in this article are quite vaild, why not even discuss some of the points?

            – are you really satisfied with the vQmod search and replace approach? Have you ever tried to update a OC installation were you added several customizations with vQmod? Have you ever tried to use source code highlighting or other features from an IDE for php coding inside xml tags?

            – did you ever needed to test OC extensions/code with acceptance/unit tests?

            – did you ever needed to switch off functionality you don’t need like comparision, affiliates, manufacturers. It is possible, but with effort…

            – synchronize orders, customers, products with an ERP System via an API?

            I don’t see the need for bloating OC with frameworks like ZF or Symphony. Transperency for the community of develpers would be much more effective, why not create an open roadmap and integrate the best ideas of developers, which are willing to commit? Anyway keep on with the great work!

          • swed

            Good thinking stefan, I second that! Especially this part: “Transparency for the community of developers would be much more effective, why not create an open road map and integrate the best ideas of developers, which are willing to commit?”

          • Josh Arcadia

            Yay! I see Daniel Kerr defending his methods, rare on this world to hear from developers (i.e. vBulletin, Xenforo, phpFox, etc) and even Opencart makes more money and generates more money than those mentioned…
            Why the critics are saying is: I want you to do what I want cause I am helping you…
            Yes the suggestions are valid but not in the way they were explained…
            I support DK cuz he gave work and let make money too many ppl (like me 10k and counting) and not those know-it-all telling others how to live life…

          • Steven Mars

            Excuse me, but I take offence to this. I’m a shit for brains code monkey spending the rest of my life working for slave labour wages? Here I was thinking I was a reasonably good engineer with decent experience, a good job and a good education providing a living for my family. Oh, wait. I have to use your solution, one that has no documentation for the latest version? Yeah, right. I use prestashop and Magento with excellent results – why? Because I know what I am doing. Your “excuse” is that open cart is built for beginners but it has no code comments? How will a beginner learn from that? The more I’m reading your comments the more sure I am that I nor anyone in my company will ever use your product.

          • Andy

            I already see what kind of programmer you are! Regular expressions generally are extremely time demanding operations. In this particular case you have replaced a relatively fast substring operation by preg_match which will execute up to 20 times slower than substring! Way to go! You should join Magento team, they are experts at super-slow e-commerse solutions! ;)

          • imho

            “this is what search and replace is for!”

            oh c’mon D. !!!!!

            i admit i like twig (you can choose to use php template in symfony) for it’s clarity, but i don’t use it because i don’t like compiled template cache. I prefer pure php.

            But ZF2 use 1 view file + a decorator (layout) => 2. Everything else is achieved using the partial template helper. Opencart uses 1 file view per block. header, footer, left, right, top, bottom, center area. so at least 6.

            I don’t mean for opencart to use zf2, but improving the bas framework to look a little more modern…something like kohana or yii (2). There are a lot of useful programming patterns that could benefit the opencart project. You use a few of them yourself (closure table, registry, mvc).
            I don’t mean for opencart to use doctrine2 either. But using popo entities would improve the design.

            If, as it’s been said, opencart is a learning project, it should teach best practices.
            if one needs a learning framework, i cannot think anything more complete and modern than zf2.

            About search and replace: if you think it’s a good practice, why do you put model code into model class methods? why don’t you just repeat sql code in each controller? I’ll tell you why, because repeating code is not good, and you know it.

            if an extension needs to something that the framework already does, it should always be able to call an object method with a well defined signature (doc blocks would help too), not copy the code from the framework. if a new version of the framework change the code, the extension should not be needing to be changed too.

            i just read in other comment that validation is not needed in a framework.

            Well, in my opinion validation and form builder are a must for a framework, since ther are always needed in a (web) project with user interaction. Every framework i use(d) has it.

            Create a validator class and use it like a service, like the tax class. You can put validation configuration in files or even as customisable parameters in the database.
            Standard validators covers most of the cases.
            Every validation system i used lets you define new validator that use any php callable.

            if ($customerForm->isValid()) {
            $someObj->doSomething();
            } else {
            $errors = $form->getErrorMessages();
            }

            looks much better and simpler than repeating the same validation code in different controllers

            so something like: $customerModel->customerExists($email) can be called to cover the db table row case.

            I also think that the simple model classes in opencart should extend common base classes shared among admin/catalog …same reason…avoid rewriting the same code twice.

            regards

          • Daniel Kerr

            this is the issue you are not getting!

            validation can not be be used the way you describe above because the requirements may change depending on which controller calls a model. the validation you describe is not a one solution fits all types of validation.

            as for the layout stuff. who cares. you are including close to 500 – 1000’s files per page load for many zend framework.

          • imho

            take a look at Yii use of scenarios in model validation…..

            yii doesn’t use 1000 files (well zf doesn’t either)…and it covers 95% of the cases with its standard validators….when i need more i add a per class validator callback….. this “issue i’m not getting” saves me a lot of time and lines of code and let me look at the project(s) with less headache.

            about controller callable methods via request url, i believe it would be better to prefix or suffix the action with a name as “Action” or “action_”.

            In this way you avoid name collisions with other controller methods.

            Another possibility is to add a $callable_actions array in the base controller, customize on a controller class basis and check it before calling it.

            if ($controller->isCallableAction($method)) {
            $controller->$method($args) ;
            }
            that it’s what i did as a quick fix with opencart, similar to Silverstripe solution on ContentController subclasses.

          • Steven Mars

            This just sounds like a lot of excuses to me. Real developers do not make excuses, they make products. That work. Properly.

          • javaguy

            …citing Weiss….I’ll let you find out who this is…

            “Copy-and-paste is a weak design option, fraught with significant liabili-
            ties. First, there is the problem that if you copy garbage, you wind up with
            more garbage. This makes it very hard to fix programming errors that are
            detected, especially when they are detected late.”

            …enough said!!! This closes once for all the “copy-and-paste” matter….

          • Steven Mars

            You are seriously comparing opencart to zend framework, and saying opencart is better because it loads a page faster?

          • ferisoft

            Ok ok Mr. Pro, at least dont do stuff like that in your pro code:
            http://www.opencart.com/index.php?route=common/home/__construct
            and which part of the snippets in the post you find simple…they are plain stupid, especially major components as routing and validation, lets even forget the language as a minor thing…

          • Daniel Kerr

            http://www.opencart.com/index.php?route=common/home/__construct

            so? do you see any errors? is this in issue with the frame work? no!

            easy fix add in index.php

            if (substr($request->get['route'], -10) == ‘__construct’) {
            exit();
            }

            “especially major components as routing and validation”

            routing and validation classes are not required to build a framework.

            validation classes can not cover every possible situation such as validating if a customers username is already in use. using simple php functions are enough for most validation without building a class.

            also applications using opencart can be built very quickly if you remove the language layer. everytime a new layer is added obviously creates more work.

          • techchattr

            Its not an issue of the framework that it allows me to access constructors and destructors of controllers from the URL ? I am speechless as always reading your ever so funny comments…

          • Abba Bryant

            They most certainly can. I routinely use a number of validation packages and I can’t think of a single one that I can’t tell to check if a row exists in a table for a provided value. Pull your head out of your ass.

          • Steven Mars

            “routing and validation classes are not required to build a framework” – EH? oh, and why in gods name are you routing to a constructor?

          • malinda

            i also so need to tell that open cart has some coding issue like repeating, but readability is perfect in open cart i’ve done many projects , some projects got less than 1 week to customize every thing that my customer asked and it’ gives more power to developer to do the changes what ever he need . :D

          • R Rogerson

            More than fair comment.
            The problem is that they tend to drive away anyone that doesn’t share their views/mindsets.
            Pointing out a flaw (no matter how nicely you do it) seems to result in flack and grief.

            I can understand taking it personally, it’s their baby!
            But if lots of people say your baby is ugly … then sorry to say, you have an ugly baby.
            Ignoring them will not make your baby prettier :D

    • noname

      Daniel, have you ever been working on some php open source system instead of your created open cart? Have you finished university of computer science? Or are you that self learned guy who don’t read the books, and only do coding. Stop taking drugs and look around one day. Many companies switching to symfony2 full stack framework, or at least uses some of components e.g. HttpFoundation.

      And your Open Cart don’t follow any of standards of object oriented design principles. Only procedural piece shit of code. And you didn’t even find out how to design extension mechanism :D

      VQMOD is what ? text search replace utility using regexps? its for programming? where is the IDE plugins to support autocomplete for that? and debuging? :D
      Open cart its not for a professional programmers, its for amateurish schoolkids, as you was then you coded that peace of shit. Its popular not because its good, but because many stupid people cannot understand more advanced and well designed frameworks.

      • Daniel Kerr

        if you actually had any real coding skills you would have your own open source projects.

        as well as a degree in software engineering i also had phone calls with Cambridge IT professors and meetings with members of the British computer society telling me how well structured my code was.

        • techchattr

          Whoever told you that, tell them to tear their diplomas and NEVER EVER go in a classroom to teach programming to people. They will make a huge favor to society. If your code was that well structured you weren’t going to have posts like this one and people complaining like the ones that do here and on your own forum. Structured code is not subjective, it either is or is not…and yours is clearly not if you get that amount of complains. I posted a couple of code snippets in the post which are definitely not all the examples of ridiculous code in OpenCart but anyone with sub-standard PHP skills will cry laughing at those so…yeah…

          • John

            Guys, settle down… what’s the point of this argument, Daniel has done a brilliant job with OC, moreover he has created tons of jobs for people around the world who provide development services based on OC – which is way more important than whether a piece of code or data is the most efficient way of doing something. The whole point of a project is that you keep developing it – I’d rather be in Daniel’s position with a solid piece of software to build upon (that also no-doubt has a decent income stream for him via Plugins), which helps the ecommerce world than to sit here complaining about it. Get a life…

          • techchattr

            Your same argument goes for any other open source project, so when there are better open source e-commerce alternatives why not use them instead…

          • goinindia

            like magento… right?

        • Steven Mars

          I do have a degree in computer engineering and I have more than 15 years experience in the industry. There is no structure to your code, there are no comments, everything is repeated at least once. Things that other people have done properly you have thrown out so that you can claim to have written it yourself (phpmailer, for instance). Opencart is not scalable. There is no documentation for version two, even though that is the current stable? Or is it? You know that before you do a foreach you actually have to validate the data you want to loop through, right? Just because you are capable of making a few things work in PHP, doesn’t mean you should. I can do some engine work on a car, but even if I gave my time for free to work on someones car I’m going to mess it up, because I don’t have experience. In 14 years you have what open cart is now? Good God man, what did it look like 14 years ago? How have you not learned anything in 14 years?

          • http://manchestervacs.co.uk/Dyson/ Manchester Vacs

            Steven, I’d like to get in touch with you as you seem to have the skills I need to repair an Open Cart installation. I don’t seem to be able to message you, but Googling my user name will find me.

          • Steven Mars

            Have mailed you at your site

    • raushan

      Daniel Kerr hi i am using your opencart from last 5 years i am not facing any problem and i appreciate you that you give a eCommerce platform free of cost, I am an Indian brain and i know what the code is,In India every small shopkeeper want a website but they dont want to waste too much money on to this but your platform is very best fro them. please keep growing so that we can learn something and grow.

      Thanks
      Raushan Kumar (India)

    • Dennis G

      I’ve seen a lot of the big companies use OC. Wal-Mart, CVS etc. It cant be that bad. It is better than using WIX lol

  • Steve

    Daniel is a inarticulate DICK who cannot handle alternative opinions or constructive criticism… not good traits of someone and definitely not of someone who is the owner of a company.

    • ecommdev

      That what the guy’s name initials DK stand for.

      Don’t forget the misinterpretation of best programming practices:

      KISS: keep it stupid, stupid! (…oh no wait, it’s a rock band)
      DRY : duuude…repeat yourself! (god, i wish i had some water)
      SOLID : Software Organised Like Inconsistent Dirt. (is that ice?)

    • Brian

      It is rare for me to actually enter into an internet conversation, but having run across this item, I simply could not pass it by.
      Having been involved in computer science for over 45 years as a programmer, professor and member of the apollo space flight program development team, I feel that I have the credentials to state the following.

      Young Feras, I applaud your initiative to provide information that you feel is relevant to the programming community, However, you only supply a single side to the argument.
      As you mature and develop, you will learn that there are TWO sides to every situation.
      As a programmer you need to know that every statement has a NOT statement associated with it.

      But enough of your lack of education. I shall dispense with a couple of observations on Open Cart. and yes, I have had experience with Open Cart.

      First, as having designed several custom ecommerce solutions for large corporations I feel you need to know that my own personal ecommerce site is based on Open Cart. It works fine, as it is intended.

      Open cart is a simple, elemental ecommerce solution for very small web stores,. I.e. those with limited market access and internet usage. For that purpose it is perfect. At that level of usage, the coding does not matter as long as it works. You seem to be under some misguided impression that coding must always be pure. Not the case.

      The code we developed for Apollo was indeed as pure as possible. It had to be. The code I wrote yesterday to get the current value of silver fed to my computer was nothing less than pure garbage, BUT, it gets the job done. The same applies to Open Cart in comparison to other, more advanced ecommerce solutions.

      Your article does not appear to actually be a notification of Open Cart’s short comings, nor does it provide any viable information as to WHY it is designed as it is. More accurately I feel, your article simply seems to be an avenue for displaying how intelligent and professional you seem to believe you are. As to this final statement. I would suggest that when you finally get your Bachelors, Masters or doctorate in computer science then you should pursue your journalist interests. Until then you may consider keeping your opinions within your personal sphere of influence.

      • ferisoft

        Thanks for your comment. I tend to disagree with you. My impression is that if you are running an ecommerce business and your business depends on a piece of code, you would like that piece of code to be “pure” and as well though of and implemented as possible. This is definitely not the case with OC and the issues with it are not minor but more in the “mind boggling” magnitude. Furthermore there doesn’t seem to be any will or desire from the community or author to fix them or address them at all, which makes the situation even worse, his attitude is actually amazing, that’s why i had to write the article in a rant-like way to draw more attention to those problems and as you can see from the comments I am not the only one who shares them.

        Lastly my article was written specifically towards developers considering which Open source solution to use for their next project. I believe that working in OC as a developer is pure torture and given your experience as a programmer I would assume you have to agree. So yes if you are a guy who has no knowlege of development and want to sell a couple of products online, maybe OC will work for you. If you are a developer considering what tool to use to build upon, OC will be nothing more than suffering and dissapointment (again if you dont believe me, browse through the comments).

        If you believe that writing ecommerce applications the way OC is done is the proper way to go about it thats OK, I completely disagree…

  • Ryan

    Im a professional PHP Programmer/Developer (10+), and decided to try the Opencart software to save me some time writing my own. It looks good at first glance, visually it seems nice enough to show to customers, but it is fundamentally flawed. if you are thinking of using this, it will cost you more time than its worth…. it has serious issues under the hood and even UI problems which will make it hard for your customers to use.

    The project requires hacky modules with “hopes” of making it function like a regular shopping cart, and even then its still just a big hack job that will always be fundamentally broken. after reading through the comments by the owner on this page I now see why the project is the broken piece of crap it is.

    That’s my 2c worth,

    Have a nice day :-)
    Ryan

    • kevin

      I haven’t had a single problem creating modules. Every module i’ve custom created for sites i’ve built work 100% all the time.
      Never had a customer complain about the site isn’t working.
      Only complaint i’ve had from a customer is on a Prestashop cart, crap kept breaking so I took the business owner to Opencart and they easily do $35k a year and the only thing i’ve had to update on their system was they wanted to switch from USPS shipping to quantity shipping due to a change in their business.
      Your $.02 seem kind of invalid.

  • Peter Stuart

    Well, I think the comments you make here are valid. Some things in the OC framework I would like to change, like code repetition.

    I don’t know much about MyISAM and InnoDB so I am not going to bother commenting on that.

    Despite a little code repetition and a few MINOR things that DOESN’T affect OC’s performance and security, I wouldn’t go as far as saying it should never be used. However I do beleive the repetitive code you used as an example is great for beginners as they can see exactly what is happening, it’s kind of like reading how the page is being rendered.

    I am a freelancer in the UK and have used OpenCart for many small to medium sized businesses with very little hassle.

    I totally agree with Qphoria, it is great for new programmers, in fact, I attempted to use Magento and switched to OpenCart when I was new to programming and I have learned a lot about programming and PHP frameworks. Although I was a “noob” to begin with, it doesn’t mean that OpenCart isn’t suitable for selling items online. As a matter of fact, OpenCart has taught me that how simple and easy coding can be (of course I am not suggesting that programming is easy right away, there is always room for learning).

    So to any professional or new programmer, give OpenCart a shot, I love it and it has done me a lot of favours over the past 4 years!

    Oh, and Daniel, I’m 20 years old. I don’t think it is fair to judge a programmers skills because of their age. Zuckerberg was 19 going on 20 when he started Facebook.

  • Badr Elmers

    I think normal people and no programmers should not comment here, the discussion between them is going very well, and I learned a lot from this and them. I hope only that they remove some bad words (specialy Mr DK :) ) and continue sharing your knowledges with the world as you claim you create open source for the world .
    an Arabic proverb says ‘It is not a shame to take the wrong way.. But the shame is to continue in the wrong way” DK bravo and continue the good work please,we understand it s hard to accept all this points but as a normal son of Adam and Eve i didn t like your act when this happened http://blog.visionsource.org/2010/01/28/opencart-csrf-vulnerability/ , that s was a serious problem about our money and you take it as a joke and you insult the one who advice you to the good way!!!!!?? , I m noob and I speak from humanist point of view, but i think all is clear, repetition means noob, and DK doesn t accept easly neither quikly but his software is rising very strangely ,thanks to God that I did read this before choosing my second cart after using virtuemart ,then now I go for prestashop but I will comeback someday to opencart maybe DK will change then OC. but i like in OC the payment gateways in core.
    thank you fera for sharing this with us and do not be angry with the bad attitude of DK, it is not easy to break something you built hhhh but you did a good job, our DK is like this and he share something free with us so as a humain be I should say to him thank you ,what can we do just to hope to him a good wife that absorbs his nerves hhhhhh

    lol my first comment in disqus

    good luck to all and thanks to all specially to DK for his attempts to answer, he did cleared at less some points
    and sorry my english

    • SeeBehindTheLines

      THE BIG SHOPIFY SPONSORED LINK ON TOP OF THE PAGE SAYS A LOT ABOUT THIS POST!!!!

      • Badr Elmers

        there is no SHOPIFY SPONSORED LINK ON TOP OF THE PAGE!!!! maybe it s a temporary ad that you had lol, now I see maxcdn ad, this is not a static ad but a random google ad

        • SeeBehindTheLines

          ….i always get a shopify google ad just on the right of the OBVIOUS section.

          regarding the use of db storage for validation, that’s even worse than opencart!!!

          validation should be done by a validation service, not inside the model entities, not in the db layer (its purpose is storing validate data). Domain models should never be in an invalid state!!!!! You just use valid data when creating or updating them.

          i agree with many of the objections, but having worked with both magento and prestashop, If you need a highly customizable cart i would recommend opencart, just because it’s so easy to change things and make it do what you need.

          It’s just too bad the original developer didn’t switch to kohana or yii.

          Let’s wait when Varien recognizes that Magento is old and need to be ported to ZF2 (which is a completely new and cleaner framework than ZF1) to see how many developers will complain for the hours spent studying the old version.

          • steve

            DK is a tosser, read how he answers people on the OC Forum, he has no respect for anyone, Q as is head so far up his arse all you can see is the soles of his feet.

      • ferisoft

        This is a Google Ads banner, I am in no way affiliated to shopify or any other ecommerce service.

        • Josh Arcadia

          you mom is stupid and you father is in jail, that´s why you attack successful people that make more money than you…
          my technical opinion :)

          • techchattr

            I wont answer or delete that its priceless…Id rather have people see it when they google your name…

          • swed

            I’m certain that there’s something basically wrong with you. There’s no way you can reasonably have any knowledge what so ever about the mental state of ferisoft’s mom and the same goes for the present location of his father. And how do you figure your assertions relates to the topic discussed here? Judging from the post’s linguistic profile one might come to the conclusion that Josh Arcadia and Daniel Kerr are the one and same. Anyway, you claim to have made some 10k of money… how and in which currency if any? I think a lot of us reading your nonsense post are calling your information in question. That a person with your poor mental capabilities is able to make any dough in the field of software is definitely out of the question. Furthermore your approach here tells me that you are used to be somewhat careless with the truth. Obviously you didn’t belong to the brightest stars in school either. I really pity your parents that in all probability did their outermost to raise you to become a decent human being. If they were to read what you have accomplished in your post they would no doubt regard their hard work a gruesome failure and constantly wonder where they and/or what went wrong. techchattr decision to keep your post to be viewed by the world is just plain beautiful… It would be highly
            interesting to have your “technical opinion” on how much money, provided that
            you actually are able to make any, you will lose when your potential customers
            reads your disgusting twaddle here. Well, I didn’t expect you to sum it up and
            it’s of coz difficult to calculate but let’s say that 10 grand in any currency will
            appear as pocket money or small change by comparison. I truly believe you will have reason to regret your offensive and cutting words many, many times in the future.
            This is related to your text emoticon – HE LAUGHS BEST, WHO LAUGHS LAST!

          • Josh Arcadia

            Ok then… HA, HA, HAAA!

          • Josh Arcadia

            Ok then ¬¬
            HAHAHAHAHAHAHAHA!

      • swed

        Using AdBlock will relieve you from seeing all the fatiguing Google crap…

    • ferisoft

      I agree for a non professional it seems like a good solution, you download it runs on every host, there are a bunch of free/cheap plugins etc. But again i stress i focus on development and more serious ecommerce work, as soon as you get into those OC is complete unfeasible and unusable. If you want to experiment with other carts and assess for yourself, check the examples at the end of the post. For your level of experience i would suggest to try out Perstashop, its definitely not as good as Magento or Broadleaf, but it’s very simple and much better written than OC, the authors are not dicks too so they take user feedback seriously and implement features suggestions and fixes all the time.

      • Shinrai

        I have to completely disagree with this post. While yes Opencart does lack some major features to make it a world class shopping cart. It’s opensource, therefore it can be modified to do just about anything. Some of it’s conventions or even database schemes are kind of meh. But in the end I have a client who runs a search though 20million+ records in approx 4 secs. It’s a solid code base for a shopping cart. Though needs many changes to make it work on a large scale. And yes I’ve worked with the other ones you have mentioned. Magento, Prestshop, etc. After over 400+ clients and nearly 4 years of doing nothing but ecommerce I can honestly say Opencart is my go-to when it comes to shopping carts. VQMOD was not made by the same guy as opencart. Though VQMOD did make a module for opencart as it’s relatively easy to change just about anything just with a drag and drop.
        Though I will note, most VQMOD module writers are not looking at the big picture, just their own module. Which causes many issues when adding multiple modules in the same system. Personally I have upwards of 70+ modules for opencart. Varying from Complete Diagram system to a caching system which can cache entire pages and update them automatically when the content changes.

        • ferisoft

          I am glad you are satisfied with a 4000ms database query in a web app context and that works for you. It definitely wouldn’t for me. Yes VQMOD is not required but you mention the caching module, how would the caching module have access to the core libraries to override them and enable the caching functionality if it’s not for VQMOD, right now thats not possible unless you go and manually change the files. Thats one of my main points there is no architecture in OC, there are a bunch of files tossed together and kinda working unless you start modifying stuff and extending it, then you have no choice but either modify the core files or use VQMOD, both of those choices are poor. I am not looking for solutions to change stuff with drag and drops I am a developer and I am looking for solutions to make my life as a developer more pleasant and more productive, unfortunately OpenCart is not one of them. If you tried Magento and Presta and you still prefer OC, the only reason I can think of for that is:

          1) you either are a non-developer or non-professional and OC is easy for you to mess around with

          2) you are very inexperienced and don’t have a clear knowledge of application design and proper architecture

          That’s all fine but if its the case and you completed work for 400 clients it’s kinda scary really. You say it yourself:

          “Though I will note, most VQMOD module writers are not looking at the big picture, just their own module. Which causes many issues when adding multiple modules in the same system.”

          There is no big picture to look at since there is no way to test the code, there is no architecture in the system. How am i supposed to test if my code is going to break some other modules code if there are no tests and everything is overwritting core files through xml patches left, right and centre. It is really JOKES.

          • Shinrai

            That’s incredibly ignorant of you. While VQMOD did not have access to half of the library/system files of Opencart until recently it wasn’t hard to make it have access through another vqmod. Now it does by default so my modules which gave it access had those bits of code removed. The ONLY file which is not modifiable through vqmod now is the index.php and config.php which should never be allowed to be modified through a module.

            Both prestashop and Magento make horrible choices in many of their programming schemes. And neither are as easy and as fast to modify as Opencart. You’re also failing to see the point in VQMOD/Opencart. VQMOD while yes does give you the ability to drag and drop and have new code on the site. It’s main purpose it to allow seamless upgrades. While some modules may break during an upgrade the core files are never modified thus allowing you to easily upgrade.

            In reply to “1)” you would be hard pressed to state I was either with the knowledge and the sites I have built. I’d post some links comparing the shopping carts but they are to laughable to even post. These are just as your posts show. People who didn’t get everything they wanted and jumped ship.

            Now lets give a real world example (not that I’m an Apple fan). An iPhone comes with very few features as a base. These features allow it to be comparable out of the box to any other phone on the market. But if you want more out of your phone you can purchase an APP. Galaxy on the other hand has MANY features, most people don’t even use half of the features. Thus making it run more CPU cycles then needed. Same is true for Magento vs Opencart. Opencart is a canvas, make some art. Afterall that’s what a programmer does. But here is a better question. If you’re so knowledgeable and can so easily jump to conclusions of insulting a programmer who disagrees with you…. Where is your shopping cart software? But before you say it… Any decent programmer knows better then to re-invent the wheel. But in that case whats your arguement for Magento or Prestashop? Yea you can modify the code, you can add modules/extensions. But at the end of a year when an upgrade is needed are you going to go back and re-write those 70+ modules again? Or in my case with opencart I modify the one or two which break during an upgrade and am done.

            In reply to “2)” application design is what you make of it. Any decent programmer could tell you that. You’re application could go through 50 different services and still be valuable. The question isn’t how it’s done it’s how efficient it’s done. Does it meet the requirements of the end user? And finally was it cost effective?

            And lastly… There is no such thing as “proper architecture”. I lightly touched on this in this in the previous paragraph assuming you were refering to the framework of the code. But if not reffering to the framework of the code then you’re way off as “proper architecture” in terms of programming would generally consist of how the project is assembled and in that case refer to: http://www.wbdg.org/design/dd_archprogramming.php

            But if you were referring to the framework. Then what’s to say one framework is better then another? Simple answer, there isn’t anything. It all depends on the project which you are programming.

            As a final note. If you want to see a shopping cart which just has a bunch of files tossed together go look at OSCommerce (one of the oldest and still one of the most used Open-source shopping carts). It’s what I would consider spaghetti code.

            But hey at the end of the day we all get paid to program. We hopefully meet our clients expectations. But simply telling people they have no experience and not to use a piece of software without any REAL reason not to. Yes some of the conventions in Opencart COULD be done better in terms of what the programming LOOKs like. But in the end it all gets the same job done.
            Your example of the foreach on the posts shows just how clearly you don’t understand Opencart. And anyone who doesn’t understand a piece of software has no room insult it.

            Funny Note: I used to hate Opencart. But then I got to using it and writing programs for it. Like I said I’ve worked with prestashop, magento, osc, cubecart, opencart. And yes many of those have some great features out of the box. But what if I don’t want those features? Many of them aren’t so easily turned off.

          • techchattr

            Have you ever programmed in anything different than PHP. Do you know what OOP means? I will rest my point there. I dont see a point arguing with a person that tries to explain to me that patching php files through xml changesets is a better approach than using abstraction and extend the system. And as to breaking modules both are the same, but in one case you have clearly written and defined code and in the other you have a bunch of xml’s flying around with no clue whats going on. As for speed, in web terms scaling is done horizontally and because of the lack of abstraction you have to start rewritting the opencart core or use a bunch of xml patches to change the system so that it supports horizontal scaling. Performance of the code itself doesn’t matter. But I really don’t know why I am arguing with people who even don’t understand those simple concepts (including the author itself ). It’s how scalable the system is and how easy to maintain/extend/test, not how fast the code is. If that was a concern it would’ve been written in C. Unfortunately OpenCart is not scalable (many explanations given in both the article and the comments), its untestable, and is extremely difficult to maintain because everything is essentially a patch… Actually I will stop answering comments like yours and focus on the ones that at least get those simple ideas. I am very worried that people who do not create ecommerce websites for 400 satisfied customers. Have you written 1 test in any of those 400 cases ?
            Also if you want performance go with Broadleaf it’s much more enterprise ready than the PHP options. In my comparison the language is irrelevant its more about how the system was designed and implemented. I get the impression from my work on OC that it was implement first, then figure out how to solve it (hence idiotic contaptions such as VQMOD). Have you ever seen any serious project have an xml patching mechanism as a sole method of extending its core ?!? WTF o_O

          • Shinrai

            Yes I’ve programmed in many languages. Just recently did a project in Perl. But the subject is PHP since each of the described Carts are written in PHP (for the most part).
            Patching is patching. Regardless how it’s done. When you modify Magento or Prestashop you are essentially patching it. However you’re more then likely hard coding it. VQMOD is xml yes, but it’s xml to search and add/replace code. The PHP code itself is still there just fine. The fact you object to it simply means you are unable to abstract the code without looking at it all at once.
            Easy to maintain/extend/test? Where in Opencart is it not easy to maintain, extend, and/or test?

            My “star” client has over 20 million records, his search runs in 3-4 secs. His pages load in approx 150ms. All on Opencart and all with VQMOD. When he wants to upgrade his Opencart he can. He doesn’t have to worry about what modules will have to be re-written into the files.
            The one thing I will agree is Opencart (out of the box) is not scalable, but neither are the other shopping carts mentioned. They all fail around 20,000-40,000 product records. Depending on the correlating data. And what portion of the shopping cart you are at. Specifically the search is the area where most fail out.

            Oh and to your OOP question. The funny thing about all of this. Is the basics of OOP is exactly what I’m describing, Modulation. Maybe you should read up on what OOP is and why it’s around. There are many ways to implement OOP and even more on how to execute it. But all of them share the same thing. They are designed around being Modular and scalable. Keep in mind this is all based upon thinking of OOP from the programming level and not the compile level. But hey lets not mix and match different portions of programming and get all flustered here.

          • ferisoft

            Well i guess well have to agree to disagree because my idea of clarity modularity and oop doesnt include xml patch files which use regex to overwrite and generate new php files out of, lack of testability and clear code. Its cool if that works for you it just doesnt for me. As to the search look into elasticsearch or solr since 3000ms database query on the frontend is really not great. Good luck.

          • Andre

            Thanks for this post and your perseverance… but poor you…

            Save your breath, anyone finding any virtue in such a crime as vqmod doesn’t know anything about programming. And sentences like: “the basics of OOP is exactly what I’m describing, Modulation” make me want to cry laughing, modulating…

            Seriously, VQMOD! I think I laughed that one out for three days in a row. Building and selling plugins that search and replace code!!! That’s like fixing the space shuttle with duck tape.

          • ferisoft

            You were not alone I was in the office when i read this one and the whole team was laughing…

  • Pingback: Google

  • GWork

    Can you come out your own ecommerce platform? I will comment it.

    If you don’t have the time, please appreciate other works.

    • ferisoft

      So lets not have car reviews then, because not everyone is building their own car ?

      • GWork

        Well, if you can offer me a free car, I will appreciate it :)

        Every system has its own pros & cons. Trust me, if you can post your project scripts (if you have 1), I am sure others will criticize your coding as well.

      • GWork

        Well, if you can offer me a free car, I will love it instead of criticize it :)

        All the platform has it’s own pros and cons. I am pretty sure if you post your scripts, others will criticize as well.

        • techchattr

          Which I wouldnt mind one bit if the critisism is backed with code and remarks and i would be more than happy to fix it, something that DK doesnt seem to share. And I am not sure you would get a free car that barely runs and is a threat to drive – thats the case of OC, it somehow works but its almost magic…

          • goinindia

            ok so lets get it clear , are you unhappy that daniel has crated opencart or are you unhappy that he is not implementing the changes you have recommended?

            Can atleast that point be made clear

  • Mahendran Kathirvel

    Opencart, simply the best and good for small sized shop.

  • Lost in OC

    Having coded php casually for the best part of 15 years and being a coder since C64 days I agree with most of the comments by the OP.

    As a semi-retired bum, I started a new OC project for a small store and for the first week, reveled in the simplicity to plugin a module and watch it run. Thinking this was easy money, I ploughed on.

    Then I hit my first mod compatibility issue…. From that point it was time to start hard coding in the xml so I could trap what was happening. Then I started to SEE what was happening and my exclamation was a rather loud OMFG!!

    Then I wanted to add a page. Just an info page. Nothing serious. Yeah. Right. 3 files later I had “Hello World”. Rejoice all who stumble here.

    Then I started an attempt to optimize because really….. the checkout was killing me. I then exclaimed an even louder OMFG!! As I dig deeper down, slashing and burning, I have moved to an incredulous OMFG!! Wha….Why??!…. Why did he?!? Oh no!! What’s this?

    Me> Google, what is MyISAM?
    Google> No result found. It’s before my time.

    As an ex senior programming lecturer who expunged “cute code syndrome” rapidly from the minds of virginal coders, I am happy to recommend OC to my learned colleagues. As a tool espoused as “for beginners”, I absolutely concur.

    OC is a tool on how not to code. It is a classic example of redundancy, repetitive bloat and proves how annoying bug hunts can be using only 3 x 23″ screens. It will be enough to exasperate even the most dedicated of students assuring those that pass their course will be made of the “right stuff”. The rest of them will no doubt move onto majoring in astrophysics…. because it will prove easier.

    (as an aside, for fellow lecturers, the first exam should involve injecting random exit(s) into your students checkout code during a heavy use period and getting them to man the helpdesk for 3 hours. If their booth is still intact after the exam, they should get honors. NOTE: If their customers use real money, ensure emergency service personnel are on hand)

    ..oo00oo..

    Alas, having invested heavily in the project for my client, I’m committed here. It is my first OC.

    It will be my last.

    (I’m guesting… I’ve vented and I’m busy. Something in ControllerSaleCustomer has hitched…… I have to fix $this->little_error->but->I->cant->seem->to->find->because->there->are->9->modules->I-have->to['follow'])

    • Lost in OC

      TASK: Edit controllers to provide view and sort options on tabulated data. (eg: orders, transactions etc.)

      But……. (within controllers)

      $data = array(				  
      'sort'  => 'date_added',
      'order' => 'DESC',
      'start' => ($page - 1) * 10,
      'limit' => 10
      );
      

      and then slightly further *down*

      $pagination->limit = 10; 
      

      OK, it’s an easy fix for sure but I ask. What happened to the oldest coding rule of them all? If you’re typing an *actual value*, YOU’RE DOING IT WRONG!!

      Despite this glaringly bad practise, OC seems to work OK. (atm!) But I hark back to a comment made by OP. It’s a very straight assessment.

      [quote] Its a system that somehow works, barely hanging in the balance with stuff going all over the place.[/quote]

      My concern here is when you find this kind of refusal to follow the most basic premise of coding, doubts creep in to the integrity of the entire package. Good coding practises are about the ability by developers to EXPECT certain conventions. It reduces tracking overheads and increases the opportunity for the “unforeseens” to remain unseen…

      Sneaking doubt is a horrible place to start on another days development…

  • Exception

    Holy crap. The amount of illiterate comments here from the site owner and from OpenCart’s owner is ridiculous. You’re attacking each other for what reason? To defend your intelligence? Who cares, there are always bad reviews.

    The author of the article seems to have made some valid points about the flaws of OpenCart and I’m sure plenty of people will read this and be a little more informed on the software, such as myself. This doesn’t give him the right to attack the owner of OpenCart when he responds though. You wrote an article on the internet, what did you expect? A medal?

    For Daniel; I’m not against you. There’s one comment here that really stood out. “This guy needs to stop being so defensive or else he’ll have a heart attack before 50!”. This is completely true. You take an overly defensive stance on comments, posts, emails and articles alike and it’s really not helping your health. You’re the creator of OpenCart, develop it instead of responding to random people on the internet. Even then, if you *do* decide to respond, don’t insult them. I have literally not found a post where you give positive feedback.

    For everyone, it’s a fucking article over a piece of software, calm your tits and the fuck down, bloody hell.

    • ferisoft

      Lol, how does your comment even relate to the article? :) Thanks anyways :)

    • Andre

      Exception, please realize that the OP posted an article on his blog, not on OC’s website. He has every right to write what he feels like. I agree the critique was not always very diplomatic and maybe a little harsh but I felt the same working in OC. I completely understand that.

      This being said, there is absolutely no reason for the author to react like that. From my perspective he is the one that has been an absolute arse from the beginning. He is throwing out things that no decent person, let alone a programmer, would even think about saying. The OP pointed out very valid points that he did not invent himself. They are all basic stuff you learn as a developer and that all good frameworks follow. Not accepting, or at least challenging, these points is completely ridicule and shows a clear lack of professionalism.

  • Andre

    This thread is funny and very sad at the same time. The OP has very valid points. OC is indeed very poorly designed and programmed. That does not mean it doesn’t do the job but it does not scale, will (did) age poorly and any serious project using it will end up like a bowl of spaghetti.

    I had to build a few customizations for OC in the recent weeks. I had no choice to use it as it was already in place and the client wanted new features. I went through a lot of different emotions doing so and never happiness (except when I was done).

    One point I would add is that there is no API. I shouldn’t have to write SQL when building a simple plugin. Why is there not at least a core set of functions to manage products, categories, etc. Not to mention the complete lack of an extension mechanism. VQMOD is the most ridiculous idea of an extension mechanism I ever saw in 20 years of coding. It’s a search and replace mechanism for god sakes. How can you properly manage versions with that? How can you write anything that you can expect to last (without prayers)? If you have to use OC, please stay away from it!

    Why would you choose OC, knowing that, for any serious work that require significant investment. If you plan on generating significant revenues from your online store and want it to grow, why shouldn’t you invest money on a proper cart? It’s mission critical. Save elsewhere!

    And please do not say I am not experienced… I have worked on software a thousand folds more complex. Real-time financial applications, software managing trillions of dollars a year. Traders expect good software.

    DK, you may not agree to this and all other critiques. That’s you prerogative. You successfully created a market for OC and all the better for you. That doesn’t mean you are (or were) on the right track technically speaking. I would suggest you take a deep breath and try to relax, then read the comments again and see how off the mark you are. With a little bit of humility, you could take the constructive critiques of professional and make OC much better. That would ensure is longevity and, possibly, an even bigger market share for you and OC service providers. If you fail to do that, OC’s position in the market WILL drop to the floor eventually.

    • Lost in OC

      VQMod…. EGADS!!! Had the devils own on this just yesterday.

      A “respectable” mod writer decided that a CDATA search would be best done against a comment line. As part of my rewrite of the (ridiculous) voucher code system I “inadvertently” deleted that very comment line. Well… I mean… Comments should be able to be safely deleted right?

      4 hours later the “bug” was detected because I gave up and hard-coded 49k of xml so I could get to the root of the cause. Daniel and [unnamed] mod dev must have had very, very sore ears. Even my dog ran away until the sun went down!

      Workablity : 6 – before you touch the core.
      Scalability potential as soon as you do touch the core. 0.
      VQMod integrity if you want to touch the core. 0.

      This is NOT a developers cart. You have been warned.

      • ferisoft

        VQMOD is a joke and your last sentence pretty much encompasses what my post is all about, it would seem a lot of people missed the point somehow.

  • Rolf Brugger

    Thanks for the detailed comments about OpenCart. I’m using OpenCart for almost three years now in a small online shop. I have done quite an extensive evaluation of the platforms that were available at that time. Of course I’ve tried Magento, but it was too overloaded with functionality and far too slow on my shared web hosting platform.

    I finally chose OpenCart because
    – of it’s clean and simple look-and-feel and modern look. I only had to apply small changes to the css and templates to get what I wanted.
    – the response times on a shared web hosting platform are good.
    – of it’s stability. I never encountered a serious bug.

    I agree with the criticism concerning code repetition and sometimes hard to understand overall architecture. But so far – after doing some research in discussion forums – I was able to apply all my modifications and extensions.

    Would I use OpenCart again? I’m not sure. I’d definitely check out the current alternatives. But choosing OpenCart and trying to live with it’s flaws might not be the worst thing to do.

    Cheers – and thanks again for the article

    • http://somewhere.com/ FMN

      I concur, I use Opencart for the same reasons like yours.

    • camsjams

      I’m surprised that you think opencart has a modern look – it isn’t event responsive yet, and uses fairly outdated style cues.

      • Juan Perdon

        Opencart + Vqmod + responsive Theme = Modern look

        • camsjams

          Opencart != Modern look

          You went and added things to it :)

          • Jay

            In that case would you use WordPress Shop as your ecommerce ?? no you will have to add things to it like Woocommerce to make it look like Ecommerce.

          • goinindia

            please show me one free shopping cart with similar to opencart with a responsive theme inbuilt. Besides there is a few free responsive themes.

          • Richard Bill

            Ohh…I think you have not seen Prestashop. Look at prestashop.com and see that their default theme is responsive.

  • lucho69

    funny debate !!!

    Daniel, I would advise, keep your calm, I think the title was just a provocation … successfull if you look at the number of posts !!! and you can find exactly the same provocation on prestashop, magento , everything

    and it is always coming from IT Programmer, Ferisoft you are talking code, programing etc… and sales ? business ? margin ? More important for me !!!

    Let me explain my experience with ecommerce platform and I will speak more as ecommerce expert than programer, my client are doing ecommerce, not IT

    I am web agency manager in France, and 60 / 70% of our projects are eCommerce

    We use Magento, Prestashop and Opencart …

    I explain why :

    Magento … my god … very good for a web agency … we can charge a lot , a lot … so complex to customize that we can justify a price starting to 10 000 euros just for a start !!!

    we get a couple of sites based on Magento, I explain to the client, that a dedicated server is not enough : 2 dedidicated are needed …

    summary : I do not propose it anymore !!!

    So , now we work with Prestashop and Opencart.
    I use PRestashop mainly when the client is imposing it : too famous in France
    But I try this message : you are the business man, we are the builder of your shop, do not impose a tool , it is our business
    If he keeps williing PRestashop, no issue, we do it
    The best advantage is for e.g. integration with ERP

    So normally I propose Opencart
    My first projects Opencart were in 2010
    some small, some are now very big shops !!!
    king-cordes as e.g. is one of the biggest actor if guitar business …
    critizism on code or DB ? I could ask my programers , but what I see for the projects we are doing :
    – we are never blocked to respect client requirement
    – modules are quite simple to plug, and developers are reactive
    – prices are very low
    I am very proud to get one of my Opencart project nominated n°1 ecommerce 2013 , in France sure, France is not so big … but anymay :-) and you know what ??? we developed nearly with a standard Opencart a new concept “Butcher drive”
    the site nominated is brouard (-) boucher (.) fr
    and you know what, 7 butchers are following ….

    as summery, everybody can love or hate a system, but I can affirm, Opencart is well done for ecommerce
    not want to make the same provocation on Prestashop but

  • iuseoc

    Daniel is one of the most unprofessional owners of a company I have ever encountered. If you criticize OC on the forums, he will threaten to ban you and tell you to go with magento. I’ve never seen such a thing. Qphoria, you are the only reason OC is worth a damn. Thank you sir. Daniel, this negative blog post just shows that OC is growing and your comments simply stunt its growth.

  • Mohit Kumar

    Nice article! Totally accurate about the points. I am a Yii expert and for past month I am stuck with the mess Opencart is. I created a custom shipping module and now it is messed up because the Tax module decided to modify the variables by reference.. Opencart just uses classes but nothing there is OOP way, no loose coupling, horrible way of language variables invocation, and you mentioned getProducts query- that is the dumbest query I have ever seen in my life..

    • ferisoft

      It’s also quite funny how this query as dumb as it is, is only cached in the admin model, but not in the frontend one…like WTF were you thinking ?! :D

  • paulfeakins

    OpenCart is a fantastic, well-written and well-structured platform. The issues listed in this article are minor, Daniel is aware of them and has made the design decisions he’s made from his unique perspective as someone who knows more about the project, OpenCart and ecommerce, its history, its users, its extensions and the community than anyone else.

    I’m glad that @techchattr:disqus wrote the article to bring the issues to @disqus_N8h7oWiEFn:disqus’s attention and if it improves OpenCart further then great, but he is wrong to suggest that any of them are reasons not to use OpenCart or that there are far better open source alternatives out there.

    • techchattr

      I agree with most, but not with the statement that those issues are minor, I would say most of them are actually fundamental and cannot be fixed by slight adjustment but rather need a radical rewrite…

      • paulfeakins

        Thank you for such a quick reply, this is why I consider them minor:

        When I was looking for an ecommerce platform for our company to use, I reviewed a lot of the most popular platforms in detail including their functionality, features, benefits and indeed I reviewed their code.

        I downloaded and installed most of them, and worked with the code a little to implement some new features to get a feel for the platform. I found Magento ridiculously complex to add even something as simple as a banner to the home page, whereas of all of them, the OpenCart code was the simplest and cleanest. Just a quick look at the folder structure will show you that there are far less files and folders in OpenCart than the others.

        The goal of my review was to find the platform that would deliver all of the required ecommerce features from a business point of view with the most easy to work with, flexible and therefore simple code.

        So to answer your points, based on my criteria above:

        1. Database engine – okay so OpenCart uses a database engine that isn’t the latest and doesn’t support transactions and you say this is essential for ecommerce but actually it’s not. We have clients who sell £20k per day worth of products on OpenCart sites and not once have we had a problem because the database engine isn’t transactional.

        Business impact?
        Zero to none.

        1. Code repetition – yes, there are parts of the code that may have been written with Daniel’s –verbose flag set to true. Why? For readability, and so that they can be modified independently in future if required.

        Business impact?
        Zero to none.

        2. Database – okay so the database doesn’t recognize foreign keys but if you’re familiar with relational databases and the naming convention in OpenCart this isn’t an issue. Perhaps the product page queries are heavy but even our heaviest traffic sites don’t slow down because of this. What does slow down admittedly are sites that have a lot of categories and a lot of products (we’re talking 10s of thousands) but the installation of Jeff Hunter’s excellent “Increase Page Speed” extension fixes this by adding some caching.

        Business impact?
        With a cache extension: none.

        3. Templates – I’m not really sure what the issue is here, I mean most of the time you won’t just be outputting asdasd on the page so the ability to control this in the backend is essential and the nomenclature around that is necessary.

        4. SEO URLs – well perhaps this could have been done better but some sites we’ve built and put live have started to get lots of organic traffic with very little marketing. Perhaps the way this is written and works could be better and sure enough there are great SEO extensions that do implement all the requirements from an SEO point of view, although that doesn’t mean it’s an elegant solution to have to rely on an extension. But back to the point – is this a reason to “never use OpenCart”? Certainly not.

        Business impact?
        With an SEO extension, very little.

        5. Security – I’m not going to say that none of our sites have ever been hacked because I’ve been in this game long enough to know every host/company gets hacked at some point. If you haven’t been yet then you will be soon enough. But the exploits we’ve seen were more likely to have been through weak passwords somewhere else in the software stack than holes in OpenCart.

        Business impact?
        Very positive that OpenCart is so secure.

        6. Architecture – you’re saying OpenCart isn’t OOP, well you could argue that no HTML web application is OOP because it’s not stateful and the objects don’t really exist in memory in the system… but either way the OpenCart code is structured very well indeed in my opinion. Even before I knew the system, I could very easily find the exact file I needed to modify to make any given change because it was EXACTLY where it should be according to MVC and well-known programming conventions.
        And as for vQmod… well it’s trying to solve a very hard problem – how to upgrade the core of an application that may have been modified without overwriting those changes. Seeing as you can’t know what the upgrade will change, it is difficult but can you recommend a system that tries to achieve something similar and does it better?

        Business impact?
        The architecture of OpenCart is great which brings many business benefits including a lower cost of development lower hosting costs due to more efficient code etc.
        Re. vQmod, if there are a lot of changes required then there will be a lot of XML and upgrades will be time consuming and costly. But are there really any better alternatives?

        Conclusion
        Perhaps a well-meaning article by a frustrated developer but with a conclusion that is unfortunately just plain wrong!

        In fact I would say OpenCart SHOULD be used for most projects ranging from small shops with just a few products right up to SMEs and bigger businesses where ecommerce functionality is required. This is true even for hundreds of thousands of products, hundreds of thousands of users per month and many thousands of orders per day.

        • Florina

          That’s about it when it comes to OpenCart.

          Also of note is that most customers don’t give a damn about which piece of software I use, they just want a website that does exactly what they want.

          But where I can deliver a great OpenCart website with $50 to $500 worth of addons, the same cannot be said about PrestaShop. And what on earth can be packed into 20MB of zip archive? Magento is slightly larger than that – the zip that is.
          I went to Magento to download it just now and I didn’t have an account. Oh well, I clicked on ‘create account’, input my name, email, and password and it took me straight to an empty page: https://www.magentocommerce.com/products/customer/account/createpost/
          Must be something about those tables and transactions.

          Updates are complicated when you have many addons, that’s the part that bugs me most. But the code itself is simple to read, the code of any addon is just as simple so in the end it’s not a deal breaker.

          I don’t update, I make a clean install after I review all the addons. Chances are, the customer won’t want the same look and features 6 months from now on.

          If you are a developer who goes to work for a company and you have to ‘fix’ OpenCart websites every now and again, then you would probably not be pleased with how OC looks like code wise.

          If on the other hand you are self employed, then you need to balance the security / features / ease of development / cost of development. As far as I’m concerned OC is good to go.

          Oh no, oh no, oh no! I choose crappy code because it doesn’t have security issues and it’s cheap to maintain. That’s just your point of view.

          My husband would drop dead if someone would ever suggest he should use a Windows server for… anything really. He wouldn’t touch Windows with a 10 foot pole. So what? Windows is not a piece of crap, plenty of really large corporate websites run on Windows – it’s their choice. The fact that my husband thinks Windows is crap doesn’t mean anything else that he made a different choice for his own particular reasons. I myself started as a VB programmer and worked for some years and I know it’s not crap.

          I’ve seen more ‘PHP is dead’ and ‘PHP is crap’ posts than I can count. So what? You know something? Those people are right in that PHP lacks a number of features some consider important and OOP is not fully mature after so many years.
          So hmm, yeah, it’s a tough call for me. I’ll just… deal with its shortcomings.

          Once you understand what works best with a certain language or framework, then you’re good.

          Also Daniel the developer is not someone who I’d have for dinner any time soon. So what? I work with clients on a daily basis and have seen plenty of people I can’t stand. This is business, I’m not planning on marrying him. I’m a big girl, I can deal with difficult personalities.

          • paulfeakins

            I’d agree with all of the above except the not having Daniel for dinner part – I’ve met Daniel and spent some time with him – he’s a really great guy to talk to, not in the slightest bit rude in person and I can understand his frustration at negative comments on the web about his software which he gives away for free!

          • techchattr

            Enterprise Windows is not even remotely comparable to OC. OC doesnt even have a test suite or any sort of testing done, you kinda make changes to it and pray..This is not the way software is built and maintained. Its fine if you do it that way, but its not the professional way of doing it…

      • Wessel Louwris

        I have too agree with most points in the article. I just took a quick glance at opencart 2.0. Coding style has not really been improved it seems. Even still myisam on the create script (although I think that’s not the worst thing of the coding since it can easily be changed)

        But no known security issues on opencart, as was mentioned in the article! That’s quite good if it was designed that bad. So the coding might be ugly and not up to current standards. But apparently that doesn’t make it unsafe.

        I’m using 1.5.6 for a long time for 2 small shops with <1000 articles and <20 orders a day I maintain in my freelancing hours. And sssht, don't tell anyone, but I even changed some core opencart files in my projects for a few specific wishes, with very little effort. With VCS on my project I could even do upgrades by applying the changes again. (I looked at vqmod, but that was just too awful for me)

        And the bad coding does not make it slow also if read the average comments here.

        I have to agree with the other comments about magento too (which I have been coding against professionally in a project). The coding is better but what a terrible performance (not amazing with soo much code in php). And what a terrible documentation.

        So I guess a "good" (according to the design patterns etc) coding style makes a project better maintainable and more fun to code with but not necessarily faster or safer.

        So as long as I can tell my customers that for their budget they can use opencart but have to stick to core&modules functionality I think opencart is an acceptable solution.

        I have a new freelance project coming up, I will take a look at prestoshop…
        Or try something with one of the cakephp shop plugins (my personal favorite php framework).

  • Alex

    When is techchattr’s ECommerce system coming out that is way better than opencart? You sound like an extremely intelligent person, Yet you sit behind your computer and bash what countless programmers contribute to (mostly for free) to make opencart a better program than it was in its last version. Its unfortunate you spend your oxygen and electricity bashing other people’s work instead of promoting your own because a quick look over this blog and there is a lot of great programming resources here, too bad ill never use them to ensure I am not supporting people who feel bigger than they are when they sit behind a keyboard.

    • techchattr

      There are already a bunch of better ones out there, seems like you didnt read the article to the end, I am just pointing the major flaws in this ones which makes it unusable for anything serious…Since when pointing out the obvious flaws of a system means that I have to write my own one and open source it LOL…Your argument doesn’t make any sense, its like saying that Honda for example makes shit cars and pointing the obvious issues with them, so you should build your own to justify it…Wtf!?

  • G Harvey

    Hi all,

    I have just come across this post, and want to talk about the pro’s and con’s as a shop owner, as one of the very people who use the software and not a developer. It is us after all, that these sites are aimed at. End users don’t really care about how a piece of code works, all we want is something that does work, at an acceptable cost.

    I have to say I am very happy with opencart. Our site turns over £100,000’s a month and while we don’t experience many problems, we do have them (Thankfully I know someone who can sort most of these out for me). But there are some drawbacks – remember – as a user.

    The opencart system on its own is basic. To do many things, you need to buy extensions. I haven’t worked it out, but I would think that over the first year, for the amount we spend on extensions, we could have probably purchased a bespoke solution. Qphoria has been a savior to some of the things we have required (particulary the Zone Plus extension). It was also very easy to learn the structure of everything which for someone who only has a very (very) basic comprehension of either html or php means everything.

    Updating is a nightmare. Sure its easy enough to update opencart, but then all the themes and extensions need to be updated too to make sure they work properly. Some developers update their software, many just abandon them. Which is not very helpful when you reply on them.

    The opencart forum comes across very much like the XDA forum at times. If you need help as you don’t understand something, you can get treated like crap for not knowing something that is considered simple to others. I can appreciate also that Daniel gets a lot of criticism and takes it to heart, but they was he replies to people doesn’t help. Just look at the posts on here (if you’re reading this Daniel, please don’t take this as me bitching about you as I’m not, but you do need to look at comments made towards you on the forum as a query rather than a personal; critcism).

    My biggest worry is what the future holds when the fabled opencart 2.0 is released. There are many comments about how great it will be, but I have a feeling it will be a minimum of 12-18 months before we would be in a position to update due to the amount of extensions we run. If you want it to be a success, you need to do something to encourage developers to speed up their updates (maybe provide limited discounts on the %age you take from sales to those who update their extensions in a timely manner. We are on 1.5.4.1 as we consider it stable (and to be honest I can’t be arsed with spending a couple of days hunting down updated versions of everything).

    And to the moaners on here – don’t hate me for my opinions, they are just that – OPINIONS.

  • metrics

    @ ferisoft You might be a talented programmer and might even have a good job that pays good $$. I feel you are on the wrong side of the fence because:
    – you are not exposing your products but find it easy to criticise the work of others and above all when others are famous.
    – Your article is provocative probably with the deliberate intent to get traffic to your site using Opencart brand and popularity.
    – If you wanted to help others as you claim you would have been donating some of your knowledge and code to the project to prove yourself before talking ;)

    With regards to DK (very smart guy imho)
    – he created a business and a living out of nothing
    – he looks at things from a business point of view not only programming and code (see cost savings for small business )
    – He listen to his community and many things come from community suggestions.
    – He has a free open-source product with a large community to protect. – he’s not politically correct however he’s contributing to make the world better –

    What’s not clear to me is your role in this. You are getting traffic to your site and fame by criticising a product that is very popular, so the question is: how much do you charge per hr to get me an e-commerce better or equivalente to OC up and running?

    Let me say that many business (including big ones) start in a garage with very little money. OC is the best friend for these guys :) It’s about $$ and we’ll understand that.

    Replying to your statement below. → We are reading and we are not stupid mate.

    “But to everyone reading, after going through the comments I am pretty sure how solid of an idea you have right now about the author and the quality of the software, so I hope this helps your decision to move away from OpenCart. “

    We live in a real world which is not perfect but, I repeat, we are not stupid,

    PS I’m not associated in anyway with DK or OC

    • ferisoft

      You can say whatever you want about price and how cheap is good for a business. That’s not a legitimate reason to base your business on SHIT code. I gave a few other open source carts that are significantly better written than OC. And then I get the other argument OC code is simple, well think about it if you run a business and your developer says I dont understand magento code (which is actually much better architected, even though with its own flaws), you should be running away from this guy fast…The fact that some code is more complex doesn’t mean its worse…I also said I am not investigating the business side of things here, purely the code and the architecture of OC, so developers who are considering it can see the issues I faced before they decide to use it. As you can see from the comments obviously im not the only one with those issues…

      • metrics

        Note that I don’t say whatever I want. I made my points and you simply drifted them away.

        As I said, you might be a good coder = your points might be correct however you detract and criticize someone else work which happened to be very famous and popular not to mention it’s helping others more than you do.
        I suspect you deliberately wanted to jump on the opencart wagon for a free ride. But just in case you wrote this article in good faith and you are a smart kid, think this way:
        is WordPress the best piece of software out there, or at least was it when they started?
        You
        well know it was not. It was however easy to use and extend than others and
        that made them famous, the world adjusted around them and they improve
        their software as they go. Was Microsoft windows the best OS out there
        when they started? .probably not …and the list goes on.

        back to your statements -> …..about price and how cheap is good for a business…..
        It’s not about how cheap it is, it’s more about using the right tool for the job without wasting resources. On top of that, no one stops you to move from OC to Magento, prestashop or even django + ecommerce etc as you grow. it’s not that complicated to migrate from OC to a different system.

        -> base your business on SHIT code
        That is not correct and defamatory. You are talking about a product that works out of the box, is secure, easy to modify and understand. The code could be prettier and better organized but I would say there are other things more important than that.

        -> The fact that some code is more complex doesn’t mean its worse.
        I agree but not sure why you mention it. python and java are also more powerful than PHP …..so what. Users decide what is to survive and what not. you have to respect that.

        -> As you can see from the comments obviously im not the only one with those issues…
        there are plenty of opinions on both sides. I usually base my decisions on more than few comments :)

        Here is a REAL example for you. A company started a small business from the back of the garage selling on ebay and on her own website which was based on Oscommerce (similar to OC more or less) after 6 years of hard work and growth (millions in revenues) the company moved on to use Magento. The move was necessary mainly to improve the processing of orders for different customers groups and keep stock control accurate and sophisticated. importing data from OSc on to Magento was not too difficult it turned out more complex and expensive to make magento perform well with approx 1k visit per day on a dedicated server (note -> not a server farm).

        • ferisoft

          Well i guess well have to agree to disagree, I dont really see a point in prolonging this argument, if you love using OC and developing on it, good for you, keep doing it. In the meanwhile you can just briefly browse over the comments and see its not only me that is putting out the points in the article.. :)

          • metrics

            It’s always good to discuss and listen to others opinion ;) yes. I read all comments -> I see much show and little substance.
            Do you agree that every coder/programmer has his own recipe that is superior to everyone else?

          • ferisoft

            No but in programming there are “best practises” they are called best for a reason and frankly open cart abolishes most of them…

        • R Rogerson

          Not being funny, but read through all of this – and count how many times ferisoft insults someone who disagrees with him. Then go read the same number of posts on the OC forums, bug reports and FRs, and see how often the poster is insulted.

          Personally, I think ferisoft should get a medal for not calling the OC owner several foul names :D

          Just look at some of the blatant, glaring and unforgivable issues that OC has (Such as poor canonical structure, lack of accessibility on forms, lack of proper caching mechanisms, bloated and sluggish sql calls etc. etc. etc.) – many of these items have been flagged for ages, many with “fixes” and “patches” ready to go … and they have not been included in any recent OC updates!
          Free should != pants, but in this case, it does (it’s things like this that give opensource a bad name … that and Daniels disgusting reactions to honest and accurate bug reports etc.).

      • goinindia

        so you ARE selling magento…………

  • Guest

    Now this is interesting. Personally, I used to use a small eCom platform
    that worked perfectly well back in the day and used to serve my clients
    to what they needed. But then they closed down and I started looking
    for a suitable replacement.

    Now I’ve build sites in OC, in
    Shopify, in Magento, in WooCommerce, in LemonStand, Presta etc, you name
    it, i’ve built a site in it. I found that in the early days, OpenCart
    won the draw and I started building a bunch of sites with them.

    The
    issue though for me is the maintenance of an OpenCart site. I’ve never
    once, in all my years of using it, had a smooth update. Ever.

    You’ll
    notice that the upgrading instructions are 13 points long. 13!! Nothing
    should be THAT complex to update. I swear I’ve had furniture from IKEA
    that have had less instructions to assemble the most awkwardly named
    wardrobe.

    I think alarm bells start sounding when the first
    instruction is to overwrite your entire site except config files. SQL
    errors appear to be the norm, and repeating code is a nightmare. You
    shouldn’t have to define the same thing for every different page, or
    element of that page should I mention. Global variables should be
    carried throughout, you shouldn’t have to define a title to use in the
    header, then the body, then in the footer. If I want to use a title, I
    should just be able to use a title.

    I now dread updating clients
    websites, and hate the thought of how much time and effort has to go
    into me explaining to the client that their site has yet again broken
    due to an update that most likely won’t benefit them.

    I feel
    sorry for the guys and girls who make VQMods, as they have tried to give
    hope to a bad situation, so when you update, it’s less likely to break
    things.

    I know OpenCart is a community driven platform, but I
    can’t help sense the lack of constancy and passion for the project, it’s
    like it’s still in it’s infancy, it lacks style, substance, and
    overall, a reason to use it other than it being free.

    And for
    this, Opencart has no doubt lost out to the new kids on the block; The
    platforms that charge a small amount a month, but provide you with a
    slick interfact and customer feedback. They run workshops, they improve
    constantly, and they make it their best effort that you never even know
    that your site is constantly being updated to more secure code.

    My
    final say would be, I’ve moved away from OpenCart now, apart from two
    clients I have that use it, I’ve moved over to using WooCommerce for
    Wordpress. I don’t recommend you just drop everything and move away, but
    consider your options carefully. Read comments on pages like this to
    get a feel for what people think (and what the creator thinks to that).

  • yratof

    Personally, I used to use a small ecommerce platform that worked perfectly well back in the day and used to serve my clients to what they needed. But then they closed down and I started looking for a suitable replacement. Now I’ve build sites in OC, in Shopify, in Magento, in WooCommerce, in LemonStand, Presta etc, you name it, i’ve built a site in it. I found that in the early days, OpenCart won the draw and I started building a bunch of sites with them.

    The issue though for me is the maintenance of an OpenCart site. I’ve never once, in all my years of using it, had a smooth update. Ever. You’ll notice that the upgrading instructions are 13 points long. 13!! Nothing should be THAT complex to update. I swear I’ve had furniture from IKEA that have had less instructions to assemble the most awkwardly named wardrobe.

    I think alarm bells start sounding when the first instruction is to overwrite your entire site except config files. SQL errors appear to be the norm, and repeating code is a nightmare. You shouldn’t have to define the same thing for every different page, or element of that page should I mention. Global variables should be carried throughout, you shouldn’t have to define a title to use in the header, then the body, then in the footer. If I want to use a title, I should just be able to use a title.

    I now dread updating clients websites, and hate the thought of how much time and effort has to go into me explaining to the client that their site has yet again broken due to an update that most likely won’t benefit them. I feel sorry for the guys and girls who make VQMods, as they have tried to give hope to a bad situation, so when you update, it’s less likely to break things.

    I know OpenCart is a community driven platform, but I can’t help sense the lack of constancy and passion for the project, it’s like it’s still in it’s infancy, it lacks style, substance, and overall, a reason to use it other than it being free.

    And for this, Opencart has no doubt lost out to the new kids on the block; The platforms that charge a small amount a month, but provide you with a slick interfact and customer feedback. They run workshops, they improve constantly, and they make it their best effort that you never even know that your site is constantly being updated to more secure code.

    My final say would be, I’ve moved away from OpenCart now, apart from two clients I have that use it, I’ve moved over to using WooCommerce for WordPress. I don’t recommend you just drop everything and move away, but consider your options carefully. Read comments on pages like this to get a feel for what people think (and what the creator thinks to that).

  • Geo

    By the way, there are several typos in this article. If you have made such typos in your PHP you’d end up with bugs the size of your entire shopping cart.

    • ferisoft

      English is not my first language and grammar is not the point of this article, thanks for pointing out anyways

  • ttt

    I agree. Wholeheatedly! The code is absolute BS. And I think DK mentioned somewhere that English does get loaded as the default language. Well, that’s not completely true. It may be true for Opencart itself, but not for the modules, which I think is insane. You could quite simply force it everywhere that English is always loaded. It wasn’t that nice to have something like ‘text_export’ in my admin menu (store default language was not English).

    BUT I do like OpenCart. It is rather fast, it gets the job done. I do find it a bit difficult to understand with the module/extension placements etc. E.g. why is ‘account’ installed as a module? But it is popular and is more used because it is popular (meaning as a store you want something that is widely used and has a large extension/module collection as such OC’s popularity gains even more popularity).

    And I do like vqMod! For more serious work, it ofcourse doesn’t work. But I have some small changes and I do not want to edit core files, so it is perfect. I am a Magento developer and to make some changes I have to write a module. I can override a local file, but that is not recommended nor safe. Thus, you have to write a module. And it is quite tedious sometimes. E.g. to write a module to simply override a cron job scheduling time. I do wish Magento had something akin to vQMod.

    Though I am a it apprehensive about installing OC lately. Beside the awful code, the major drawback is DKs attitude. If you say one word, you’re the devil. The points in this article (or any other) are all justified and instead of addressing them properly, the author’s personality gets attacked – you are pathetic etc. It leaves me gaping!! Not to mention, how does one have the time to argue with all the critics. Write better code instead! E.g. 1.5.6.3 was release with a MAJOR bug – it checked if there was <? in an image file. Well, it does exist quite naturally in an image file, which made image upload virtually useless. And instead of releasing an isntant bug fix, it is scheduled to be released in the next version. What are the people supposed to do until then? I mean, at least turn off the buggy download so that people couldn't get it! I am apalled!

  • R Rogerson

    I’m forced to use this heap for a client … but I’m not happy with it.

    OpenCart = Simple.
    That would be “simple” as in “nothing clever”, not “easy to use”.

    The worst part is, there are extensions (sometimes tons!) to patch things … and most haven’t been included in any update (you’d think if 10 people develop a patch, and hundreds download it, that someone, somewhere would stop and think “erm, maybe we should do that?”).

    And to me, the final straw is the reaction you get.
    If you look through the forums or the bug reports, you see people raising genuine issues basically be spoken too like idiots. They raise legitimate concerns about things like SEO_URL, and get given dumb responses about quantum physics, when the reality is that the problem isn’t the user or the desire, but a lame infrastructure with poor application (they don’t seem to understand just how limited/stupid the SEO URL system is!).

    If I could avoid it – I would.

    That said, I wouldn’t touch Magento either.
    2+ seconds to import a single item (try 25K+ items!).
    Data split and shoved amongst umpteen tables, then some of that compiled into a single table … and the search is every bit as bad as any other platforms.
    Standard pageload times of 5+ seconds (and a sod to improve).
    Though far more powerful and flexible (and professional) than OC, M has it’s own bag of bones to struggle with.

    The real problem is (for all CMS/e-Com etc.) … Developers.
    In the vast majority of cases, they aren’t developing thinking of end users (other site owners) or end-end-users (shoppers/users). Further, they don’t tend to be up on “other bits”, such as usability, accessibility or SEO.
    I just wish people would either learn the additional stuff, or at least go and find someone who knows and collaborate with them.
    Instead, we end up with Dev-Toys, half-baked apps and nightmares to work with :(

    I see that Daniel Kerr responded here…
    … lets play!

    Security – why do you Not use Nonces for things like the login?
    Why use a URL based token rather than a system/value based method?

    SEO – why do you not (as default) include a field for custom title (meta-title (Though that is the wrong name!))?
    Why do the SEO-URLs fail so badly? You cannot run with 2+ categories with the same seo_url. A tree system would permit it. compounding the values would permit it. Chaining the checks would permit it.
    None of that is done though.
    How about custom Link Text?

    (ideally you should have inputs for Title, H1, Link Text, Link Title attrib, Image alt etc. – all customisable, all defaulting to prior input (no title, default to product/cat name etc.))

    None of this is “new”.
    This is stuff people have asked for in just about Every e-commerce/CMS system for the past 10 Years!
    Yet you went the same route as every other dev, and ignored the common features that others have to patch in.

    Why?

    Please, look through the extensions, see what the most popular ones are, look at why they are popular, and start including that functionality into the next release!
    (And if you want SEO help, find and SEO. Then go find someone that deals with Usability and Accessibility, and get them to give some input! THEN you may have something to be proud of!)
    (What, you’re popular? So what, so was OS Commerce, so was PHPBB and VBB :D IT sounds awful, but your “customers” are ignorant – they don’t know what issues to look for, they don’t even reaiise what is bad, let alone why it is bad! That’s part of your job! You’re meant to know, and handle it. Not ignore it for years!)

  • http://www.redfrogstudio.co.uk/ Dom Kape

    Reading your comments – What would you recommend?

  • proud_singaporean

    i use opencart a lot since i was in my high school… wow, after looking at how the author of opencart, Daniel Kerr behaves, i think i might just stop using it…

  • realitysource

    Is the whole opencart community made of spoiled 10 year olds? that’s the impression I get here. These people can’t really be professionals, who’d give them work?

  • Danielfans

    Dear Author,
    Can you write a better cart for us?
    I have used osc, zencart, cscart,prestashop,opencart,magento, woocommerce, tomatocart…
    The one i choose finally is opencart.
    You know why?
    Easy to use, user friendly, cheaper but pretty theme+modules, no need much time to learn.

  • Feras

    Ok, I admit I am a fuck suck asshole, i write this article becuase i can get 5$ commision.
    I am sorry to everyone.

  • Pingback: Friv

  • Your dad

    fuck you, why delete my post? I am a user and i love opencart.

  • http://lasolutionauxregimes.fr/ hamiseady

    You are of course eligible to your viewpoint about any application, but this content is full of a mix of discrepancies and overzealous slamming of some relatively typical programming techniques that you declare to “have never seen before”. This brings me to believe your contact with the globe is a rather new one (read: know-it-all youngster).

    NyLotto

  • Lamberto Azzi

    I use OpenCart in my webshop and i am very satisfied: for the first time i can edit the php and tpl files and make small customization myself without the need of a professional… And the prformances are perfectly fine also on a regular hosting.

  • Kevin

    At the end of the day, it is all about performance. OpenCart runs FAST and with one of the nice ajax one page checkouts it converts well also. Code can always be improved, don’t care what cart/program it is…

  • Ng Han Wei

    You guys are mostly developers. please think for us non-developers. We want something easy to use, smooth.Takes up little space as we rather use the space for images.

    I tried megento,presta,zencart(was the worse for me) Woocomerces was abit limited.

    And about the repetition code, whats wrong with it? We try to reuse the same tools to reduce cost instead of buying new one. Not sure how it works in the coding world.

    • Niechea

      This is an article written for developers.

      Inspecting and critiquing people’s work in the open source community is actively encouraged in most circles. It’s called peer review. Sometimes it can seem harsh, but it is nearly always constructive.

      When multiple developers are contributing to a project, only the best code should make it’s way in.

      A good web application should be extensible. You SHOULD be able to maintain and update the source code of your application, and therefore modifying any of the source code should be prohibited, as it would be lost in an update of the source code.

      From glancing over this article, I see some are resorting to rather archaic practices to achieve what they need to do with this platform.

      • Reed

        Without business, who needs e-com solution(or e-com developers)?

        • ferisoft

          There will always be ecom solution and currently there are a bunch which are superior to OC, so if you want to use inferior technology in your business and suffer down the road when you have to do updates and add functionality and resort to jokes like VQMOD and have a complete untested piece of software that your whole business relies on, all power to ya :). So of us prefer to do things professionally.

  • Niechea

    I would sooner write my own e-commerce platform. There are a lot of people criticising this article. The author of this post has pointed out a series of flaws which have largely been ignored for many years. A community of half decent developers would have recognised the need to abstract the repetitive code a long time ago.

    I see that author has become a target of abuse on the count of him being supposedly unintelligent, young/new or simply uneducated. I do not see how this offers any critique regarding his article.

    In that same light, I might be considered new, uneducated or unintelligent. Unfortunately, whilst I lack a computer science degree and have been involved in programming for only 6 years (professionally), I often come across the same snobbery in person. Sadly, I have met developers who, having been involved in programming for the best part of 20 years, felt that their approach to, or opinion of a project is the only one to consider. Often, they are completely wrong, or misinformed, or just stupid, in fact.

    Now, it doesn’t take a rocket scientist to recognise that a large proportion of OCs codebase is now old hat, dribble. In fact, for those who are quick to validate their judgement based on years of experience will be surprised to hear that even a Project Manager that I worked with was able to recognise some of the flaws in the codebase (he was delightfully curious). So we didn’t use it. Thankfully.

    It’s all great that you defend your precious applications, whatever they may be. The truth is, nearly every bit of software out there is in some way malformed, ugly or painful to work with. But that’s a matter of opinion.

    The main reason I wouldn’t use OC is because I have no need for it. I have found a ‘solution’ which negates the need to use any other approach, in almost any case. It’s a little bit like using WordPress to make websites, when it’s a great blogging platform – except, I don’t know OC is supposed to operate as normally.

  • Reed

    Well, I have a small one-man-shop and I find opencart just fine. The reason for using my own e-com site is that ebay/amazon charge me too much.

    My very simple expectation of an e-com solution:
    – Low up front costs
    – Even lower maintenance cost.
    – Easy to implement by just myself.
    – Fast, I hate delays after click.

    So that pretty much limited my options to WP+Woocommerce, OpenCart, Prestashop.

    I tried to avoid WooCommerce because WP code base is a whole mess.

    Tried Prestashop for a few weeks, and the amount of problems for a clean install is enormous. Everything is a challenge. The most stinking issues with Prestashop:
    – Can not calculate shipping cost by weight. Has to buy an expensive plugin.
    – The shop URL is stored in DB, so I can not run two different copied from the same DB. (Hard to test between localhost & VPS)
    – If I modified two different tabs of a product and save, only the current tab is saved.
    – Try switch the theme and back, all configurations are lost!

    With open cart, I had none of the above problems and the site is up in less than a week.
    I spent about $110 on theme&modules, and $5/mo digital ocean VPS loads the site lightning fast.

    The few things I like about OC:
    – Themes/modules are generally cheaper than Prestashop.
    – The core system has very little bugs.
    – Default shipping module is 10x better than Prestashop.

    The bottom line:
    Change your post title, it does not represent the reality for many small business owners.

    • ferisoft

      It does however reflect the reality for most develipers and thats to whom this article speaks. Thanks afor sharing your experiences with it though.

      • Reed

        To whom this article speaks, I see a very legit reason that you developers should keep offering OpenCart as a viable solution to us(customers).

        I only posted because the other solutions you have recommended all fall short at places. You know what I mean if you spent 4 hours a day to maintain catalog in Prestashop. Opencart saves a lot of time.

        Not everybody willing to add headcounts and pay 1/2 million for what we make. Without business, who needs e-com solution(or e-com developers)?

        • ferisoft

          The backends of all those systems – Magento, Prestashop, Opencart work in the same way UI-wise in terms of managing the product catalog, so I am not really sure how it would take you 4 hours more to manage the catalog in any of the alternatives, both of them actually support bulk updates…so that should be cutting your time.

  • Emily powell

    Am Emily Powell from Canada I never believed in spell casters until my life fell apart when my lover of 4 years decided to call it quit. I was so devastated that i had an accident that left me bedridden. After 7 months of emotional pain and languish, a friend of mine introduced me to a certain spell caster, this was after I have been scammed by various fake spell caster. I was introduced to DR ONIHA ( A Spell Caster). In less than 12 hrs i saw wonders, my Lover came back to me and my life got back just like a completed puzzle… am so happy.. Dr ONIHA have all kinds of spells from pregnancy to love,from employment to visa lottery winning. He has spell to stop divorce,spell to make someone look attractive and others. here’s his contact for serious minded people only, it might be of help….onihaspiritualtemple@yahoo.com. wow Dr.ONIHA…thanks am so grateful as you saved my life.
    ,

  • Mostafa

    I’m an OC developer (well, not for a decade), and I see myself eligible enough to give a point on the article.
    First of all, the author is true, OC is a pain, and the developer who has to work on it is in pain, too. My point is to developers who has to use OpenCart.

    Well, first of all, this CMS or E-Commerce CMS (OpenCart) does not have any SQL-Wrapper which could be used dynamically and quickly. WordPress could be a great example of how query-handling could indeed be implemented, the thing all missing amongst foolish OpenCart SQL statemens. I never mention ORM, since it would be a never-coming-true-dream.

    Second, the author is right, the input handling could have been reduced to three to four lines, and using a central logic inside a function could have been much more robust than such traditional out-dated line-by-line approach.

    I see a person here claiming to be a computer expert for almost five decades, yet he does not bring forth any fact on why the author is wrong! He says OC is good for small e-commerce apps, yet we all know that being good does not equal being good technically. However, I even do not agree on this..

  • swed

    Jesssusfuckingchrist… Seriously, paulfeakins, you just gave naivety a brand new and hardly flattering face. Daniel apparently belongs to a rare type of persons; the two faced ones that kicks ass downwards and licks ass upwards. Him being (what we in Sweden call) a besserwisser (know-all, know-it-all) makes it all the worst. What are you trying to say here? Shall we hail Daniel or regard him as a savior and what do you mean by, “…gives away for free!”? There’s no such thing in this world, nothing is “free”! Everything comes with a price, everything! So does OpenCart, let be it’s indirectly but there’s still a cost to make it work as one desires. As a merchant I really don’t give a shit whether my web shop code makes programmers cry or laugh. My only concern is that the software does what it’s supposed to do. No fuckups and that it satisfy customers shopping experience so they return. These days I never directly trust what I read or see on the net, and I felt that ferisoft wrote his article more from being upset than to inform others about OpenCart’s shortcomings. He, for sure, didn’t use best practice writing his stuff. On the other hand, Daniels reaction is incomprehensible and his behavior definitely unacceptable. That dude certainly needs to be taught to shut up and sit still in the boat and furthermore, be utterly thankful to all the decent people that are trying to improve his creation. Surprisingly enough he’s not all content with the massive and gold worth help he receives from the OpenCart community (or anybody else, for that matter). Why? How come? Why does he constantly and stubbornly decline to listen to his own team’s suggestion for improvements? How come he refuses to implement all the things that would make OpenCart a heavy player in the e-commerce world? Why is he keeping the apple of his eye, his baby, more or less undeveloped and even remove functions? At first I thought Daniel was plain stupid or a poor moron alternatively suffering from a sickly boosted ego that had/has a restraining influence on his ability to elaborate OpenCart. Boosted ego, yes but stupid, nope! Daniel has proven beyond reasonable doubt that he has quite a disturbed personality, though. The whole thing obviously boils down to a well known human imperfection, namely; the unrestrained greed. OpenCart as a commercial product isn’t sellable on the market so the only way Daniel can generate some dough is by charge an unreasonable stiff provision on third party add-ons. Naturally he wants to keep OpenCart as basic as possible thus violating the very essence of the open source idea! Judging from today’s OpenCart’s deserted community, that just two years ago was a vibrant and active place, I say that this cart will sooner than later fall into oblivion. I for one will move away from OpenCart quick as hell coz Daniel have sowed the wind and will reap the whirlwind or as they say; what goes around comes around. BTW, I just visited prestashop.com and folks, that site are truly everything opencart.com is NOT!

  • Biscuit

    What a great post! I am guessing maybe this software started out as something for one particular job and was once just a couple of files and somehow morphed into a “project” and then it was too late to go back and sort it all out…

  • Opencart is fine

    Wha wha whinge wha

  • Lucas Ansalone

    Well, its Open Source software, so you should help and contribute…

  • Jack

    If you could implement an open-source project which is popular as opencart, i think you are a good developer. You don’t know how hard to maintain an opensource project. One more thing, don’t think and comment a project just like a technical boy.

  • manuel

    ferisoft, many thanks for this article. I was planning to migrate my shop por OSCommerce (what a mess! but was a good choice on 2004) to OpenCart. I had done already some tests and I was anoyed that the installation broke after installing a few modules and trying to modify their behaviour. I thought, well, probably I’ve done something wrong, let’s start over again. Since then I have not had the time to re-start but now witht your article I think I’ll re-start but with Prestashop (for which I had a kind of ilogical repulse which I should get rid off).

    It would have helped if you kept a bit more calmed in your writting and if you showed also some of the good parts of OC (which should have some I guess), but I agree with your criticisms to OC. And I’m not 20, actually I’m 43 and a MsC in Computer Science with experience programming in assembly, C, C++, java and php, and experience working with enterprise level databases like Oracle (for mobile operators billing systems).

    Moving more OSC to OC initially seemed like a good improvement, but I’m learning that in some areas it is not an improvement at all. Form handling seems better on OSC if I have understood it well (which I might not).

    In any case, I’m dropping my current installation of OC and moving to Prestashop, which probably is more expensive to buy modules but it will save me a lot of time (I hope) that cost a lot more money.

    Thank you ferisoft, you probably saved me a lot of time and headaches.

    Daniel, thank you for your work, it is a great achievement, BUT you need to move on with times and step by step modernise OpenCart with transactional DB, a simple modular framework and advanced OOP with proper use of polymorphism, etc. Please take this constructively, I’m not trashing your work, I’m just saying that I think it should modernise building on what you already have which is a lot.

  • http://mickmurillo.com/ Mick Murillo

    This night I just installed opencart and I found it don’t recognizes my admin credentials, that’s a bad start… but the code is effectively more lightweighted than others.

    • http://www.m1ck.pro/ Mick Murillo

      Easily solved the issue changing the password to a simpler one.

  • http://www.janes.co.za/ Janes Oosthuizen

    I have been developing for Open Cart for 2 years now. We run a e-commerce shop and after reading the above I can happily support the fact that its constant hacking and tweak and absolute abuse of vqmod to get things working.. There are numerous flaws, duplicate orders, checkout js fallback gives headaches, repetitive code the list goes. I wont use Open Cart again. Thanks Feras. Great compilation.

    • kabatza

      1. Opencart without any extensions will not break on upgrade unless you are doing something wrong!
      2. If the extensions are bad or you hardcoded them in core files without keeping a vqmod as a reference then this is not opencart’s fault! Also any software update needs updated extensions as well… this is not opencart’s problem… all software is like this.
      3. “abuse of vqmod to get things working” Same cause as no.2 Do you actually know what vqmod does? Does “Production” and “Development” mean anything? I never use vqmod on production… but I do use vqmod in nearly every php development project (not just opencart).
      4. So what are you going to use instead? Magento or Prestashop? You will soon have new headaches because “perfect software” does not exist!

      ferisoft does have some points for opencart but the statement “should never use” goes way too far!

      Where he does have some valid points:
      1. The language system and the form handling. The 2 language arrays are indeed pointless, but so very easy to change, I wonder why they have not been done. I guess it is for extensions compatibility probably. I personally do like the repetitive code in the form handling because it is easier to debug…but as ferisoft himself demonstrated it is also so easy to change.

      2. SEO URLs. I will agree there is the small problem if you give the same SEO name to both a category and a manufacturer, but once you know this, it is not a problem any more. What I do is always add “-m” and “-c” after the seo names. It will also only take 10 minutes to edit the code so this suffix becomes automated, but never bothered to do it because after all how often you will be adding categories and manufacturers?
      I don’t think a routing system like this is needed anyway and in my own custom apps I use regex instead like this:
      ^mnfrer/([*.]+)/([0-9]+)/$ index.php?itm=$2
      ^category/([*.]+)/([0-9]+)/$ index.php?itm=$2
      ^product/([*.]+)/([0-9]+)/$ index.php?itm=$2

      Where he is not right!!!
      1. MyISAM instead of Innodb. You can debate all you want but MyISAM is 3x faster in fultext indexing and SELECT than Innodb and I would drop transactions and foreign keys in favour of this speed difference any time! A combination of MyISAM and Innodb could be an option if you can spare the RAM to use 2 engines. A large store with thousands of products will run faster on MyISAM….period!

      2. Templates and modules: @ferisoft:disqus you are doing something wrong here! Unless you don’t know Opencart…there is no way it will take two hours to copy a dummy module or edit a template. I think you did not understand how things work.

      3. Architecture: Yes, there are 2 sets of files one for the admin and one for the frontend. This has been explained in the past and it is done on purpose to enable the admin to be separate, if need even hosted on a different server etc.

      4. OO programming vs procedural programing.
      He tals like procedural programing is useless rubish and this is not true! It is a fact that Object oriented design is complicated to do well and it is only considered to be best practice when it is done well. What is usually happening in OO software where there are various extensions from various developers, is that you end up throwing an override method which calls another override,
      which calls another override, etc….This is just spaghetti not OO and definitely not best practice! Procedural programing on the other hand tends to force people to think a little before writing. Again I will go with speed and speedy development….if this means procedural programing then so be it!

      5. Vqmod.
      This is a surprise from somebody who is claiming to be a pro! I dont think ferisoft knows what vqmod is doing or how to use it. Qphoria claims there is no noticable performance issues when vqmod is used…. but I prefer not to use it in production.

  • ryan

    OC is having a good market share and became popular in a short period of time.. yes it has some issues but any system do have issues and with time these will get sorted out ( no system is 100% perfect).. so what i like to suggest you is, invent your own eCommerce platform ( rather than criticising someone`s hard work ) so that we too could test and see where you stand and may be your system might become popular and even overtake others in the market…!!!

  • Tobse

    I am working with OC right at the moment. The task is to create a new checkout that suits the owners needs and style requirements. “Nothing bad about that” is when i thought of it wen accepting the task. Now, 10 working ours later, i regret it that much.. its a complete mess. Within that time i could have created 2 chekouts for a well-designed and programmed system. “NEVER use OC”, signed!

    • kabatza

      So because you cannot do it is automaticaly a mess?

  • Arturs Sinelnikovs

    This is true. Been using open cart a few weeks now. Nothing works out of the box. Everything needs to be fixed and edited!

  • Ian Brindley

    If this issue with sub categories breaking with duplicate urls is still bothering you. Check out the link below.

    http://stackoverflow.com/questions/10916283/opencart-duplicate-url-keywords#24634134

    • kabatza

      Good job…. I never bothered doing it myself because it is not a big deal anyway.

    • R Rogerson

      That may fix part of the problem (there are other alternative fixes too) … but the whole approach is flawed.
      1) different “modules” with the same short name will conflict (first found in DB will be served)
      2) you can access content via the “last” component (/p1/p2/p3 loads “p3″, as will “/p1/p3″ and “p3″, and even “whatacrock/p3″ and “p1/p2/p3/whatacrock”
      3) trying to get it to return a proper response code for erroneous URLs is a PITA
      4) trying to implement proper/correct Canonical urls using the correct SEO_URL is a bigger PITA

      You end up patching it to the point that it’s 30% fixes!
      That’s not good – that categorically screams “F*ed” :D

  • http://stuffthatspins.com/ James O

    I’ve setup many stores using Magento, Shopify, BigCommerce, WooComerce, OSCommerce, etc… I rolled my own e-commerce solution in Java WebObjects for 8 years. I always comeback to OpenCart. It’s awesome, fast, powerful and stable. Plus, it’s constantly being developed. This is crucial for me when picking a software solution, I like to see that it’s in active development. After you do a bit of research and wrap your head around the codebase you’ll find that it’s a wonderful Open Source tool for developing sites. Additionally, I don’t see where you can jump on Magento’s boat. Talk about a bloated SLOW e-commerce solution, Magento is a CPU and resource HOG. Here’s my latest fully responsive OpenCart store – http://store.TischInternational.com It has 10,000+ products, has <1s page load times and handles a couple million in sales / year. OpenCart is a SOLID solution! If you go bashing some product or software, you should *really* have a better level of comprehension of the big picture. Or, as I see in these threads, try to defend yourself from real-world developers using OpenCart everyday with great success.

    • R Rogerson

      I’m not understanding how you can say OC is fast.
      For numerous versions, one of the biggest and most common complaints it’s how slow it gets with moderate>large numbers of categories/products.
      The general “solution” is to disable product counts.
      That’s simply a shortcut, avoiding the real problem, which is the way the system makes a DB call for root (parent) categories, then a DB per child category (if any) … then a DB call to get the number of products in each category (root or child).

      Then there is the general lack of caching – DB Queries, item template compilations, general pages … not seeing any caching for them.

      It’s a shame, as slapping in a “not-activated” page cache turned a 2.2 second page to a .8 second page, and popping in some recursive code for the category menu with single “get all” DB calls took the 2.2 down to 1 (so either way, still darn fast!).

      (And yes, I tested your site – and it lags when I try to use the cat-menu as it seems to load via ajax)
      So again, I’m not seeing OC as fast.

      That said, I agree, nor is Magento (that’s a dog and a half to work with, and the code base is far more complicated to work through)

  • Serdar

    Thank you for the terrible article and hidden rant.

  • A bloke who uses OC

    We have an OC installation on a busy shop. It works, it makes money, but it is running constant errors backside. This is because various add ons seem to clash with each other at some point.

    I need an OC expert to fix some stuff in ours, but cannot find one I trust. To be honest, I would rather hire Daniel if I could reach him. I have had several guys poke around – including Q – but faults still remain. Our theme and add ons cause the faults, not OC itself.

    I love the software personally. I’d love it more if I could get it running the Paypal Express mod fault free, the emails fault free and the search fault free. Yes, it does have its faults I guess, and I don’t have the tech knowhow to know if the OP’s claims have any merit. But I can also see Daniels points when challenged by a guy who can’t/hasn’t done better himself who just got out of the proverbial nappies @ 20.

    Its a shame that there is not a commercial version of OC that can be had with all popular add ons built in, tweaked, tried and tested. I would rather buy that than keep buying add ons as we grow and then paying people to fix the clashes. Or not sometimes.

    As a store owner or a customer, nobody gives a rats ass about how its written backside. All we care about is: is it safe? Does it work? Is it fast? Well, its safe, its fast, and if some of those Indian blokes who write the themes and add ons knew what they were doing, it would work. Vanilla works perfectly, so the fact mine runs some faults is not Daniels fault. So in my view, as a user, it is perfectly fit for purpose.

    As has been said already, if the OP can do better, show us all your skills.

    If we have an OC repair expert here, with verifiable credentials, who isn’t 20, do please get in touch.

    • Guido

      Hi

      I’m a Opencart developer. (I’m selling my extensions in opencart store)
      Please contact me to my email

      extensionoc

      with gmail

      Regards

  • http://jagansindia.in Jagadesh Boopathi

    Across all the ecommerce platforms i feel Open Cart is the best and fastest.. Easy to Enhance the modules and we can write VQMod without affecting core files :) I run 4-5 stores and all works good and efficient :)

  • MrMagne

    Funny post and comments :) I have been working as a web developer for 14+ years now and i have been working with OpenCart, Magento, Oscommerce, Zen Cart, Presta and more.. OpenCart is in my opinion the best choice for a small/medium shop. But i will admit that there is room for improvement, as in most software.

  • TonyMclane

    Oh yeah, I was looking for something like this, I’m new with OpenCart and I recently installed 1.5.6.4

    Pretty bad bad coding standard, it’s weird that in this year 2014 we still see these things

    One of the things I really hate is the Model classes, it’s just a mess of code, it does not follow the MVC, come on we are in 2014 not 2003

  • http://www.gadgetrophy.com/ Gadgetroid S

    I saw this article the first time I came across opencart but decided to push on. 1 month into using it I agree with some comments that it can be very powerful in some ways. On the other hand I have come across errors that I never encountered with any other similar distro before as the author notes. On the point of database structure and functionality – am no expert but it throws up an unusually higher number of sql errors. Its scary, if for example when they start cropping up at that point where your project is scaling up.

  • Le Thach Thao

    O this is fun. I just wanna say, I support OpenCart :)

  • scanner85

    I fully agree with the author. Code is outdated. Primitive style. But it works. Before the first load and crashes. Then begins hell.

  • Mike

    You are just butt hurt and sore that you didn’t get help on the forum and have a problem with helping others so now you decide to slam something because you are too child-like. Grow up.

  • Tim Ward

    “If you are doing a serious project go with Magento”

    Or, alternatively, you could try throwing yourself down a well.

    Look, Open Cart has a lot of flaws and I think this article does a good job of nailing them, however I think it has some advantages as well, and chief among these is that it’s not goddamn Magento.

  • texelate

    I’ve just used OC for my first project. It does have good points but one con I feel you missed is it’s even worse than WordPress in its reliance on plugins. I had to pay for a plugin that changed the image along with the drop down and another to set postage based on Geozone. It’s not that I resent paying — it’s just that it worries me that it needs a plugin for functionailty that I feel should be out-of-the-box.

    While I get what you’re saying when you make the comment “ALL tables, including orders is MyIsam, which first of all shouldn’t even be a consideration” I don’t fully agree. If you have a table that has no relations and is SELECTed a lot, MyIsam is faster than InnoDB. Maybe that requirements doesn’t come up very often but it’s worth noting.

  • anirudh7

    Opencart + Joomla = Magic Happened;

  • Simone

    Just to add to the mix and have some fun time commenting. I am using OpenCart for a small sized eCommerce. I must first admit that I am a self learnt PHP programmer with a degree in IT Engineering. I mostly learnt PHP by reading and coding by myself and I am far away near to a professional developer. However my first impression was that it looked clean and working good, since btw I was coming from OSCommerce which is even older I believe. Then when the site started to structure a little more I realized how a headache it was to achieve anything. It took me an outrageous amount of hours to learn how to do things and implement them on the website properly. Also the available documentation is not enough in my opinion.

    I was actually even more surprised and impressed in noticing how passwords are managed in OpenCart.. they are simple MD5 hashes of strings which are saved in the db. At least we can say that we should be happy that they are not directly saved as strings but I find funny how for my personal websites which I share exclusively with friends I actually even add some salting with more advanced hashing techniques. Luckily I feel to be still an amateur in PHP programming but from OpenCart I would expect some more advanced security for administrators like Google Authentication and not still plane MD5 hashing which btw also PHP.net suggests not to use.

    To be honest I never followed much the forums other than asking simple questions but I never read replies from the author of OpenCart and even though people say that his reaction is caused by the way this article was written, I do believe that he could have handled this discussion in a more professional way. Which he obviously didn’t which was quite disappointing.

    Anyways thanks for the article since a more professional point of view regarding a framework is always useful.

  • SIMPLE PLAN

    I have to say, I totally agree with you!! I have been working on it for about 8 months, and I actually can tell you, not only what you have mentioned about, but also a lot more bugs & issues in its code. I just got shocked when I found all of them, and I couldn’t stop thinking that why there are so many people still choose it as they are IT technician, when I asked for one of them, and the answer is “it’s simple and easy to use”.

    I agree that’s true, it’s really simple, simply not design correctly, the vqMOD could be the most ridiculers part of all !! I actually read all its core code throughly, and I can make a long long list of issues of it, frankly speaking, I have submitted one of them to their codebase issue list in github, but there is no reply but deleted by the author, for now, IMO, there is no way to fix it, this system should be re-written, sooner or later it will be abandoned if they don’t do, or if I have read your post early, I would never agree to work on it.

    I admitted that I don’t like those complex system, that to deal with the problem not in that level of complexity, but for opencart, I am really tried of it.

    The truth about e-commerce software is sometime ugly, not all of them provide us the details of system benchmark, when there are 5,000,000+ products and categories, Magento crashed a lot too, anyway I learned a lot from this works, and I think before choosing any e-commerce software, we have to test it and do benchmark of it for our practical cases, then make decision.

  • manish

    opencart much much easier than magento and prestashop just know to understand the working of that open source

  • Karel Trnka

    You dont know what you are talking about.

  • politicos

    Why you should never read articles of that sort…Because it’s crap. Magento “expert” trying to demonstrate that the competing system is bad.
    Pathetic!

  • Simon Collings

    I used to like using OpenCart, but after contacting them about a simple query I had…
    The guy is so STUPID, he can’t even spell it.
    My conversation copied/pasted:

    and seller status removed!

    On 7 October 2014 15:59, Simon wrote:

    You are extremely rude, no wonder people are moving away from your platform.
    Me being another now.
    Pathetic.

    — Original Message —

    From: “Daniel Kerr”
    Sent: 7 October 2014 08:46
    To: “simon collings”
    Subject: Re: OpenCart – Enquiry

    dont ask me stupied questions!

    On 7 October 2014 14:26, simon collings wrote:

    Contact Details

    Username: webcookie
    Name: simon collings
    Web Site: webcookie.co.uk

    Enquiry:

    A customer has bought my extension but it says “waiting for proof of id”. What does this mean?

  • Pashka

    What??? You’re absolutelly wrong. Maybe lack of practise and knowledge causes such a topics… Opencart is perfect platform and many people love it!

  • Marco

    OpenCart is the best. I have over 34 years of experience as programmer. I know the web since before he was born and so I can say you what is the best ! That is all !

  • Bogdan Moisin

    Great article. Open Cart was a big step at the time it was developed, but now it has lots of issues. It’s not efficient regarding the time you spent debuggin and doing stuff around it

  • Rob van Hoose

    You make some good points, particularly in the architecture section. However, being OO doesn’t necessarily make a system better.

    However, I find it just mind blowing that you would, given these concerns recommend Magento to anyone. I would use its database design as a class example of what happens when someone does not understand relational concepts and tries to build a database. Its filled with normalization problems; just awful awful design.

    Further, I’d say Magento, and most Zend framework 2 applications exhibit the flaw of over-engineering. Where I am not an Opencart user or supporter, I can appreciate code that does not over build. Perhaps it should be refactored to support extending it externally. I agree with building a protected and upgradable core. However, it’s also very easy to “go too far.” Many projects like Magento are extremely glutinous with resources and require an extremely high learning curve to operate and modify; despite the fact that what they are doing is not all that complex.

    Open cart may be under built — and perhaps a refactor and continued evolution of its code would be good.

    Magento is extremely over-built with a very heavy framework and mis-conceived database schema and display view/block system that makes it very difficult to implement auto-responsiveness. You recommended this pig? *shudder*

    • ferisoft

      Well I gave a couple of options every single one of them better in my opinion than opencart. You can use Prestashop if you want more simplicity and it will still be 1,000,000 times better than OC. As far as complexity I am not sure. When I first tried Magento it took me about 2 weeks to get going and pretty much everything made sense, despite their utter lack of documentation, I found it to be quite flexible for me and much much much better development experience than OC. In other words I prefer a heavy or a big framework, which I find intuitive and makes sense to me, rather than light weight pile of garbage…

  • Asif

    Nic I have also use opencart for many e-commerce web sites (y)

  • pda

    I am a professional programmer for 20 years mostly with Microsofts Products and

    of course a Microsoft Lover.

    Yes, right you heard. Microsoft.

    No i am not trying to change the subject. The subject is php and OpenCart.

    But let me make an introduction.

    I started developing windows application since Visual Basic 3 and Web applications

    with classic ASP and Dlls back in 1998.

    I used ASP with new ActiveXObject(“Microsoft.xmlHttp”) to make AJAX calls back in 2000

    to fill a 2000 options in combobox without refresh and everyone thinked i was a magician!!!!!

    For many years i used only IE with the WRONG BOX MODEL allthough in my mind it was the RIGHT BOX MODEL.

    When you say 100% width you mean the entire length to be 100% and not only the area you write.

    As the years passed by, many companies discovered the magic of AJAX and SILENTLY all started to use

    the WRONG OBJECT MODEL of IE via box-sizing: border-box;.

    YES Bootstrap cannot work without box-sizing: border-box. Its impossible!!!

    Today i use all the latsests technologies c#, ASP.NET MVC, AngularJS, Microsoft WEBApi, Entity Framework ORM.

    jQuery to write MODERN SOFTWARE.

    That is the key point: MODERN SOFTWARE!!!

    When you are a devloper with Microsofts tool you MUST BE MODERN. YOU HAVE NO CHOICE. Even the core language c# keep changing from

    year to year and you must always catch up.

    Entire frameworks abandoned (e.g. Web Forms_) and new comes into place (MVC Razor).

    Every year something new, every year something BETTER, something MORE MODERN, with diffrenet

    architecture. No they are not doing it for selling products. They are programming/technology maniachs. Every change they

    make – after a while – you realize, you cant live with it. You cannot go back!!!

    This is my background. A background

    – to abandon classic ASP because you write ugly spaggethi code,

    – a backgound to give up writing SQL statements directly to the database but use ORM with models

    – a background to write Object oriented code just like microsofts core library. Each object .e.g. Response, Request, httpContext has at least 3-4

    parents. Every method with more than 50 lines of code means it is badly designed!!!!!!

    The Question:

    How modern is php, the holy grace of programming?

    i come by accident to this web page and i see 10 pages of comments

    …talking about DB transactions??? in year 2014??

    …talking about copy/paste code programming??? in year 2014??

    …talking about global functions, global varibales, namespacing polution??? in year 2014??

    …talking about project with dir–>dir–>dir–>dir–>dir–>dir hierachy in folders as mandatory??? in year 2014??

    For making money, i am also a free lance developer for 3 years behind an eshop build with php Zen Cart.

    Also i delivered a project in Drupal 7 for 6 month now.

    My opinion?

    All and i mean all…open source projects (drupal, prestashop, opencart, zen-cart, oscommerce e.t.c) are 10 years behind in code, technology and

    innovation. Many of them have CRUP UGLY CODE that only a first semester IT student could write.

    In prestashop, in Opencart, in Drupal what happened if i choose to write a module that has the SAME NAME as an commercial module. i suppose

    you cant. I must changed it becaouse the folder name is occupied by another module!!!

    1000,2000,3000,10000 open source developers for 10 years are updating their code base and that is the best they can think of? A module name must be unigue

    all over the world for ever and never till the end of time!!!

    1000,2000,3000,10000 open source developers for 10 years are updating their code base and that is the best they can think of? To make directory levels of

    4 depth to discover you view templates (see. PrestaShop)

    1000-2000-3000-10000 open source developers for 10 years are updating their code base and that is the best they can think of? To use the work “module” and “hook”???

    1000-2000-3000-10000 open source developers for 10 years are updating their code base and that is the best they can think of? vQmod?? Repace text in source code???

    if someone in my company propose such a solution for ovveriding, i will laugh and fire him!!!!

    So the million dollar question? Why thay are here?

    Because it is free, because the developers do not care about innovation and are happy with copy/paste, because they are already have any isntallations,

    because even in a crup code if you keep debugging it for 10 years, sometime the bugs will end!!! Full Stop.

    So until the born of a new fresh php Signle Page Application eshop platform comes live using AngularJS + robust modern framework (like Laravel)…

    the behind code, architecture and space for extensions…are all of them in the same level.

    Use only what suits you needs.

    I will stay with OpenCart and maybe with Prestashop!!!!!

  • Steven Mars

    I’m a professional PHP Engineer. Reading this article as well as the comments have led me to a few conclusions. I also downloaded and checked out the code (I did write a small module for it a few years ago, and couldn’t remember much about it.)

    Firstly, the article is indeed written in a one-sided manner, and could have been better phrased. The author’s comments do seem to be intended as a way to make himself look more intelligent. Sadly, mostly what comes through is the arrogance of youth.

    There is, however, a bit of truth to the article. I find the lack of any comments (I looked through most of the system stuff and didn’t find any) rather unsettling. No matter if you are writing for beginners or open source, good code is commented. Uncommented code can lead to confusion. I would seriously suggest that the developer who wrote this code at least commented the important parts if he wanted to be taken seriously in the PHP community, or anyone in the coding community. I found a few places where foreach statements were simply run without checking if there was even valid data to do so. This is basic coding stuff.

    I would feel more comfortable with PDO style database queries, bindings too, of course. I’m not sure why a standard, mysql_ type driver is still in there (probably just for backwards compatibility?) but I would remove it. Also, running this code with error reporting reveals a few nasty things.

    All in all, however, I must say that opencart does work. Sadly, I’m a purist, but I’m also a developer how understands the amount of time and personal sacrifice that goes into building something like this. That being said, I think the developer acted in bad taste being bated by this article and turning to personal slandery when he was very aware of the age and maturity of the author of this post.

    I’ve built many complicated and simple systems, small and large. Sometimes you have the convenience of time, sometimes you don’t. The same may be said of budget. Anyone who has ever put blood sweat and tears into a project that they are giving away from free knows the price you ultimately pay by letting your baby go out into the big bad world. Some guys are going to love it, some will hate it. I suggest both the author of this article as well as the author of the opencart code have a lot of growing up to do, whatever their ages.