This developer-focussed event has exploded in popularity across the world since its inception four years ago. The 2017 edition of the original Manchester event took place on the 10th and 11th of November. Six of us from Meanbee made the trip. It was a fantastic place for listening to and learning from different perspectives but also a great way to spend time with the team outside of the office and the day to day.
There are a few aspects of MageTitans which make it a great event for me. Firstly, focussing so heavily on the development side creates a "no-suit" atmosphere where it's safe for developers to get into the nitty gritty. This means that it's a lot easier than other events to get caught up into implementation details and discussing difficult problems with other attendees. This is great for uncovering new solutions to problems and taking them back to the office, both from the talks themselves and the mingling in and around the event.
I wasn't able to make last year's event so this was my first in a couple of years but I found that it had an especially good balance of topics all the way through different aspects of backend and frontend. More than that though, it had a great balance of complexity which, in my opinion, made it useful to all Magento developers, no matter their experience.
There was a new format for Friday evening trialled this year. Instead of a workshop, Space 48 hosted a DevExchange, presentation and panel at their fantastic new Manchester office.
After arrival and introductions we split and joined tables for discussions on topics such as optimisation and performance, PWA, deployments and training. A problem shared is a problem halved, as they say.
Tom Erskine introduced us to the new functional testing framework that Magento will be releasing shortly. Replacing the original MTF that was deemed to be over-engineered. There's a lot of familiar technology involved: PHP, Composer, XML, Codeception, Allure and Robo. Much like the rest of the Magento, tests are abstracted into XML which allows for extension and modification through third-party or local modules. This XML is then "compiled" into PHP for the tests to be run. Like the original testing framework, it feels like an audacious plan, I hope it works out in practice. One of the long-standing challenges with functional testing is the length of time it takes to run. My expectation is that running the full test suite would still become impractical for every build/deployment. Running a cut down version potentially means missing out on regressions so it's going to be a balance.
We had a short amount of time left after this for a panel Q & A with Vinai Kopp, Ian Cassidy, Andreas von Studnitz and Mike Mafnas. Topics covered included where to get motivation to get into testing (the answer being peer pressure), the insurmountable challenge of working with UI components and other Magento 2 training challenges.
Following the DevExchange, the discussions continued at a local bar where some drinks were kindly sponsored by JH.
Now on to the next day and the main event!
Ben Marks - Magento Growth
Ben kicked-off the day celebrating 10 years of Magento and providing some background into Magento's growth. The amount of dollars that go through the platform is about as flabbergasting as the amount of dollars in business that it's helped put through the community.
Philip Jackson - Finding personal success
The opening keynote was given by one half of MageTalk, Philip Jackson. By day, he is an Ecommerce Evangelist at US agency Something Digital. He shared some of his life's trials and how he has grown through them. Without giving away the stories which I would recommend hearing straight from him if you get a chance, it was a transparent, uplifting and sometimes nail-biting experience! The take aways for me were:
- It's not always clear which path to take, take whichever one you find yourself continually coming back to. It's never too late to change course.
- We can go further with the support of those around us. The support and feedback that they provide are importing guiding elements.
- Overcompensation leads to spreading yourself too thin. Good is enemy of the great. This is one that I personally struggle with and so it's always good to hear.
- Failure is a state, not a destination. It can just be a stop on the way to success!
- Don't go to Point Hope, Alaska.
Maria Kern - JS for UI components
One of the biggest challenges for frontend developers with the change to Magento 2 is getting up to speed on UI components and learning how to customise them. While they are made up of multiple technologies, during this talk, Maria focussed on the JS part. For someone that hasn't gotten a handle on them yet, which I feel I'm not alone in, it was a fantastic introduction! She started with the basics and then moved on to some more complex examples. It was very well explained, I thoroughly recommend catching it.
Vinai Kopp - ClojureScript
Fabian Schmengler - Test Automation Journey
Fabian Schmengler, another household name when it comes to Magento development. I've found his blog posts very useful over the years, particularly when implementing fixtures for unit tests in Magento 1 with Ecomdev_PHPUnit.
Fabian's presentation was a humble and honest description of how he had been inspired by testing and how over the years he has battled to cover his Magento code in tests. With Magento 2, it's much easier to write business logic in decoupled, generic PHP and cover that in unit tests. This leaves very little to be test when integrating into Magento. This is a good practice approach for many other reasons, not just testing, so is certainly something I'd recommend where appropriate too.
For those that don't have any tests right now, the quickest way to get something of value is through Codeception smoke tests.
Raj Chevli – Separation of Code and State
Three years ago, Rick Steckles from CTI gave a talk at MageTitans on the same topic where he introduced their configuration management tool for Magento 1. As I understand it, it's a tool to manage database values in code so that it can be imported into version control and managed between environments. At first I thought this was a similar tool to Nick Jones' mageconfigsync. This is a tool that we use to manage system configuration in YAML which is useful for setting development and staging values once we've imported a sanitised database backup.
The CTI configurator seems to go a big step further and looks to be able to manage and maintain any database value in code. This enables developers to manage configuration, websites, catalog, customers, tax rules, etc. through YAML. This is particularly useful during the build of a project where you have the challenge of managing who has the "master" database and then any other changes being done through upgrade scripts.
It's worth pointing out that the configurator is a different approach to upgrade scripts. While upgrade scripts apply actions to state, the configurator defines a state and then the actions need to migrate the database to that state are automatically made.
An interesting project and one we'll certainly be trying out on our upcoming Magento 2 projects, thanks CTI!
Igor Melnykov - Writing Extensions Best Practices
Igor took us through a wide range of topics concerned with ensuring high code quality in our Magento modules. He covered familiar topics like the SOLID principles and the benefits of different types of tests. The most important take away was a reminder to read Magento's official Technical Guidelines. If you do that, you'll go a long way to making your Magento code follow best practices.
Shane Osbourne - React Native
There wasn't enough time to go into much technical detail, so hopefully we'll hear more from Shane on this. It's certainly an interesting topic and I'm sure there are others like me that would love to see the structure of the project and some code samples.
Riccardo Tempesta - Magento under siege
In this year alone I've had the privilege of listening to Riccardo present on headless Magento, choosing the right tools for the job and now a talk on being vigilant for common security flags in our projects. A relatively new community member, he's certainly prolific and has some interesting insights and contributions.
Riccardo's talk at MageTitans was an introduction into common security holes, like XSS, SQL injection and the need to filter user input. While you can be relatively confident in core Magento code, security weaknesses are most likely to be found in third-party extensions or custom code. For that reason, it's important to be aware of the typical signs for weakness and be reviewing your own code and any code that you install.
He advertised that MageSpecialist have released a suite of security tools to protect your Magento 2 store. These include two-factor auth for admin, admin IP restriction, but more interestingly an intrusion detection system.
While not strictly part of his talk, it would be rude not to mention MageSpecialist's DevToolbar for Magento 2 which looks like a godsend.
Igor Miniailo - Multi-source inventory
As far as I'm aware, the multi-source inventory project is a first for Magento. It's a community-led project to add functionality to Magento with support from the core engineering team. While I'm sure there are challenges and learning opportunities from this new approach, should it go well, this could really jump-start the speed of development for the Magento core. It will increase the velocity of exciting new features that are valuable to the community as they're coming directly from the community!
The project itself is somewhat grand in scale. It is to add multiple inventory locations and then manage how these stock sources are fed into different Magento stores. It introduces the concept of reservations so that cataloginventory values do not need to be updated when each order is placed which avoids the slowdown of doing so. Instead, a list of adjustments are logged on each order (or order return) that then allows the store to keep on ticking, calculating stored stock level plus or minus the adjustments to work out if products are still available. On a routine, these adjustments can then be settled into the stored stock level.
Peter Mintchev - Managing the Design process
As a member of the Magento UX team, Peter was here to help us dissect what goes wrong during the design process with the help of the brilliant Oatmeal comic. While it is always going to be a challenge, Peter advised us on ways to help guide projects so that they always have clear, achievable goals and how to measure the success of your store after launch.
Matthew Haworth - Command Line tools
As I understand it, this was Matthew's first time speaking and he did a great job. He shared a beginner's guide to a range of command line tools that help us to be productive developers. Some highlights include:
screen- Not to be missed out on, use this to make sure your commands continue running even if you get disconnected from a remote server
pv- Another simple but incredibly value tool that shows you the progress of a pipe. Finally you can know how long that MySQL dump is going to take to import. Yes, you definitely have time to read twitter for a bit.
tar czf- While familiar to many, we simply cannot miss out on one of the highlights of Matthew's talk which gave us the helpful mnemonic of "Create Ze Files" and "eXtract Ze Files". Brilliant.
Max Pronko - Customising Magento 2's Checkout
Customising the checkout may have already been bottom of a developer's wishlist in Magento 1, but it's got, arguably, even more tricky in Magento 2. Max was on hand to go through some of the different approaches to modifying checkout functionality in Magento 2, and there are a few.
Some customisations to layout can be achieved through XML but the structure requires a huge tree of XML which is a big step back even from the XML available in Magento 1. To counteract the Christmas tree effect, Ash Smith has since shared an idea which involves adding aliases to the core which can then be targeted to save including the entire tree when making modifications.
Max explained that while he had had a fair bit of experience making customisations, when he challenged himself to solve Ben Crook's problem of needing to wrap two of the address fields in another div, he struggled. He failed a few times before succeeding but it took him over a couple of hours. This goes to show how extensible in theory but impractical the current setup is.
Thanks to Max for explaining away (some of) the mystery of the Magento 2 checkout.
Felix Delval - Magento Order Management
Felix took us down the rabbit hole of Magento's Order Management system. This was a short overview of how it fits into the Magento ecosystem. He focussed particularly on the communication between Magento Commerce and Magento Order Management. It uses RPC instead of REST or SOAP apis. This is not something that we've had an opportunity to use yet so it was good to get insight into how it works from an integrator's perspective. It's certainly a big part of Magento's future with around 80 people in Barcelona working on the project. Why not have a read up on the documentation.
Nice to get some technical details on working with #Magento Order Management from @fe_lix_— John Hughes (@JohnHughes1984) November 11, 2017
Example of how to authenticate and update a stock value using the JSON-RPC protocol#MageTitansMCR pic.twitter.com/UGvfQZVAjd
James Zetlen - Magento PWA
There's no better topic than Progressive Web Apps to close off 2017's MageTitans. The Lead Frontend Architect at Magento expanded on the plans he had shared on the DevBlog on the PWA Studio. This is an important topic as there's a lot of new technology and approaches for Magento developers to learn. From sitting on the PWA table at the DevExchange the night before, there is still plenty of confusion over what PWA was and what Magento's plans are.
James started off by sharing a few things that the PWA initiative is not, the main point being that it is not a new release for Magento. The current frontend architecture is not going to be sunset. I imagine this is because it's too early to say that single page applications built on React ecosystem is going to be the only future of the web. I think this is wise but will be challenging for extension developers especially if they need to manage and maintain two integrations for their modules. It will be interesting to see how client expectations adapt over the next few years and whether we'll soon see demands for PWA regardless. The question is does prompt is how the current frontend architecture is going to be improved to facilitate easy customisations and the roll out of more UI components. If the frontend attention is on PWA then it's unclear on what timeline we should expect improvements of what's there already.
Magento's aim with PWA Studio is to provide a set of tools which help create PWA solutions. Where PWA is just the modern state of web technologies and development.
James shared frankly how there was a lot of experimenting and "white-boarding" at the moment while they develop their plans. So we're grateful for Magento sharing the work in progress, it's a useful opportunity for us to gain insight, learn and provide feedback.
James provided some examples of what a Magento-wrapped React component might look like, trying to inherit as many of the practices and concepts familiar to the React community while also making it make sense for Magento.
One of the questions threw up another interesting point. Magento do not expect to use Node to serve the PWA. The app shell will be delivered by PHP as Magento has most of what it needs in place already to do this. Hopefully this will be straight-forward in practice but is a diversion from the React community which may have some nuances.
Now we just wait eagerly for Imagine 2018 where the first version of the developer tools for PWA studio are set to be launched.
If you're looking to catch up on any more detail on any of the talks, this year's conference was live-streamed on Periscope and there are some recordings available. The official YouTube recordings will be released in due course.