It's been 2 years now since I started using Magento. I moved into Magento development because the demand I saw for developers and there seemed to be loads of work around.
I came from a Symfony2 background so my first thoughts were - why's there no Composer? Where is the templating engine and where is the namespacing? I then realised Magento code is old, very old. It was well written code when it was first built but things change very quickly in software and the code is now quite out of date.
I could see with Magento's market share that it was still the platform with the most demand for developers. After using Magento for a while I could see it was feature rich and I started to see why it was used so much. Magento is very easy to extend and there is an excellent choice of tried and tested community extensions.
Although Magento is still a great platform, something will take over if the code base isn't given a fairly large overhaul.
So I've had a look at the alternatives to work out whether Magento is still the best choice and if Magento2 will be a successful predecessor.
Prestashop is another open source platform built in PHP. Prestashop was first released in 2007 (before Magento). Prestashop also has a lot of built in features, a good open source community and a good selection of extensions. From my experience with Prestashop it does fall short of Magento in all these areas. I thought Magento was easier to build extensions in as well so I would still choose Magento over Prestashop. Prestashop version 1.7 which is in development at the time of writing sounds interesting with the introduction of the Symfony2 framework.
Opencart is a platform I have used a few times although it is quite limited in its functionality. I would maybe use it for very basic ecommerce sites but its not really a competitor to Magento.
Spree Commerce is an open source ecommerce platform built on Ruby on Rails. Spree is a much more efficiently written piece of software than Magento with on 45,000 lines of code while Magento has over 8 million. It's a well written platform which is also highly extensible. The problem with Spree is that it's not got as many built in features as Magento and there's not as good a selection of extensions. At the moment I would still choose Magento because of the extensions.
Symfony Based eCommerce
There are quite a few Symfony based ecommerce platforms around now. A couple that seem to be getting a lot of attention are Sylius and Thelia. Sylius is well coded and easy to extend. It has a very clean architecture and has code which is easy to understand. However it doesn't have as many features as Magento and there is no where near as many extensions. There are similar issues with Thelia as the community is just no where near the size of the Magento community so there isn't the same choice of extensions. I prefer the code of Thelia and Sylius to Magento as it is more modern with the use of Symfony components. If the budget was there to write a lot of features from scratch then either of these would have the potential to be better than Magento. Most companies wouldn't want to spend the money writing something that's easily done with Magento so in most cases Magento would be used over either of these platforms.
WooCommerce is one of many ecommerce platforms built on top of Wordpress. It seems to be the most popular out of all the Wordpress ecommerce options available. WooCommerce has a huge community and if you count the Wordpress community as well then it is enormous. WooCommerce is possibly a better choice than Magento when it comes to a smaller ecommerce site but falls short on scalability and features when it comes to enterprise level sites. I would always choose Magento over WooCommerce for a large ecommerce site.
Another possibility would be to build from scratch. This is just not feasible at all as it would take a team of developers at least a year to build something as complex as Magento. It would be possible to build something not too complicated with the use of already existing components and/or a framework. I would always go with a ready made solution like Magento over a bespoke solution.
There are also many hosted options available such as Shopify and BigCommerce. Both offer a range of options including an enterprise option. Both also have active communities. I think these options are very good value for money for a small ecommerce store although it does depend on if you get a complete custom build or you just use a theme. The issue I have is that the codebase can't be modified in the same way an open source platform can be. Sometimes a clients requirements can be very specific and I would rather have full access to the codebase in that situation.
Magento2 which was released in November 2015 seems like it would be the obvious choice with a significantly improved codebase and admin interface. The addition of Composer, namespacing and dependency injection are just some of the improvements which make Magento2 more inline with modern PHP frameworks.
There are a few concerns I have about Magento2 as there is still a huge amount of code. There are huge XML files for the dependency injection, no templating engine by default, all the Magento Composer bundles are very specific to Magento rather than being vanilla PHP. Recent tests have also shown that Magento2 is actually slower than Magento1, although hopefully using Magento2 with PHP7 should fix this.
There are significant improvements in Magento2 but I do wonder if they should have started again. They maybe should have used more components maintained by other people eg. they could have used Doctrine or Propel for the ORM, they could have used a templating engine, Omnipay payment component. Instead they still have some PrototypeJS in the code and use Zend1 framework when Zend3 is in development.
I definitely have my concerns about Magento2 and wonder if it's maybe time for something else to takeover.
So at this time I do not think there is a better option than Magento, and that's Magento1 not Magento2. Nothing else ticks as many boxes with features, codebase, community, extensions, performance and scalabilty. For now I would choose Magento over its competitors and Magento2. It will be interesting over the next couple of years though as things have to change. Will Magento users move to Magento2 or is something else going to gain the traction to win over the ecommerce world. I really don't know what will happen but I wouldn't be surprised if the loyal Magento community all moved to Magento2 and made that stand out from the crowd.
Scott Pringle - PHP Magento and Symfony developer with 5 years experience.