Magento 2

The Magento 2 Certification Problem

With all the discussion around the technology behind Magento 2, the release schedule and the excitement of how Magento 2 will help transform eCommerce, I have to admit, I hadn't thought at all about certifications for Magento 2 until someone at Magento asked my opinion about it. So here's the challenge - when Magento 2 launches, how will an employer or merchant know a developer knows Magento 2? Magento (both as a community and as a company) has always made it clear that they understand that a big part of the success of Magento is thanks to the large, vibrant community of Magento developers.

However, the current Magento training and certifications cover Magento 1, not Magento 2. New things are in the works, but with the release date of Magento 2 approaching quickly and fairly major changes still taking place in the codebase, how do you have a way on Day One of Magento 2's release to know a developer is Magento 2 ready?

In an ideal world, all of us Magento developers would be spending a significant amount of time staying up to date with the changes the Magento 2 team is pushing each week on Github, and we'd all be studying and learning Magento 2 in-depth over the next 11 months until Magento 2 is released.

However, Magento 1 developers are in high demand. We all have our Magento 1 work to do, and we all seem to be getting even busier.

So, let's say Magento 2 is completely feature/architecture frozen by the end of March (a date I made up, by the way, just as an example). The Magento 2 release date is Q4 of this year. For this example, we'll say that's on December 31st, 2015.

That works out to 9 months. 9 months to prepare a complete training program or certification exam, release it to the community and for Magento 1 developers to complete it. Split that time 50/50, and let's say Magento Inc spends 4.5 months preparing this information, giving Magento 1 developers 4.5 months between when the training is available and when Magento 2 goes live.

How many of you, while still completing your Magento 1 work and maintaining your other commitments could go from 0 knowledge of Magento 2 to ready to take and pass a certification exam in 4.5 months?

I'm sure there's some of you saying "Oh, yeah, that's more than enough time". And that's awesome. You'll be one of the trailblazers on Magento 2, and that's something the community really needs. However, that's not what the average developer is saying.

Here's an example - there's less than 450 Magento Certified or Certified Plus Developers in the United States. Let's say 20% of developers feel they can get trained up on Magento 2 and certified on it in 4.5 months (and from the conversations I've had, I think 20% is probably high). That means that if they all are able to achieve that, that gives the entire US market only 90 people who are able to become Magento 2 certified by launch day.

No one is really sure yet what user demand will look like - Magento 1 will continue to be supported for quite some time, so many merchants will stay on or implement on Magento 1 in 2015 and 2016. But there will also be quite a bit of buzz and excitement about Magento 2, and I have a feeling that there are many people on aging platforms that are waiting for Magento 2's release before they make the switch to Magento. Add to that how many merchants plan major projects or migrations for January, and you can easily see how there will be significantly more Magento 2 implementations than official trained/certified Magento 2 developers in December or January.

So, as a community, how do we handle that? How do we make sure we're not only preparing ourselves for Magento 2, but also making sure that merchants and employers are able to identify those developers who really are prepared for Magento 2? I don't think anyone has a practical, workable solution yet, so I'm curious to see what the community thinks and what we can come up with as we discuss this.

What is new in Magento 2 with Tobias Zander @airbone42 at #phpworld

What is new in Magento 2 with Tobias Zander @airbone42 at #phpworld Ever since October 4th of 2013, the Magento 2 team has been pushing weekly updates to GitHub.

Magento2 is built on HTML5, CSS3, jQuery, LESS, requirejs. This means that Magento 2 won't support IE8.

Layout configuration is changing in Magento 2. Breaking the XML files into multiple files to make it easier to find what you need to change.

Unlimited theme fallbacks are coming in Magento 2.

Magento 2 currently has support of PHP 5.4 & 5.5. PHP 5.6 support will be coming soon.

Magento 2 follows PSR-0, PSR-1, PSR-2 and uses real namespaces.

XSD support for XML files is coming to Magento 2.

New file structure in Magento 2 so that modules have one folder, no need to install modules into multiple folders.

Magento 2 has Composer support. You can install Magento 2 from Composer.

Added the Service Layer to make things more reusable and easier to extend. More details at https://alankent.wordpress.com/2014/05/22/magento-2-service-layer/)

Dependency injections and interceptors are coming to Magento 2.

There’s great improvements coming for admin users in Magento 2 as well - adding products is MUCH simpler.

Magento 2 consists of 1.5 million lines of code currently. 2,600 integration tests. 7,600 unit tests. Not complete code coverage, but significantly better than Magento 1 which shipped with no coverage at all.

100 JS unit tests, over 100 static tests including PHP mess detector. 9 performance tests.

Magento 2 Service Layer Breakout Session Magento Imagine 2014

This session is Magento 2 Service Layer: A Deep Dive into Customer Service presented by Chris O’Toole a Software Engineer at Magento. Chuck Choukalos, a product manager at Magento responsible for the service layer, is introducing the overall idea of the service layer.

The service layer streamlines customizations to allow easier installation & upgrades and simplifies external integrations. Consolidate business logic into the service layer.

What is a service layer?

The service layer encapsulates the domain model, data source and data store in turn. The UI and the web API interacts with the service layer. The service layer in Magento 2 sits between blocks or controllers and the models. Template -> block -> service layer -> model -> resource. For controllers, controller -> service layer -> model -> resource.

Services in Magento 2 will be stateless, making them easier to expose via a REST API. No need to make multiple calls to setup and then run an action.

Example Interactions

Before service layer, the template interacts with the block, which interacts with the model. Requires 5+ calls that aren't cleanly separated. There's the possibility and temptation to access the model directly when you shouldn't.

With the service layer, there's fewer calls and the actual models are hidden from the template and block.

Using the Customer Service

Example is writing an extension which will allow you to create customers from an outside source such as PayPal, Facebook, Google, etc.

In the customer model there's 72 public methods - can be daunting. The service layer simplifies that to 25 methods.

Chris walked us through writing this customization - much, much simpler using the service layer. Bring on Magento 2!

Writing your own Service

For instance, if you want to email store owner if a customer is created via an integration. You create a new service that your code calls.

Handling Upgrades

Services are versioned in Magento 2. When interfaces are changed in Magento 2, a new service layer version is created but the old one is still there. This allows you to upgrade and then work on the migration to the new service version at your leisure.

Creating a Web API

A simple XML file defines your API route, the service it uses and resources. Magento 2 service layer team is looking for feedback on what authentication methods developers would like to see concerning API calls in Magento 2. The service layer sits between the API framework and the models, including converting JSON to the proper data object.

Benefits Provided by the Service Layer in Magento 2

  • Consistency
  • Separation between presentation layer and business logic
  • Easier to customize Magento 2
  • Backwards compatibility to make upgrades less painful
  • Create web APIs via simple XML

Q&A

Testing - integration tests are written while writing the service layers. Unit tests are also present to test the service layers. Finally, integration testing is run on the service layers.

Versioning - both services and data objects are versioned. Take a look on Github - i.e., https://github.com/magento/magento2/blob/master/app/code/Magento/Customer/Service/V1/CustomerGroupService.php