Quickshiftin - Clever Crazy Code

Magento2 not ready for prime time

April 18th, 2016

I’ve built numerous Magento sites for clients and recently was asked to scope out Magento2 as a serious option for a new build-out. At the end of the day I came back saying, it looks nice, but it’s just not ready. Read on to find out how I arrived at my conclusion.

Magento2 the Pros

Let’s start with the good news! Magento2 is really slick from both an admin and consumer perspective. The admin is responsive and features a minimalistic UI. Some things have shuffled around a bit from the 1.X series, but it’s very approachable from your first login. On the consumer side the coolest thing I’ve seen so far is a 2 step checkout process. Frankly the 6 step process of Magento1 is intimidating and surely a point of abandonment for some customers.

Magento2 has done away with Prototype.js and it looks like they’re using require.js to manage jQuery files now. Not only that, but it seems you can actually consolidate the Javascript into one file now. While Magento1 let you get close, but not 100% there with JS file consolidation, that’s a real sticking point for mobile devices which have limited bandwidth. So I imagine subsequent revisions of Magento2 will be delivering mobile pages better than Magento1 ever dreamed of.

Magento2 has done a complete rewrite of the PHP layer, which I’m told runs on PHP7 without issue. PHP7 is dramatically faster because it uses a rewritten PHP core and thus a Magento server running on PHP7 will be able to handle more simultaneous connections and render pages faster than a PHP 5.X server. With full page caching, page speed becomes less of an issue, but who doesn’t want to serve more simultaneous users with the same amount of hardware?

I also noticed the core system has been moved into a vendor directory. This should make versioning Magento2 easier as you can simply ignore the vendor directory in your version control system. Versioning Magento1 projects is messy business.

Magento2 the Cons

A lot of what I do with Magento revolves around API integrations with external systems. Naturally, my first task with Magento2 was to migrate some API-based integrations from the 1.9 series to a 2.0 installation. First off, I decided to make the hop from SOAP to REST. It’s clear there’s a bias towards REST from the Magento team, just looking at the paltry SOAP documentation and bountiful REST documentation for 2.0.

One aspect of integrating I don’t think I got right (not for lack of trying) is the authentication component of the API. In Magento1 using SOAP, I simply create a username and password and enter them in my external application. That’s all it takes to get an external app authenticated against Magento1. While it seems this is possible, I’m not sure how to actually authenticate against the API using the Role-based configuration for a user in Magento2. From what I’ve seen it feels like HTTP-BASIC auth should work in this case, but I was unable to get it to work.

I was able to authenticate using OAuth, but found the documentation lacking and ended up answering my own question on the Magento StackExchange site. This seems like an unnatural use for OAuth. True, the external app in my case is technically a third-party one, but it’s not one that needs to ask Magento customers to allow access to their Magento information from another application. I’d like to figure out how to get the role-based session authentication working correctly with the REST API.

Speaking of the REST API, I had started to write my own client library using cURL and PHP because I couldn’t find any client libraries on GitHub or through Composer. What I discovered though is Magento2 uses Swagger.io which means you can generate documentation and client libraries in numerous languages! That is really cool, so I generated a PHP client library, but ended up discovering some bugs in the generated code. I’m confident these will be addressed by future releases of Magento2 or Swagger (wherever the bugs lie), but for now you’re left to your own devices to cope with them.

The Verdict

Overall Magento2 looks compelling, I just don’t think it’s there yet unless you intend to use a very minimal set of features or have the inclination (read: time and budget) to discover how to do things in the new world order on your own. Magento1 is so prevalent that practically every question you might have is already answered or minutes away from being answered when you pose your question on StackOverflow, not to mention the plethora modules for Magento1.

I’ve also read Magento2  is slower than Magento1, which is a little surprising. Many times newer versions of frameworks can actually slow down because the newer version aims to do more thus increasing overhead. One thing Magento2 can say that Magento1 can’t, at least at the time of writing, is that it runs on PHP7. That taken with the Javascript consolidation mentioned earlier should give Magento2 the overall nod in performance should I venture to guess, but it’s worth noting that Magento2 can chew a good number of PHP function calls to get those pages out the door.

With the Magento1 series being supported for the next 3 years I feel confident continuing to work in it. That said, I’d say let Magento2 bake for a while. Soon enough you’ll find scads of third-party modules and answers for just about any question you might have for custom work just like Magento1. By then I think there’s no question, Magento1 will be toast.


If you enjoyed this post please consider sharing it!

  • Twitter
  • LinkedIn
  • Facebook
  • Reddit
  • Digg

Leave a Response