Finally Magento 2 has been released! I am especially glad as an ex-Magento employee. The Magento team has created a powerful and modern framework for eCommerce and I congratulate all of my ex-coworkers for this great milestone. But my post is not about that. Just after the release, there appeared a lot of blog posts that Magento 2 platform has changed the eCommerce world. But did it? In this post I am not going to describe all of the M2 bright sides (it has too many of them). My intend is to perform honest and objective M2 unboxing and to look inside of it from the point of view of the Magento community even if it’s going to be painful.
Note: Magento 2 positions itself as an eCommerce solution and a ready-to-use product, not just a framework. Therefore my opinion about Magento 2 is based on this statement.
I’ve downloaded my M2 sample from the official Magento website, there I also found an archive with sample data. For a setup I used a pre-configured Vagrant machine according to the installation guide for Magento server. This installation guide offers two options: easy and advanced. Let’s try the easy way first ;) M2 has an installation wizard, so it is supposed that even a none technically prepared user can install it successfully. And indeed, it looks easy.
Intuitively, I used pub as a root directory. That was wrong, so I’ve changed it to an application root. Let’s move on.
It was easy to perform all the installation steps, and my application is installing now. But what is that? The progress bar has stopped at 76% (Module ‘Magento_CustomerSampleData’: Installing data..). Maybe the sample data is too big? Or the data creation process is not optimized? Ok, 15 minutes is too much for it, let’s look at the code of this module and see what is wrong. Hm, CSV file contains only one row, there must have been an error but the installation wizard decided not to alert. Logs are empty too :(
No problem, it’s the first pancake, let’s try one more time. Unfortunately, it did not work either.
Time to use “advanced” installation with the help of CLI. Its principle is the same as in web interface, but without a fancy wrapping.
We run the command and …
Module ‘Magento_CustomerSampleData’: Installing data.. is successful.
[SUCCESS]: Magento installation complete.
[SUCCESS]: Magento Admin URI: /admin
We can now see cute and neat application frontend.
I took a rapid glance at the page source code, and what I see. There is a thing which makes me cry in a good sense.
Good old days.
Here is the admin panel. IMHO, the design is better compared to previous versions. Especially the new dynamic grids are very useful. Also, I am glad that grids are created by declaring them in an XML file. But wait, not all of the grids are implemented in this way. Reports, users grids and many others are still in M1-style. Same with forms.
Ok, let’s take a look at the basic Magento entities, at its core.
Here is the model of the Product. Just look at its constructor. More than 30 dependencies! Isn’t it too much? This model was not subjected to a full-scale refactoring, it was just migrated to the new framework in the raw..
Another model – Category. It looks similar to the Product model, and I can see @SuppressWarnings(PHPMD.ExcessiveParameterList! Not good.
There are many other similar examples throughout the code…
Let’s forget about the code, are there any new features? There is none. All of the M2 features were migrated from M1. In other words M2 as a “framework” is good, but the Magento as a “solution” did not change compared to M1.
And finally, I decided to search for information about M2 speed boosts in the documentation. The site says that M2 has “Faster Site Performance”. Where are the benchmarks ? How did they make such conclusion ? M2 even feels slower compared to M1 just when browsing on an M2 installation. In the release documentation it was said that M2 now supports Varnish. I think it is not correct to say that application became faster, because any application is faster using a cache proxy. So I consider the phrase “Faster Site Performance” is of purely marketing nature.
My question again, did M2 make eCommerce revolution? My answer: Not yet, but I believe it will. Soon. With later releases. I love that Magento is now on GitHub, it makes contribution even easier, so the Magento community will grow and improve. I keep my fingers crossed when the euphoria about M2 release will pass, that the community will not be disappointed with M2. Personally me, I love the new framework, but in my opinion the application itself is too raw as of today. Finally, I believe that when starting a new eCommerce projects, I would recommend considering M2 from now on as the default option over M1.