Mage Titans this year could actually be a very important point in my developer career. I’d say i’m at a crossroads where I’m trying to decide whether my next build is Magento2 or a Symfony ecommerce alternative. I ruled out Magento1 as I don’t want to give a Magento1 site to a client at this time (this could be a whole blog post on its own so I’ll not go into this).
I have done a lot of development on Symfony2 as well as Magento and my opion has always been that the Symfony codebase is far superior to Magento. I don’t actually think anyone disagrees with this as Symfony was released a long time after Magento.
Where I have the problem is Magento2 has been released after Symfony2 and Symfony2 is still better. Magento2 has made huge improvements with dependancy injection, Composer, generated classes, namespacing as well as plenty of others.
I don’t like EAV as I think attributes should only be added by developers. They completely mess up the database structure, they have a terrible affect on imports, they mean index tables are needed and they make an enterprise platform work like Wordpress. This is one of the things where I think Magento are trying to cater for very small stores (personally I think it holds the platform back).
I’ve never really liked Magento’s implementation of the ORM. I think the ORM should be something that would be maintained by a 3rd party, probably Doctrine or Propel. I think they kept the original because or legacy issues and the EAV implementation would be very difficult to do in an existing ORM.
I was massively dissapointed to see the PHP templates. I know it is possible to add Twig templates but I think without the proper use of the inheritance in Twig theres not that much benefit from Twig. I think the xml layout files and the PHP templates should have been replaced with Twig. The Twig inheritance with the blocks would make it so much easier to to override blocks. Although that wouldn’t take care of the block objects, i’m sure there would be a way around that.
In Magento1 I thougt there was too many files and too much code need to create a module. You would assume that it would be much easier and quicker to create a module in Magento2 but it actually takes longer and requires more files.
I don’t have enough experience of the UI components yet in Magento2 but my first thoughts were that they require far too much code.
Mage Titans MCR 2016
I went to Mage Titans 2016 looking for any clear red flags about Magento2, indictions whether people think it is ready, and just in general whats good and bad. My opinions of it at the moment are not good so I’m trying to work out if there are many other people as disappointed as me. I’m also looking to see if maybe I’m too quick to judge and it’s not actually that bad.
Fabian spoke about porting a module from Magento1 to Magento2. He talked about some of the chalenges they faced and how they decided to tackle them. He went into more detail about how they had decided to refactor the Magento1 module before creating the Magento2 module. They ported a lot of the code into a separate platform agnostic library which would be able to be used in the Magento2 module as well. I think this is a great approach to software engineering in general but writing platform agnostic code can be very time consuming. It’s great when the budget is there but it’s not always the case. I do also think that it is good to try and keep code in libraries right from the start. The more developers that can use the code the more likely it is for people to contribute. Again it’s the development time overheads that might prevent this.
A few things I took from Fabian when deciding on whether I should use Magento2. Fabian showed the rough time it took to develop the Magento2 module.
Magento1 module – 300h
Refactor and create library – 150h
Magento2 module - 300h
Magento2 development time is one of my concerns and this does not give me any more confidence in Magento2. I think he did say that it was longer because it was learning a Magento2 at the same time but it took the same time as the Magento1 extension even though they already had all that Magento1 code written.
The other thing that gave me concerns was that Fabian suggested that he didn’t think Magento2 would be stable for one or two years. This is inline with what I already thought but it’s just whether the versions will be easily upgradeable or will they break my site.
Vinai’s talk about functional programming
I am very much an object oriented programmer and I could never understand why Drupal developers would try and argue that functional is better than OO. I still don’t believe the way Drupal uses functional programming is not even comparable to proper OO with dependancy injection, services, inheritance, proxy classes, interceptors etc.
What Vinai was talking about did seem more like trying to use functions as objects. It did make me think why not just use objects. Is there really a proper advantage of using closures instead of classes or is just something that was interesting to try. It’s not somethings I’ve really looked at and it won’t help me make a decision on Magento2 but still an interesting talk.
Tony Brown – Space48
Tony was talking about optimising Magento sites. He mentioned challenges and mistakes he had came across in the past and how these were resolved. He gave useful tips on how to debug full page cache and mentioned some tools. He spoke about using New Relic and Blackfire for profiling and debugging performance issues. His mentioning of Blackfire is probably one of the biggest things I’ll take away from Mage Titans as I’ve been meaning to try it with Symfony but just never got around to it and him mentioning it just reminded me how useful it is.
I don’t think anything he said will influence whether I choose Magento2. He said about Magento2 including full page cache but it’s something I already knew about.
Max Bucknell from Redbox Digital
Max gave his opinions on how Magento2 was doing with their frontend implementaion. This was interesting and actually quite reasurring. He didn’t say Magento2 was terrible but he did point out a few improvements.
He mentioned how Magento want to be able to cater for the smaller store who can get a site up and running with a near default installation very quick and that’s why Magento has to come with a ready made frontend.
This did make me think is Magento being held back because they are trying to be two things.
I think Magento could be a much better product if they didn’t cater for this size of site at all. If they separated the frontend, removed attributes from the database and only allowed developers to add attributes. But then Magento has also been massively held back by keeping so much legacy code to make Magento1 sites portable. I think it would have been a much better product if they had started again completely but I’m not going to go into that now.
Overall I’d say he gave a positive review of Magento2 frontend and it’s made me a bit more likely to choose Magento2.
Vitaliy Korotun from Magento
I actually missed a lot of this talk so i’ll need to look out for the videos or slides.
He was talking about the UI components in Magento2. The UI components is actually something I’ve only briefly looked at and before I seen this talk I hadn’t really understood why the UI components needed so much configuration. I guess this is because they work with ajax and a lot more needs defined.
The UI components at the moment are a big concern for me. No one seems to understand them and they seem to need a huge amount of configuration to get it working.
Vitaliy mentioned that just under 20,000 words were used to describe the product form component. It was a form component that I had used and had been annoyed by how much configuration was required.
This did reasure me but the UI components are still one of my biggest concerns for Magento2. I am going to go through some more UI component tutorials before making a proper judgement on them.
AOE Guy - Italian Guy
Very much a dev ops sort of talk although a lot of useful information. He talked about an enterprise level EC2 setup for scalability. Although all very interesting stuff it won’t help me judge Magento2.
Anna talked a about security in Magento. She went into more detail about cross site scripting and gave some examples. This was again another interesting talk but won’t help me decide if I should use Magento2.
Max talked about moving a site onto Magento2 from Magento1. He shared information about the server architecture used and some of the decisions made.
This was very relevant for me making a decision on Magento2. Max was very positive about Magento2 overall and suggested Magento2 is ready now as long as there is developers fix any issues that arise from a non stable platform.
Tadhg Bowe from Screen Pages
I’m sure everyone is going to remember this presentation. He started with a toilet joke and it went down well with the crowd. I definitely think he should come back and talk next year!
The technical part of his talk was about migrating data from Magento1 to Magento2. He went through some of the issues and how they got around them.
This reassured me about the Magento2 migration tool. It’s not something I’ve used yet but his experiences showed even in highly customised stores there are ways around moving the data to Magento2.
Rebecca gave an analogy of compairing Magento with a pet dog. A Magento site must be looked after once it’s live. Maintenance, new features, up to date content and any other support a site needs are some of the points mentioned.
Nils talked about the history of importing into Magento1 and how this is in Magento2. He talked about how the fastest way to import in Magento1 is the import/export. He also said how this is the fastest way to import in Magento2 and it is slower than the imprt/export in Magento1.
Magento is well known for being terrible for importing data and the fact that Magento2 is actually worse is a big concern.
I suppose it’s not really something that can be fixed when the database structure wasn’t changed. The EAV database structure is always going to be slow to import into and a Symfony based alternative would likely be much faster for importing and exporting.
Unfortunately I had to leave before this presentation.
It was a fantastic line up of speakers at Mage Titans Manchester 2016 and the speakers have definitely given me some help with my decision. I will look at a couple of the Symfony options (Sylius and Spryker) but I will continue to work through a few more of the Magento2 two docs and tutorials and will decide at the end of the week.
To be honest even if I do go with Magento2 I think it’s only a matter of time until a better platform comes along and people start moving. I think the Magento2 architecture does not work well with a service based architecture and that’s the way enterprise development seems to be going at the moment. The Magento2 code is too tightly coupled to work well
Scott Pringle - PHP Magento and Symfony developer with 5 years experience.