It has been almost a year since we resumed work on Adobe’s Magento PhpStorm plugin. It’s fair to say that balancing merchant work with open source project contribution is not done easily. Especially during the build-up to the holiday season, when all of our client businesses ramp up their online eCommerce plans – requesting that agencies like Atwix ramp up development efforts, as well.
We all have 24 hours in a day, right? Kidding aside, with all the community’s interest, passion and motivation aligned, and now on the other side of the holiday sprint season, there is a clear need and now some time to re-commit effort to this critical community engineering project. And critical this project is! The number of people using this plugin defies the imagination. There were more than 70,000 downloads in November 2020. Almost every Magento developer is affected.
Commits in the repository since the early beginning.
Here’s some statistics – we have:
- 26 contributors from 9 countries
- Around 40 forks
- Around 300 Git clones per month
- Around 2500 visits to the repository per month
- Around 230 pull requests.
Statistics become even more impressive considering the fact that there is not even a single line of code written commercially. Every feature is based on personal initiative during free time.
What have we done?
There are several IDE features utilized most in the plugin:
- Generating code from the templates by context menu
- Reference navigation between files
- Code completion
- Code inspection
- Code quick fix
- Line markers navigation.
During 2020, the feature we spent most time and effort on was code generation. The community has chosen it as most wanted by voting on Twitter. We implemented various actions that can generate the following files:
- CLI command PHP class
- di.xml with various declarations (plugin, preference etc.)
- CRON job PHP class
- UI component data provider PHP class
- Layout XML file
- View Block PHP class
- Resource Collection PHP class
- Action Controller PHP class
- Cron Group XML file
- GraphQl resolver PHP class
- Model PHP class
- Resource Model PHP class
- View Model PHP class
- Observer PHP class
- Plugin PHP class
- UI Form XML file
- UI Grid XML file.
Reference navigation and code completion
The reference navigation and completion remain to be very important features. The first helps the programmer to quickly locate the desired position or a file. The second helps with avoiding mistakes and speeding up the coding process. We extended the existing functionality with the following features:
- MFTF tests XML tags and attributes
- RequireJS injection navigation
- PHP class and method reference in the crontab.xml
- Parent menu reference and completion in the menu.xml.
Code inspections are a powerful functionality we started using this year. We covered some of the most critical parts of the Magento 2 codebase to help the developer avoid mistakes that can possibly lead to hours of debugging:
- Plugin inspection within PHP class
- Duplicated Observer Usage in events XML
- Inspection for the Module declaration in the `registration.php` file
- Duplicated Plugin Usage in di XML
- Inspection for disabled cache site-wide
- GraphQL inspections
- Inspection for the Module declaration in the `etc/module.xml` file
- Inspection for the Title XML required attribute in the `etc/acl.xml` file.
Line markers and more
Another amazing navigational tool is the line marker. We have extended this with the following functionality:
- Plugin class to di.xml and vice versa
- GraphQL resolver to the schema and vice versa.
Beyond what’s mentioned above we added a Magento 2 module as a separate project, improved test coverage of the existing functionality, added CI and much more.
Top contributors and maintainers
What about getting acquainted with folks who made that possible? I have asked them to share why they had chosen to contribute to the repository. Let’s take a look at their responses.
I’m Adarsh Manickam from Chennai, India and I work at EY as an Associate Engineer on Magento projects.
I started working with Magento back in early 2019 when I was working at Zilker Technology and started contributing to the Magento repositories in late 2019. Once I got the hang of it, I dove deep and became the No.1 Magento contributor in the world for Q4 2019. I have been programming for the past 5 years in various domains like NodeJS, ReactNative, web development, and Magento of course.
Contributing to open-source projects is a highly appreciated practice and I strongly believe in it. The best part is that the bond with the community is something really special since we’re all spread across the world at various companies, time zones, and age groups but still work towards the same goal.
The Magento community is something even more special. There are so many opportunities, exposure, and networking possibilities here. I haven’t worked much on Java, but I still decided to start contributing to the Java-based Magento PhpStormunder the guidance of Vitalii Boiko, to really improve the plugin, used by almost every Magento developer, and to have a direct impact on our Magento community. I have learned so much just in the past month of contributing to this repository, and cannot wait to constantly contribute to the Magento community in any possible way.
Hi! I’m Serhii Zhovnir, Tech Lead at Atwix, 5x Adobe Magento Certified. I’m from Khmelnytskyi, Ukraine. My programming experience is almost 4 years with Magento and 5 years with PHP with Java usage only for contributing to PhpStorm Magento 2 Plugin.
Why have I chosen to contribute to the plugin? Because it was interesting and challenging. What also motivated me – was the understanding that I develop the functionality that will be used by plenty of Magento developers.
My name is Shankar Konar. I’m from Ahmedabad, Gujarat, India. I’m working as a Magento developer at Elatebrain Pvt Ltd. I’ve always been passionate about Magento open source project and try to extract maximum knowledge by contributing to different repositories as well as to have fun while learning new stuff.
I always love new challenges and since the early days in my college, I was mostly interested in learning the Java language. That is the reason I chose to contribute and learn a lot of things in Java.
Hi! I’m Dylan Ngo from Vietnam. I’m a software engineer, blogger, contributor to Magento project, ReactJS, and so on.
I want to help developers put less effort into Magento development, as believe that they should be focused on business and not worry about code duplication. This is the reason I’m here.
My name is Bohdan Harniuk! I live in Khmelnytskyi, Ukraine. I’ve worked as a software engineer for more than 3 years. I decided to contribute to the Magento 2 PhpStorm Plugin project because I really wanted to develop something useful for other developers (and myself) to make their everyday work a little bit more comfortable and pleasant.
Hi! My name is Eduard Chitoraga from the Republic of Moldova. I’m a proud Atwix developer that found pleasure in contributing.
Why have I chosen to contribute to the plugin? That’s a quite good question because I was trying each new repository, looking for new challenges. And fortunately, I jumped into the PhpStorm plugin and found a big area for growth. It was a bit challenging because of the new technology, but it was worth it.
This is the place that allows making your work much easier, by giving you the freedom of choosing which Magento processes you want to facilitate.
Hi! My name is Alexander Shkurko. I live in Kyiv, Ukraine. I work in Atwix as a Technical Lead. My area of responsibilities is in team management, projects technical expertise, and communication with the business owners along with the project managers.
I have been working in the sphere of business automation for more than 8 years and during 7 of them, the Magento platform is the main tool for me. From small customizations to complex analytics system integrations and from being a beginner in a world of e-commerce to a Magento evangelist, I had been looking for the possibility to volunteer to the platform. And I found this in the Magento community. One of the driving forces of the whole platform.
It was exciting to find out that the PhpStorm plugin was resurrected by Vitaliy Boyko. I believe that this is really important, as the tool helps you to improve not only the quality of the Magento solutions but also the development process. So in May 2020, I joined Vitalii in PhpStorm plugin contributions. I started with several adjustments and implementation of the CLI command generation. After that I have proudly joined the Maintainers team, reviewing the tool changes. Being a great responsibility, it’s also an interesting process that helps improve professional skills and provides a chance to communicate with people around the world.
From my point of view, the work we do in the Magento community – like the software development improvement for the PhpStorm plugin – helps people to make things better, faster, and with higher quality.
Nothing draws people together like community engineering. Even though we work remotely from one another, separated by oceans, living our daily lives in different cultures, speaking different languages – we have much in common. Starting with our technical mindset and a common commitment to improving our Magento community. Our passion to automate, optimize, and work creatively to solve complex problems will help the next wave of developers having an easier go of it.
On behalf of the group of Community Engineers, we are opened to new ideas and welcome new contributors. Feel free to open an issue with a feature request. Let’s make our work with Magento 2 faster, safer, more and more convenient. You can catch up with me on the Magento Community Slack channel or on Twitter if you have any questions.
I’d like to thank everyone who has contributed to the repository, added a new issue, engaged on the Slack channel, created PR’s, advised the team, and so on. Without you, well, it would not be Magento Community Engineering as we know it!