architecture
architecture copied to clipboard
API changes in Magento 2.5
AC: Compile a list of classes/interfaces that should be marked as @api in 2.5. The main goal is to reduce "grey area" when community cannot avoid using classes/interfaces that are not officially marked as @api
See https://github.com/magento-commerce/development-guild/issues/47
PR Scope:
- Compiled a list of interfaces that need to be marked as @api, removed or deprecated in 2.5
- Described auto-generated code that needs to be marked as @api in 2.5
- Added sections about exceptions and extension attribute classes
- Compiled a list of factories that need to be marked as @api in 2.5
- Analyzed non-API usages by extensions on Marketplace and proposed to "legalize" most of the top ones by marking them as @api
- Compiled a list of blocks that need to be marked as @api
I would like to see CartItemOptionsProcessor in the API. PR and reasoning here: https://github.com/magento/magento2/pull/30819
Maybe Sales Pdf Models could be considered as well to avoid BiC problems (like what happened in 2.3.6): https://github.com/magento/magento2/issues/30684 & https://github.com/magento/devdocs/issues/8299 & https://github.com/distrimedia/magento2-distrimedia-connector/issues/1
@hostep, please provide the exact list of classes that should be marked as @api to prevent future issues with backward compatibility of PDF generation.
Tasks
Just marking interfaces as API
Core modules: https://github.com/magento/magento2/issues/32011 https://github.com/magento/magento2/issues/32013 https://github.com/magento/magento2/issues/32014 https://github.com/magento/magento2/issues/32015 https://github.com/magento/magento2/issues/32017 https://github.com/magento/magento2/issues/32018 https://github.com/magento/magento2/issues/32020 https://github.com/magento/magento2/issues/32021 https://github.com/magento/magento2/issues/32022 https://github.com/magento/magento2/issues/32023
Framework: https://github.com/magento/magento2/issues/32024 https://github.com/magento/magento2/issues/32025 https://github.com/magento/magento2/issues/32026 https://github.com/magento/magento2/issues/32027 https://github.com/magento/magento2/issues/32028 https://github.com/magento/magento2/issues/32029 https://github.com/magento/magento2/issues/32030 https://github.com/magento/magento2/issues/32031 https://github.com/magento/magento2/issues/32032 https://github.com/magento/magento2/issues/32033 https://github.com/magento/magento2/issues/32034 https://github.com/magento/magento2/issues/32035 https://github.com/magento/magento2/issues/32036
Extensions: https://github.com/magento/adobe-ims/issues/9 https://github.com/magento/adobe-stock-integration/issues/1858 https://github.com/magento/inventory/issues/3273 https://github.com/magento/magento2-page-builder/issues/732 https://github.com/magento/partners-magento2b2b/issues/544 https://github.com/magento/partners-magento2ee/issues/477 https://github.com/magento/security-package/issues/290
Marking interfaces as API and additional changes
https://github.com/magento/magento2/issues/32037 https://github.com/magento/magento2/issues/32038 https://github.com/magento/partners-magento2b2b/issues/545 https://github.com/magento/partners-magento2ee/issues/478 https://github.com/magento/magento2/issues/32039
Deprecation/updates in 2.4
https://github.com/magento/magento2/issues/32040 https://github.com/magento/partners-magento2b2b/issues/546 https://github.com/magento/magento2/issues/32060 https://github.com/magento/magento2/issues/32063
Factories
https://github.com/magento/partners-magento2ee/issues/479 https://github.com/magento/magento2/issues/32041
Blocks
https://github.com/magento/magento2/issues/32043 https://github.com/magento/magento2/issues/32044 https://github.com/magento/magento2/issues/32045 https://github.com/magento/magento2/issues/32046 https://github.com/magento/magento2/issues/32047 https://github.com/magento/magento2/issues/32048 https://github.com/magento/magento2/issues/32049 https://github.com/magento/magento2/issues/32050 https://github.com/magento/magento2/issues/32051 https://github.com/magento/magento2-page-builder/issues/733 https://github.com/magento/partners-magento2ee/issues/480 https://github.com/magento/partners-magento2b2b/issues/547 https://github.com/magento/partners-magento2ee/issues/481 https://github.com/magento/partners-magento2ee/issues/482 https://github.com/magento/partners-magento2b2b/issues/548 https://github.com/magento/partners-magento2ee/issues/483 https://github.com/magento/magento2/issues/32052 https://github.com/magento/partners-magento2b2b/issues/549 https://github.com/magento/partners-magento2b2b/issues/550 https://github.com/magento/partners-magento2ee/issues/484 https://github.com/magento/magento2/issues/32053
API candidates based on Marketplace extensions usage analysis
https://github.com/magento/magento2/issues/32054 https://github.com/magento/magento2/issues/32055 https://github.com/magento/magento2/issues/32056 https://github.com/magento/magento2/issues/32057 https://github.com/magento/magento2/issues/32058 https://github.com/magento/magento2/issues/32059
Removal of deprecated classes/interfaces
https://github.com/magento/magento2/issues/32061 https://github.com/magento/magento2/issues/32062 https://github.com/magento/partners-magento2ee/issues/485 https://github.com/magento/magento2/issues/32064
Removal of extension attribute classes/interfaces
https://github.com/magento/magento2/issues/32089 https://github.com/magento/partners-magento2b2b/issues/551 https://github.com/magento/magento2-page-builder/issues/734
That's really sad to deprecate the entityManager, it actually works great, and I've seen some project/modules using it. It provides good extensibility and allows to perform action over CRUD operation. FYI the current AbstractModel and resourceModel does not allow such extensibility for after/before create/update/delete/read operations, and the versionControlResource only allows after save operation.. With deprecated entityManager we will have to use plugins which are not SOLID and does not provide clean view of architecture/dependencies
Anything that Magento Coding Standard points towards as an alternative for a discouraged function should be API annotated.
The first one that comes to mind is Magento\Framework\Filesystem\Io\File
That list is here: https://github.com/magento/magento-coding-standard/blob/887ecba8edaff155951094051822995cff3bca1c/Magento2/Sniffs/Functions/DiscouragedFunctionSniff.php#L34-L231