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/wordp ... odb-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.