magento / architecture

A place where Magento architectural discussions happen
275 stars 154 forks source link

API changes in Magento 2.5 #473

Open paliarush opened 3 years ago

paliarush commented 3 years ago

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:

navarr commented 3 years ago

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

hostep commented 3 years ago

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

paliarush commented 3 years ago

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

sivaschenko commented 3 years ago

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

thomas-kl1 commented 3 years ago

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

navarr commented 3 years ago

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