My review of Magento software
I would like to continue a series of articles about different popular software packages from a developer's point of view, and here is an article about Magento shopping cart.
I would start from the software design and templates, because this is the very first part to modify. To my mind, the templates are really poor, especially taking into consideration that Magento is presumed to be a modern software package. Of course, there is a unique self-written “template engine” implemented, however that is the only thing to mention about the design part. I have found the only advantage of this engine - it uses classes directly. For example, in smarty (which is used for X-Cart) you have to prepare the data (sometimes a cycle is used for that) and then display (and other cycle is used), so a cycle for the same data is used twice. In Magento there is no such a repetition, and this is its advantage. <br> It is possible to say that this software is css based - however I would not say that the implementation is perfect. For example:
<div class="button-set"> <a href="<?php echo $this->getBackUrl() ?>" class="left">« <?php echo $this->__('Back') ?></a> </div>
why it is not
<a href="<?php echo $this->getBackUrl() ?>" class="button-set left">« <?php echo $this->__('Back') ?></a>
Let's look at the code structure. Mostly there is nothing special with the code, however there is one important shortcoming - missing documentation. You won't find any description of the logic or any developer tutorial. The maximum information you can find is directions about placing files. These rules are important for shop keepers since in order to make any large modifications developers should carefully review the structure during the initial planning stage of the customization process. Since the software is open source (and rather new), you can not be sure that the modules you are going to use are planned correctly. To summarize, in general I like Magento structure, however it is not as flexible as LiteCommerce one. I like an ability to replace default classes in LiteCommerce with the class tree I need, as generally it gives great opportunities for development purposes.
A lot of users complain about speed issues with Magento stores. You will find different opinions on Magento forum explaining that speed question may be related to the server characteristics and total amount of products in the store. I think that the speed issue is a vital question for Magento. Once again, I should refer to LiteCommerce, because it has the same problem. However I should say that lots of efforts were done to make Magento work faster (in comparison with LiteCommerce), and that can not go unnoticed.
Generally I should say that Magento is really suitable for development purposes, however lots of efforts and time would be involved to understand its structure totally.