cancel
Showing results for 
Search instead for 
Did you mean: 

Reducing TCO: Additional @api Coverage in Magento 2.5

Alex Paliarush
Adobe Team

Magento is committed to reducing total cost of ownership (TCO) for merchants. One of the ways to reduce TCO is prevention of breaking changes in future Magento releases through well-documented & thorough API coverage.

 

Magento's semantic version checker tool helps us to avoid accidental breaking changes in existing PHP APIs. On the other hand, there is no mechanism for enforcing extensions to rely on Magento APIs only. In some cases, extensions depend on non-API Magento classes or interfaces for no obvious reason. In the others, they are forced to introduce non-API dependencies because API-appropriate classes and interfaces are not marked as such.

 

To remedy this, we are going to mark an additional 1000+ classes and interfaces as @api to increase the officially recognized API coverage. As a result, the number of non-API usages in third party extensions is expected to drop significantly, increasing upgradeability of the Magento stores and thereby reducing TCO.

 

All newly marked APIs belong to one of the categories:

  • Most of the interfaces in the system, which are currently not part of the API
  • Auto-generated classes and interfaces, like extension attributes and factories for API entities
  • Blocks with explicitly defined public methods, excluding inherited ones
  • Various customization points, like composite classes

The complete list of new APIs is available in the related PR.

 

If you have additional API candidates for 2.5 release, please leave your suggestion in the PR or create an issue at https://github.com/magento/magento2/issues.

4 Comments
baldwin_pieter
Core Contributor

Sounds like a great idea!

 

Out of curiosity: is there an automated tool that exists which you can execute over one or multiple custom Magento2 modules which tells you what non-api marked methods inside Magento core code a module is using? That would help in discovering code which we need to take a look at and might help with reporting classes which aren't marked with api yet to you guys in case no alternative exists.

Alex Paliarush
Adobe Team

@baldwin_pieter thank you for the feedback. And yes, we are working on a tool to assist developers with locating dependencies on non-API PHP interfaces/classes in custom Magento modules. Please see devdocs section about SUT (Safe Upgrade Tool).

pmsteil
New Contributor

Hello Alex,

 

We would be interested in using the SUT tool and we are a commerce customer.  I tried to run it on 2.3.6 EE and it didn't wasn't in the bin folder.

 

I also tried to access the link on the SUT page, but it doesn't take you to a download page.

 

Thanks!

5d1cb17467d51
Established Member

@pmsteil let's talk about this on SUT slack channel #magento-safe-upgrade-too