I had hard time with front-end part of M2 at the beginning… Oh, wait. Still have. Unfortunately.
That’s why I decide to create this blog – yeah, it’s my first post here.
“What happens? Everybody says M2 is awesome!”
I really like to be honest, even when shouldn’t, so please have in mind that:
- I’m a developer
- I’m a front-end guy
- It’s just mine point of view
- It’s not an official statement of my employer
Magento 2 is a huge step forward, especially when it comes to open-source part – moving the whole codebase to GitHub is the best what can possibly happen to us.
Overall engine performance was increased, back-end devs says that many things was changed to better solutions and working with 2.x going to be nicer than with 1.x.
But… When it comes to the front-end part, unfortunately, changes aren’t looking that good. At the beginning, let me try to explain, how different are goals of back-end vs. front-end.
Goals of front-end dev
Provide the best possible UI and UX to end users. So we should care about:
- Implementing design fast and precise
- Compatibility with lots of browsers
- Variety of devices – Hardware trends, screen sizes, types of input (touch, mouse, screen readers etc.), performance…
- Overall web app performance
- Accessibility
Hardware trends, users and clients expectations, networks speeds and many more factors are changing rapidly through time. That’s why front-end tools evolves much faster than others.
I’m not into big frameworks (Angular, React etc.), SPAs, ES6, MEAN… whole “JavaScript oriented” world, but care a lot about one thing – front-end devs should make front-end using front-end oriented tools, instead of “weird, limited version of name_of_your_engine_of_choice (i.e. Magento) front-end”.
In our beautiful, full of not keeping up standards browsers, world of front-end, every year brings a lot of changes, that’s why people laugh about “day without new JS framework”.
(Possible) Goals of back-end dev
Create cost-effective, rock stable and scalable infrastructure for processing clients data fast and secure. So any rapid changes, just consistent evolution, improving things one by one.
I know that this might be too simplified description, but hey – I’m not back-end guy, just want to notice different.
Summary
As you see, differences are huge, almost like two separate worlds (connected via API)
What is wrong with front-end of M2?
- Use PHP to build font-end tools
- These tools are slooooow, and we can’t extend or customize them, because lack of extensions and our knowledge of PHP
- Grunt, LESS, RequireJS, jQuery, Knockout, Prototype and Scriptaculous (yeah, it’s still here for some reason), LiveReload… and possibly many more. All of these things are outdated right now, slowly dying or not popular anymore, but it doesn’t really matter.
You know what really sucks? These things are so damn deeply integrated with the whole Magento and closely unchangeable without hard overrides or creating everything from scratch.
That’s my point – Magento 2 font-end looks like designed by back-end devs.
“But you can use whatever you want”
I dreamed a whole life about spending thousands of hours overriding Magento core. Cool. Indeed. Thanks for making this possible.
Summary
I know I’m now just hating someone else (really hard!) work, but don’t get me wrong – I’m happy that M2 is up, but I don’t like marketing bullshit and talking only about pros of some software, because software by design is something with cons.
What we should do?
Definitely keep idea of open source – discuss problems, possible solutions, share ideas, contribute creating documentation or “simply” write code. We have so strong community around Magento and projects like #RoadToImagine with “Four Horsemen of the Apocalypse™”, proves that good people stand behind Magento, not only technology.
“Did you make first step?”
Yup. We, as Snowdog, created Frontools, set of Gulp based tools for front-end devs and SASS version of “Blank” theme
Of course, it’s not a game changer, but definitely a good foundation for further projects.
It’s also entry point for me, that’s my first attempts ever in creating something almost from scratch and sharing them to you.
Afterword
My English skills are not even close to be good (I’m working on it), so my thoughts were described using simple language and might not express my real feelings in proper way. It might look like hate speech, but I just want to notice the problem and invite people to start working on it.