Netresearch is member of

We support

Working on the values and guidelines for professional extension development to ensure a steady improvement in the supply of the Magento® ecosystem is our mission.

Netresearch is a member of the Magento Extension Developers Network

Netresearch is a member of the Magento Extension Developers Network, or ExtDN for short. has its roots in the strong Magento® developer community and was initiated in late 2015 by Kristof Ringleff (Fooman) and like-minded developers.

Early on, Netresearch became part of the ecosystem around extension development for Magento. Long-standing, successful, and trusting partnerships such as with Deutsche Post, DHL, and the payment provider Ingenico ePayments have been created and are still an ongoing part of our everyday activities.

As professionals, we accompany our customers from project conception through development, continuous improvement, optimization, and technical customer support for their extensions.

We are convinced that the exchange of knowledge and experiences about common principles and code guidelines offers real added value. This way, all the findings and best practices from the developer community can flow directly into the underlying product: Magento®. Thus, all members of ExtDN contribute to a sustainable improvement of the Magento® ecosystem.

That's why Netresearch belives in the idea and supports

ExtDN officially describes itself as

A network of leading Magento extension developers who share a common vision for a thriving Magento ecosystem with the merchant's success at heart. Collectively, ExtDN members are committed to advancing Magento as the world's leading e-commerce platform for merchants."

by Kristoff Ringleff (Fooman), Initiator and co-founder of ExtDN - read more

The Dos of professional Magento 2 extension development

1. Do use composer

Use composer packages to distribute (especially commercial) extensions. For a local environment, it is fine to develop your own code under app/code. However, once you distribute your module to other environments, it should be through composer as otherwise dependencies are left unmanaged. In a production environment, the app/code folder should therefore ideally be empty.

2. Do use service contracts

Whenever a dependency is injected into a class try to abstract this dependency. If there is a preference for a specific class, in the form of a PHP interface, you should inject the interface instead. Inject only classes or interfaces (aka Service Contracts) that are either part of the Magento framework or the API of specific modules.

3. Do write tests

Testing becomes a habit that pays off in the long run. Make sure functionality is tested using integration tests and functional tests. Remember that unit tests make more sense with isolated code, integration tests make more sense with code that touches the rest of Magento.

4. Do document your dependencies

If your module depends on other modules, make sure that both your composer file and your module.xml file reflect this. If your module only depends on the Magento framework, your module should likely be treated as a library, not a module. Your composer version constraints should respect the semantic versioning standards of Magento.

5. Do version releases

Whenever you have made a change, increase your composer package version number. Follow semantic versioning: Major for compatibility changes, minor for features, patch for fixes. Only increase the setup_version number in your module.xml file when changes to the database are needed.

6. Do provide a user manual

All users should get clear instructions on how to install, update and remove your extension as well as how to use the provided functionality. This could include a technical overview of your extension, documenting your customisation points like observable events and your public API definition.

7. Do use events and plugins

Use events and plugins on @api marked methods as primary means of customising functionality. When intercepting functionality of non-API methods using plugins, which is less recommended, make sure to reflect this in your composer version constraints. Avoid redefining existing preferences where possible.

8. Do check you code

Use a static analysis tool like PHP CodeSniffer (with the ExtDN and MEQP rulesets). Check whether your extension works in Production Mode. Confirm your extension works under the Magento versions that you claim compatibility with. Have a colleague or friend review your code before releasing it.

© Originally at The Dos of Magento Magento 2 Extension development


Stop Complaining, Start Contributing!
by Jisse Reitsma (ExtDN member)