architecture icon indicating copy to clipboard operation
architecture copied to clipboard

API changes in Magento 2.5

Open paliarush opened this issue 3 years ago • 6 comments

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

paliarush avatar Dec 21 '20 23:12 paliarush

I would like to see CartItemOptionsProcessor in the API. PR and reasoning here: https://github.com/magento/magento2/pull/30819

navarr avatar Jan 04 '21 21:01 navarr

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 avatar Jan 12 '21 17:01 hostep

@hostep, please provide the exact list of classes that should be marked as @api to prevent future issues with backward compatibility of PDF generation.

paliarush avatar Jan 22 '21 22:01 paliarush

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

sivaschenko avatar Feb 09 '21 15:02 sivaschenko

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

thomas-kl1 avatar Feb 24 '21 17:02 thomas-kl1

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

navarr avatar May 04 '21 11:05 navarr