05/07/2019
Why Magento 2?
To begin with, why not Magento 1âĻ
Lack of documentation:
developers had to either attend to very expensive training courses, find solutions posted by fellow developers in blogs, or learn the hard way, debugging and reverse-engineering Magento itself, just to gain a better understanding as to what is the âproperâ way of developing for this platform;
Poor performance:
Magento has done a lot of work on this, in the past few years, refactoring entire subsystems to achieve better performance, however only the most recent releases featured optimisations like asynchronous indexing, and Full Page Cache support was only available in the pricy Enterprise Edition. Despite all these efforts, most of the 3rd-party extensions were not supporting these new features, or even breaking their mechanisms all at once;
Poor Scalability:
main bottlenecks were in the database, and lack of support for cloud-based solutions. The application itself was extremely heavy database-wise, and certain popular 3rd-party extensions certainly did not help. There was no native shared caching support until the most recent versions of Magento1, and no easy or native ways of splitting the database across multiple instances, making scalability a very difficult objective to achieve;
Outdated technology:
HTML4 and CSS, no LESS or SASS support, no composer, no automated testing support, no Javascript model/view support, and not even jQuery or responsiveness (until the most recent releases featuring RWD themes, and still part of the platform was relying on PrototypeJS), not to mention support for mobile devices, SEO and data/business logic separation from the presentation layer, and many other features commonly adopted by web development community;
Bad User Experience:
customersâ interaction with the website was unnecessarily complex and full of usability-related problems: just as an example, the standard Checkout process did not really help conversion rates, and was also quite a tricky area of the framework to work with, from a developerâs point of view. Admin interface reminded of some web-based application from the 80âs, and key functionality such as import/export, image uploads and attribute editing was way to slow or required way too many resources, not to mention pretty much every click led to a full page reload;
Lack of common development patterns and enforcement of best development practices.
Magento2 has been significantly re-engineered, implementing support for more advanced and newer technologies, reworking programming patterns, improving usability and optimising the platform.
A whole lot of improvements has been made, while keeping the modular nature of the platform and its extensibility intact, for instance:
Improved documentation
Much more extensive developer documentation for Magento 2 has now been published on their website, targeted to all Front-end Developers, Back-end Developers, Solution Specialists, and Magento Admin Users.
Several blog articles and guidelines are also available on Magento website, and the entire codebase is now versioned and published in GitHub, not to mention issue and bug tracking systems being adopted, and free online on-demand courses offered by Magento as part of introduction to Magento2 development program.
Better performance, better scalability
Full Page Caching (so far probably the biggest game-changer in terms of performance, a feature so far only available to Enterprise customers in Magento1) has now been completely reworked and is provided out of the box also in Magento2 Community Edition.
Database support â even though still in MySQL realm (possible future integration with other DBMSs has been announced) â has also been reworked, to allow splitting data belonging to distinct areas of the application (catalog, sales/checkout, etc) in different servers, reducing bottlenecks and improving performance and scalability.
Native support for Varnish Cache services has been added to boost the speed of the Magento2 websites, and business logic and data have been further separated from the presentation layer, allowing more efficient and less painful caching.
Most of the static content can now be compiled before-hand, ready to be served as-is to the browsers, reducing the load on the infrastructure and allowing even more efficient caching.
Magento2 natively supports PHP7 and HHVM (both featuring significantly better performance over PHP code parsing and ex*****on), and provides out-of-the-box Redis cache backend support.
Better support for modern Web technologies, new development tools and introduction of programming patterns
Magento2 has added support for (and sometimes even forced the use of) some of the most recent web technologies, as asynchronous resource load with dependency management (RequireJS), mobile and responsive browser support, HTML5, CSS3 and JavaScript-based dynamic interactions with integrated, declarative templating system and Model-View-View-Controller programming patterns (KnockOutJS). Support for Compass, Grunt, LESS and media queries has also been introduced, as well as application modes (namely default, developer and production).
PHP namespaces, API definitions, Service Contracts and Object Factory programming patterns have been implemented all over the Core code, Interceptors and Dependency Injection allow for static code compilation, better and safer extensibility and customisation.
Support for Automated Testing has also been added, covering most of the core functionalities but also giving extension developers a useful tool, to ensure better quality of their code.
Better user experience
Important parts of the application, as for instance checkout, have been completely reworked and necessitate now of less interaction at visitorâs side, the checkout process itself is much more linear and simplified, focussing on driving users to the purchase completion. Caching has also been significantly improved in these areas, as compared to Magento1, where page caching was practically disabled all along the checkout process.
Magento 2 is undergoing continuous development, with many enhancements on the way, which â combined with an already expiring support (announced to be offered by Magento only for three years after version 2.0 has been released) around the end of 2018 â makes switching to Magento 2 for Magento 1 users a no-brainer.
Unfortunately, Magento 1 developers (and agencies hiring them) are those who paid the price of many of these enhancements, both because of the difficulty in understanding new concepts and paradigms, differences from a platform they have already (slowly and painfully) became used to, and because of the many cool new features advertised by Magento (who really jumped the gun by announcing the presumably âstableâ release of their new-generation platform to the public, distributing propaganda to the merchants as to why they should switch from Magento 1 to Magento 2, even though the âstableâ release was nowhere nearly ready for production), that just didnât quite work at first. Supposedly, Magento relied upon their Community, for support, bug discovery and fixes, and suggestions as to how to make the platform something truly usable in production environment.
Matter Of Form has been no exception to this painful adoption process, largely underestimating the size of the projects, relying on the (obviously wrong) assumption that Magento 2 wouldnât be so much different (or buggy) after all, and then having to absorbing delays and bug-fixes for functionality that was already well-tested and adopted in Magento 1, and supposedly working in its new version.