magento / magento2

Prior to making any Submission(s), you must sign an Adobe Contributor License Agreement, available here at: https://opensource.adobe.com/cla.html. All Submissions you make to Adobe Inc. and its affiliates, assigns and subsidiaries (collectively “Adobe”) are subject to the terms of the Adobe Contributor License Agreement.
http://www.magento.com
Open Software License 3.0
11.46k stars 9.29k forks source link

Magento 2 base packages are polluted by dozens of non-required modules #30501

Closed ericmorand closed 3 years ago

ericmorand commented 3 years ago

Preconditions (*)

Probably ever version of Magento 2 but confirmed in Magento 2 2.3.5.

Steps to reproduce (*)

Expected result (*)

In vendor/magento, only the framework and the modules required to provide the core features of aMagento 2 should be present.

Actual result (*)

vendor/magento is poluted by dozens of packages that are not required like module-contact, module-ups, module-paypal, etc.

Thoughts

Magento 2 team provides an out-of-the-box installation in the form of this exact GitHub Project for people that don't want to have to install manually the modules that they want. It creates an installation bloated with features that most people don't use. Though I understand that approach which serves as a convenience strategy for casual users of Magento 2, there is no reason that Magento 2 base packages (for example magento/community-edition) to be poluted by modules that may not be needed by the advanced users.

Said differently: users that require Magento 2 base package explicitly know what they are doing. Would they want the all-in-one package they would use the proposed installation of this GitHub repository. But they deliberately install the base package. And they end-up poluted with dozens of modules they don't want.

They either have to disable them in their config and/or replace them using composer directives. Which is much more long and difficulty than having to just require the modules they want to include in their product.

m2-assistant[bot] commented 3 years ago

Hi @ericmorand. Thank you for your report. To help us process this issue please make sure that you provided the following information:

Please make sure that the issue is reproducible on the vanilla Magento instance following Steps to reproduce. To deploy vanilla Magento instance on our environment, please, add a comment to the issue:

@magento give me 2.4-develop instance - upcoming 2.4.x release

For more details, please, review the Magento Contributor Assistant documentation.

Please, add a comment to assign the issue: @magento I am working on this


:clock10: You can find the schedule on the Magento Community Calendar page.

:telephone_receiver: The triage of issues happens in the queue order. If you want to speed up the delivery of your contribution, please join the Community Contributions Triage session to discuss the appropriate ticket.

:movie_camera: You can find the recording of the previous Community Contributions Triage on the Magento Youtube Channel

:pencil2: Feel free to post questions/proposals/feedback related to the Community Contributions Triage process to the corresponding Slack Channel

gwharton commented 3 years ago

Definitely in need of someone spending some time decoupling modules. You can use "replace" in composer.JSON to drop modules you don't use, but you run the risk of dependency issues.

ericmorand commented 3 years ago

Actually, it's nearly impossible to remove modules that our customers don't require. Try for example to remove a module as simple as Magento_Downloadable:

bin/magento module:disable Magento_Downloadable
Unable to change status of modules because of the following constraints:
Cannot disable Magento_Downloadable because modules depend on it:
Magento_AdminAnalytics: Magento_AdminAnalytics->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_Store: Magento_Store->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Directory: Magento_Directory->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_MediaGallery: Magento_MediaGallery->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Theme: Magento_Theme->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_Eav: Magento_Eav->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_AdvancedPricingImportExport: Magento_AdvancedPricingImportExport->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Rule: Magento_Rule->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Customer: Magento_Customer->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Backend: Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_AmqpStore: Magento_AmqpStore->Magento_Store->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Config: Magento_Config->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_User: Magento_User->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_Authorization: Magento_Authorization->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_AdminNotification: Magento_AdminNotification->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_Indexer: Magento_Indexer->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_Variable: Magento_Variable->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_AuthorizenetGraphQl: Magento_AuthorizenetGraphQl->Magento_QuoteGraphQl->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Cms: Magento_Cms->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Backup: Magento_Backup->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_Catalog: Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Quote: Magento_Quote->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Payment: Magento_Payment->Magento_Checkout->Magento_Msrp->Magento_Downloadable
Magento_CatalogInventory: Magento_CatalogInventory->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_BraintreeGraphQl: Magento_BraintreeGraphQl->Magento_Store->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Bundle: Magento_Bundle->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_GraphQl: Magento_GraphQl->Magento_Eav->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_BundleImportExport: Magento_BundleImportExport->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_BundleImportExportStaging: Magento_BundleImportExportStaging->Magento_Bundle->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Sales: Magento_Sales->Magento_Reports->Magento_Downloadable
Magento_CacheInvalidate: Magento_CacheInvalidate->Magento_PageCache->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_MediaStorage: Magento_MediaStorage->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Checkout: Magento_Checkout->Magento_Msrp->Magento_Downloadable
Magento_AdvancedCatalog: Magento_AdvancedCatalog->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Security: Magento_Security->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_CmsGraphQl: Magento_CmsGraphQl->Magento_Cms->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_EavGraphQl: Magento_EavGraphQl->Magento_Eav->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Search: Magento_Search->Magento_Reports->Magento_Downloadable
Magento_StoreGraphQl: Magento_StoreGraphQl->Magento_Store->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_CatalogImportExport: Magento_CatalogImportExport->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_CatalogImportExportStaging: Magento_CatalogImportExportStaging->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Authorizenet: Magento_Authorizenet->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_CatalogInventoryGraphQl: Magento_CatalogInventoryGraphQl->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_CatalogRule: Magento_CatalogRule->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_CatalogUrlRewrite: Magento_CatalogUrlRewrite->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Widget: Magento_Widget->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Msrp: Magento_Msrp->Magento_Downloadable
Magento_SalesRule: Magento_SalesRule->Magento_Reports->Magento_Downloadable
Magento_CustomerCustomAttributes: Magento_CustomerCustomAttributes->Magento_Checkout->Magento_Msrp->Magento_Downloadable
Magento_Ui: Magento_Ui->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_GiftCard: Magento_GiftCard->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Captcha: Magento_Captcha->Magento_Checkout->Magento_Msrp->Magento_Downloadable
Magento_CatalogGraphQl: Magento_CatalogGraphQl->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_CatalogEvent: Magento_CatalogEvent->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_CustomerSegment: Magento_CustomerSegment->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_CardinalCommerce: Magento_CardinalCommerce->Magento_Checkout->Magento_Msrp->Magento_Downloadable
Magento_CheckoutAddressSearch: Magento_CheckoutAddressSearch->Magento_Checkout->Magento_Msrp->Magento_Downloadable
Magento_Wishlist: Magento_Wishlist->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_CheckoutAgreements: Magento_CheckoutAgreements->Magento_Checkout->Magento_Msrp->Magento_Downloadable
Magento_CheckoutAgreementsGraphQl: Magento_CheckoutAgreementsGraphQl->Magento_Store->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Staging: Magento_Staging->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_AdvancedCheckout: Magento_AdvancedCheckout->Magento_Downloadable
Magento_CatalogCmsGraphQl: Magento_CatalogCmsGraphQl->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_VersionsCms: Magento_VersionsCms->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_CmsUrlRewrite: Magento_CmsUrlRewrite->Magento_Store->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_CmsUrlRewriteGraphQl: Magento_CmsUrlRewriteGraphQl->Magento_Store->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Integration: Magento_Integration->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_ConfigurableProduct: Magento_ConfigurableProduct->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_CatalogRuleConfigurable: Magento_CatalogRuleConfigurable->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_QuoteGraphQl: Magento_QuoteGraphQl->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_ConfigurableProductSales: Magento_ConfigurableProductSales->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_PageCache: Magento_PageCache->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_Contact: Magento_Contact->Magento_Store->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Cookie: Magento_Cookie->Magento_Store->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Cron: Magento_Cron->Magento_Store->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_CurrencySymbol: Magento_CurrencySymbol->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_CustomAttributeManagement: Magento_CustomAttributeManagement->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_Analytics: Magento_Analytics->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_CustomerBalance: Magento_CustomerBalance->Magento_Checkout->Magento_Msrp->Magento_Downloadable
Magento_CustomerBalanceGraphQl: Magento_CustomerBalanceGraphQl->Magento_Store->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_CatalogWidget: Magento_CatalogWidget->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_DownloadableGraphQl: Magento_DownloadableGraphQl->Magento_Downloadable
Magento_CustomerFinance: Magento_CustomerFinance->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_CustomerGraphQl: Magento_CustomerGraphQl->Magento_Store->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_CustomerImportExport: Magento_CustomerImportExport->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_ProductAlert: Magento_ProductAlert->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Vault: Magento_Vault->Magento_Checkout->Magento_Msrp->Magento_Downloadable
Magento_Deploy: Magento_Deploy->Magento_Store->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Developer: Magento_Developer->Magento_Store->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Dhl: Magento_Dhl->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_AdvancedSearch: Magento_AdvancedSearch->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_DirectoryGraphQl: Magento_DirectoryGraphQl->Magento_Store->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_CatalogSearch: Magento_CatalogSearch->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_CustomerDownloadableGraphQl: Magento_CustomerDownloadableGraphQl->Magento_DownloadableGraphQl->Magento_Downloadable
Magento_ImportExport: Magento_ImportExport->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_TargetRule: Magento_TargetRule->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_AuthorizenetAcceptjs: Magento_AuthorizenetAcceptjs->Magento_Checkout->Magento_Msrp->Magento_Downloadable
Magento_CatalogCustomerGraphQl: Magento_CatalogCustomerGraphQl->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Elasticsearch: Magento_Elasticsearch->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Elasticsearch6: Magento_Elasticsearch6->Magento_Search->Magento_Reports->Magento_Downloadable
Magento_WebsiteRestriction: Magento_WebsiteRestriction->Magento_Store->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Email: Magento_Email->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_EncryptionKey: Magento_EncryptionKey->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_Enterprise: Magento_Enterprise->Magento_AdvancedCheckout->Magento_Downloadable
Magento_Eway: Magento_Eway->Magento_Checkout->Magento_Msrp->Magento_Downloadable
Magento_Fedex: Magento_Fedex->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Tax: Magento_Tax->Magento_Reports->Magento_Downloadable
Magento_GiftCardAccount: Magento_GiftCardAccount->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_GiftCardAccountGraphQl: Magento_GiftCardAccountGraphQl->Magento_Store->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_GiftCardGraphQl: Magento_GiftCardGraphQl->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_GiftCardImportExport: Magento_GiftCardImportExport->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_VisualMerchandiser: Magento_VisualMerchandiser->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_GiftMessage: Magento_GiftMessage->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_UrlRewrite: Magento_UrlRewrite->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_GiftWrapping: Magento_GiftWrapping->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_GoogleAdwords: Magento_GoogleAdwords->Magento_Sales->Magento_Reports->Magento_Downloadable
Magento_GoogleAnalytics: Magento_GoogleAnalytics->Magento_Sales->Magento_Reports->Magento_Downloadable
Magento_GoogleOptimizer: Magento_GoogleOptimizer->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_CatalogPermissions: Magento_CatalogPermissions->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Banner: Magento_Banner->Magento_Checkout->Magento_Msrp->Magento_Downloadable
Magento_BundleGraphQl: Magento_BundleGraphQl->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_GraphQlCache: Magento_GraphQlCache->Magento_PageCache->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_GroupedProduct: Magento_GroupedProduct->Magento_Msrp->Magento_Downloadable
Magento_GroupedImportExport: Magento_GroupedImportExport->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_GroupedCatalogInventory: Magento_GroupedCatalogInventory->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_GroupedProductGraphQl: Magento_GroupedProductGraphQl->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_GroupedProductStaging: Magento_GroupedProductStaging->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_DownloadableImportExport: Magento_DownloadableImportExport->Magento_Downloadable
Magento_Paypal: Magento_Paypal->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_InstantPurchase: Magento_InstantPurchase->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_CatalogAnalytics: Magento_CatalogAnalytics->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_InventoryAdminUi: Magento_InventoryAdminUi->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_InventoryAdvancedCheckout: Magento_InventoryAdvancedCheckout->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_InventoryBundleProduct: Magento_InventoryBundleProduct->Magento_Bundle->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_InventoryCatalog: Magento_InventoryCatalog->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_InventorySales: Magento_InventorySales->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_InventoryCatalogAdminUi: Magento_InventoryCatalogAdminUi->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_InventoryCatalogSearch: Magento_InventoryCatalogSearch->Magento_Store->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_InventoryConfigurableProduct: Magento_InventoryConfigurableProduct->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_InventoryConfigurableProductAdminUi: Magento_InventoryConfigurableProductAdminUi->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_InventoryConfigurableProductIndexer: Magento_InventoryConfigurableProductIndexer->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_InventoryConfiguration: Magento_InventoryConfiguration->Magento_Store->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_InventoryDistanceBasedSourceSelection: Magento_InventoryDistanceBasedSourceSelection->Magento_Config->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_InventoryDistanceBasedSourceSelectionApi: Magento_InventoryDistanceBasedSourceSelectionApi->Magento_InventorySourceSelectionApi->Magento_Sales->Magento_Reports->Magento_Downloadable
Magento_InventoryElasticsearch: Magento_InventoryElasticsearch->Magento_Store->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_InventoryExportStockApi: Magento_InventoryExportStockApi->Magento_InventorySalesApi->Magento_Sales->Magento_Reports->Magento_Downloadable
Magento_InventoryIndexer: Magento_InventoryIndexer->Magento_InventorySales->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_InventorySalesApi: Magento_InventorySalesApi->Magento_Sales->Magento_Reports->Magento_Downloadable
Magento_InventoryGroupedProduct: Magento_InventoryGroupedProduct->Magento_GroupedProduct->Magento_Msrp->Magento_Downloadable
Magento_InventoryGroupedProductAdminUi: Magento_InventoryGroupedProductAdminUi->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_InventoryGroupedProductIndexer: Magento_InventoryGroupedProductIndexer->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_InventoryImportExport: Magento_InventoryImportExport->Magento_Store->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_InventoryCache: Magento_InventoryCache->Magento_InventoryIndexer->Magento_InventorySales->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_InventoryLowQuantityNotification: Magento_InventoryLowQuantityNotification->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Reports: Magento_Reports->Magento_Downloadable
Magento_InventoryProductAlert: Magento_InventoryProductAlert->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_InventoryRequisitionList: Magento_InventoryRequisitionList->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_InventoryReservationCli: Magento_InventoryReservationCli->Magento_Sales->Magento_Reports->Magento_Downloadable
Magento_InventoryExportStock: Magento_InventoryExportStock->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_InventorySalesAdminUi: Magento_InventorySalesAdminUi->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_InventoryGraphQl: Magento_InventoryGraphQl->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_InventorySalesFrontendUi: Magento_InventorySalesFrontendUi->Magento_CatalogInventory->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_InventoryShipping: Magento_InventoryShipping->Magento_Sales->Magento_Reports->Magento_Downloadable
Magento_Shipping: Magento_Shipping->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_InventorySourceDeductionApi: Magento_InventorySourceDeductionApi->Magento_InventorySalesApi->Magento_Sales->Magento_Reports->Magento_Downloadable
Magento_InventorySourceSelection: Magento_InventorySourceSelection->Magento_InventorySourceSelectionApi->Magento_Sales->Magento_Reports->Magento_Downloadable
Magento_InventorySourceSelectionApi: Magento_InventorySourceSelectionApi->Magento_Sales->Magento_Reports->Magento_Downloadable
Magento_Invitation: Magento_Invitation->Magento_Reports->Magento_Downloadable
Magento_LayeredNavigation: Magento_LayeredNavigation->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_LayeredNavigationStaging: Magento_LayeredNavigationStaging->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Logging: Magento_Logging->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Marketplace: Magento_Marketplace->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_Weee: Magento_Weee->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_ConfigurableImportExport: Magento_ConfigurableImportExport->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_MsrpConfigurableProduct: Magento_MsrpConfigurableProduct->Magento_Msrp->Magento_Downloadable
Magento_MsrpGroupedProduct: Magento_MsrpGroupedProduct->Magento_Msrp->Magento_Downloadable
Magento_MultipleWishlist: Magento_MultipleWishlist->Magento_AdvancedCheckout->Magento_Downloadable
Magento_Multishipping: Magento_Multishipping->Magento_Checkout->Magento_Msrp->Magento_Downloadable
Magento_MysqlMq: Magento_MysqlMq->Magento_Store->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_NewRelicReporting: Magento_NewRelicReporting->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Newsletter: Magento_Newsletter->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_OfflinePayments: Magento_OfflinePayments->Magento_Checkout->Magento_Msrp->Magento_Downloadable
Magento_OfflineShipping: Magento_OfflineShipping->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_BannerCustomerSegment: Magento_BannerCustomerSegment->Magento_CustomerSegment->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_GiftRegistry: Magento_GiftRegistry->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_AdminGws: Magento_AdminGws->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_PaymentStaging: Magento_PaymentStaging->Magento_Quote->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Braintree: Magento_Braintree->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_PaypalCaptcha: Magento_PaypalCaptcha->Magento_Checkout->Magento_Msrp->Magento_Downloadable
Magento_PaypalGraphQl: Magento_PaypalGraphQl->Magento_Checkout->Magento_Msrp->Magento_Downloadable
MSP_ReCaptcha: MSP_ReCaptcha->Magento_Checkout->Magento_Msrp->Magento_Downloadable
Magento_Persistent: Magento_Persistent->Magento_Checkout->Magento_Msrp->Magento_Downloadable
Magento_PersistentHistory: Magento_PersistentHistory->Magento_Reports->Magento_Downloadable
Magento_PricePermissions: Magento_PricePermissions->Magento_Downloadable
Magento_CatalogStaging: Magento_CatalogStaging->Magento_Reports->Magento_Downloadable
Magento_ProductVideo: Magento_ProductVideo->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_ProductVideoStaging: Magento_ProductVideoStaging->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_PromotionPermissions: Magento_PromotionPermissions->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_QuoteAnalytics: Magento_QuoteAnalytics->Magento_Quote->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_ConfigurableProductGraphQl: Magento_ConfigurableProductGraphQl->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_RelatedProductGraphQl: Magento_RelatedProductGraphQl->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_ReleaseNotification: Magento_ReleaseNotification->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_Reminder: Magento_Reminder->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_InventoryLowQuantityNotificationAdminUi: Magento_InventoryLowQuantityNotificationAdminUi->Magento_Reports->Magento_Downloadable
Magento_Review: Magento_Review->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_ReviewAnalytics: Magento_ReviewAnalytics->Magento_Review->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_ReviewStaging: Magento_ReviewStaging->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Reward: Magento_Reward->Magento_Checkout->Magento_Msrp->Magento_Downloadable
Magento_AdvancedSalesRule: Magento_AdvancedSalesRule->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Rma: Magento_Rma->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Robots: Magento_Robots->Magento_Store->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Rss: Magento_Rss->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_SalesRuleStaging: Magento_SalesRuleStaging->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_SalesAnalytics: Magento_SalesAnalytics->Magento_Sales->Magento_Reports->Magento_Downloadable
Magento_Signifyd: Magento_Signifyd->Magento_Checkout->Magento_Msrp->Magento_Downloadable
Magento_SalesGraphQl: Magento_SalesGraphQl->Magento_Sales->Magento_Reports->Magento_Downloadable
Magento_SalesInventory: Magento_SalesInventory->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_CatalogRuleStaging: Magento_CatalogRuleStaging->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_RewardStaging: Magento_RewardStaging->Magento_SalesRule->Magento_Reports->Magento_Downloadable
Magento_GoogleTagManager: Magento_GoogleTagManager->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_ScalableCheckout: Magento_ScalableCheckout->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_ScalableInventory: Magento_ScalableInventory->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_ScheduledImportExport: Magento_ScheduledImportExport->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_DownloadableStaging: Magento_DownloadableStaging->Magento_Downloadable
Magento_SearchStaging: Magento_SearchStaging->Magento_Staging->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_CustomerAnalytics: Magento_CustomerAnalytics->Magento_Customer->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_SendFriend: Magento_SendFriend->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_SendFriendGraphQl: Magento_SendFriendGraphQl->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_InventoryShippingAdminUi: Magento_InventoryShippingAdminUi->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_SalesArchive: Magento_SalesArchive->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_Sitemap: Magento_Sitemap->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_CheckoutAddressSearchGiftRegistry: Magento_CheckoutAddressSearchGiftRegistry->Magento_Checkout->Magento_Msrp->Magento_Downloadable
Magento_UrlRewriteGraphQl: Magento_UrlRewriteGraphQl->Magento_UrlRewrite->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Support: Magento_Support->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Webapi: Magento_Webapi->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_Swatches: Magento_Swatches->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_SwatchesGraphQl: Magento_SwatchesGraphQl->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_CatalogInventoryStaging: Magento_CatalogInventoryStaging->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_GiftCardStaging: Magento_GiftCardStaging->Magento_GiftCard->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_TaxImportExport: Magento_TaxImportExport->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_AuthorizenetCardinal: Magento_AuthorizenetCardinal->Magento_Checkout->Magento_Msrp->Magento_Downloadable
Magento_Translation: Magento_Translation->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_CheckoutStaging: Magento_CheckoutStaging->Magento_Store->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Ups: Magento_Ups->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_CatalogUrlRewriteStaging: Magento_CatalogUrlRewriteStaging->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_CatalogUrlRewriteGraphQl: Magento_CatalogUrlRewriteGraphQl->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_AsynchronousOperations: Magento_AsynchronousOperations->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_Usps: Magento_Usps->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_ElasticsearchCatalogPermissions: Magento_ElasticsearchCatalogPermissions->Magento_Search->Magento_Reports->Magento_Downloadable
Magento_Cybersource: Magento_Cybersource->Magento_Sales->Magento_Reports->Magento_Downloadable
Magento_VaultGraphQl: Magento_VaultGraphQl->Magento_Vault->Magento_Checkout->Magento_Msrp->Magento_Downloadable
Magento_CmsStaging: Magento_CmsStaging->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_GoogleShoppingAds: Magento_GoogleShoppingAds->Magento_Downloadable
Magento_WebapiAsync: Magento_WebapiAsync->Magento_Webapi->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_WebapiSecurity: Magento_WebapiSecurity->Magento_Webapi->Magento_Backend->Magento_Reports->Magento_Downloadable
Magento_ConfigurableProductStaging: Magento_ConfigurableProductStaging->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_BundleStaging: Magento_BundleStaging->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_WeeeGraphQl: Magento_WeeeGraphQl->Magento_Tax->Magento_Reports->Magento_Downloadable
Magento_WeeeStaging: Magento_WeeeStaging->Magento_CatalogStaging->Magento_Reports->Magento_Downloadable
Magento_WishlistAnalytics: Magento_WishlistAnalytics->Magento_Wishlist->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_WishlistGraphQl: Magento_WishlistGraphQl->Magento_Store->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Magento_Worldpay: Magento_Worldpay->Magento_Checkout->Magento_Msrp->Magento_Downloadable
Akeneo_Connector: Akeneo_Connector->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Amazon_Core: Amazon_Core->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Amazon_Login: Amazon_Login->Magento_Checkout->Magento_Msrp->Magento_Downloadable
Amazon_Payment: Amazon_Payment->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Dotdigitalgroup_Email: Dotdigitalgroup_Email->Magento_Reports->Magento_Downloadable
Dotdigitalgroup_Chat: Dotdigitalgroup_Chat->Magento_Checkout->Magento_Msrp->Magento_Downloadable
Dotdigitalgroup_Enterprise: Dotdigitalgroup_Enterprise->Dotdigitalgroup_Email->Magento_Reports->Magento_Downloadable
Staempfli_CookieConsent: Staempfli_CookieConsent->Magento_Store->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Klarna_Core: Klarna_Core->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Klarna_Ordermanagement: Klarna_Ordermanagement->Magento_Sales->Magento_Reports->Magento_Downloadable
Klarna_Kp: Klarna_Kp->Magento_Checkout->Magento_Msrp->Magento_Downloadable
Magento_PaypalReCaptcha: Magento_PaypalReCaptcha->Magento_PaypalCaptcha->Magento_Checkout->Magento_Msrp->Magento_Downloadable
Vertex_Tax: Vertex_Tax->Magento_Catalog->Magento_Msrp->Magento_Downloadable
Vertex_AddressValidation: Vertex_AddressValidation->Magento_Checkout->Magento_Msrp->Magento_Downloadable

Why is Downloadable module a dependency of some many things?

gwharton commented 3 years ago

That one does look somewhat riddled, but I run with the following modules disabled through composer.json replace directive without any issues. There are more, like the Downloadable module, which I don't use that I would also like to remove, but it seems well embedded.

        "magento/module-tinymce-3": "*",
        "magento/module-sample-data": "*",
        "magento/module-signifyd": "*",
        "magento/module-release-notification": "*",
        "magento/module-new-relic-reporting": "*",
        "magento/module-marketplace": "*",
        "magento/module-persistent": "*",
        "magento/module-version": "*",

        "magento/module-related-product-graph-ql": "*",
        "magento/module-wishlist-graph-ql": "*",
        "magento/module-url-rewrite-graph-ql": "*",
        "magento/module-theme-graph-ql": "*",
        "magento/module-downloadable-graph-ql": "*",
        "magento/module-customer-downloadable-graph-ql": "*",
        "magento/module-cms-url-rewrite-graph-ql": "*",
        "magento/module-bundle-graph-ql": "*",
        "magento/module-catalog-cms-graph-ql": "*",
        "magento/module-catalog-customer-graph-ql": "*",
        "magento/module-catalog-graph-ql": "*",
        "magento/module-catalog-inventory-graph-ql": "*",
        "magento/module-catalog-url-rewrite-graph-ql": "*",
        "magento/module-checkout-agreements-graph-ql": "*",
        "magento/module-configurable-product-graph-ql": "*",
        "magento/module-cms-graph-ql": "*",
        "magento/module-directory-graph-ql": "*",
        "magento/module-eav-graph-ql": "*",
        "magento/module-grouped-product-graph-ql": "*",
        "magento/module-inventory-graph-ql": "*",
        "magento/module-sales-graph-ql": "*",
        "magento/module-store-graph-ql": "*",
        "magento/module-swatches-graph-ql": "*",
        "magento/module-tax-graph-ql": "*",
        "magento/module-weee-graph-ql": "*",

        "magento/module-fedex": "*",
        "magento/module-ups": "*",
        "magento/module-usps": "*",

        "magento/google-shopping-ads": "*",
        "magento/module-google-optimizer": "*",

        "magento/module-send-friend": "*",
        "magento/module-send-friend-graph-ql": "*",

        "magento/module-swagger": "*",
        "magento/module-swagger-webapi": "*",
        "magento/module-swagger-webapi-async": "*",

        "magento/language-de_de": "*",
        "magento/language-es_es": "*",
        "magento/language-fr_fr": "*",
        "magento/language-nl_nl": "*",
        "magento/language-pt_br": "*",
        "magento/language-zh_hans_cn": "*",

        "magento/module-adobe-ims": "*",
        "magento/module-adobe-ims-api": "*",
        "magento/module-adobe-stock-admin-ui": "*",
        "magento/module-adobe-stock-asset": "*",
        "magento/module-adobe-stock-asset-api": "*",
        "magento/module-adobe-stock-client": "*",
        "magento/module-adobe-stock-client-api": "*",
        "magento/module-adobe-stock-image": "*",
        "magento/module-adobe-stock-image-admin-ui": "*",
        "magento/module-adobe-stock-image-api": "*",

        "magento/module-login-as-customer": "*",
        "magento/module-login-as-customer-admin-ui": "*",
        "magento/module-login-as-customer-assistance": "*",
        "magento/module-login-as-customer-api": "*",
        "magento/module-login-as-customer-frontend-ui": "*",
        "magento/module-login-as-customer-log": "*",
        "magento/module-login-as-customer-page-cache": "*",
        "magento/module-login-as-customer-quote": "*",
        "magento/module-login-as-customer-sales": "*",

        "magento/module-admin-analytics": "*",
        "magento/module-analytics": "*",
        "magento/module-catalog-analytics": "*",
        "magento/module-customer-analytics": "*",
        "magento/module-quote-analytics": "*",
        "magento/module-review-analytics": "*",
        "magento/module-sales-analytics": "*",
        "magento/module-wishlist-analytics": "*",

        "magento/module-csp": "*",

        "magento/module-paypal-captcha": "*",
        "magento/module-paypal-recaptcha": "*",

        "magento/module-msrp-grouped-product": "*",
        "magento/module-msrp-configurable-product": "*",

        "magento/module-elasticsearch-6": "*",

        "amzn/login-with-amazon-module": "*",
        "amzn/amazon-pay-and-login-with-amazon-core-module": "*",
        "amzn/amazon-pay-module": "*",

        "dotmailer/dotmailer-magento2-extension": "*",
        "dotmailer/dotmailer-magento2-extension-chat": "*",

        "klarna/module-core": "*",
        "klarna/module-kp": "*",
        "klarna/module-ordermanagement": "*",
        "klarna/module-onsitemessaging": "*",
        "klarna/module-kp-graph-ql": "*",

        "temando/module-shipping-remover": "*",

        "vertex/module-tax": "*",
        "vertex/module-address-validation": "*",

        "yotpo/magento2-module-yotpo-reviews" : "*",

        "magento/theme-frontend-luma" : "*",
        "magento/theme-frontend-blank" : "*"
ericmorand commented 3 years ago

My concern is that since Downloadable is a dependency, we have no way to be sure that disabling the modules at composer level won't create unpredicatble issues. After all, if Downloadable is a dependency of another module, it must be for a good reason.

gwharton commented 3 years ago

Yes. But the dependency could be in part of the module that is not used. But yes, you've identified the big problem with modular development like this. Some can easily be solved, others are much more difficult.

ericmorand commented 3 years ago

Well, this is not inerent to modular development. This is inherent to a debatable quality check here. If the Download module is a dependency of Msrp, then it means that you can't have Msrp without Downloadables in real life. It is obviously not the case. That dependency is artificial and is coming from a loosy quality insurance and design decisions policies. I can't imagine a serious architect validate that Downloadable and Msrp may be dependent on each others.

hostep commented 3 years ago

Just FYI: https://github.com/avstudnitz/AvS_DisableModules can help in finding modules you can remove. After you removed the ones you don't need, you can run it again and it will potentially find some more. Rinse and repeat.

iphigenie commented 3 years ago

Actually, it's nearly impossible to remove modules that our customers don't require. Try for example to remove a module as simple as Magento_Downloadable:

Why is Downloadable module a dependency of some many things?

Every module that deals with products in any way - pricing, listing, orders etc. - is referring to the product types so it can call product-type-specific functionality, i.e. availability, price, relations etc.

Reports and Msrp seem to be the main culprits there, that makes a decoupling doable.

There are product-abstraction layers appearing that should allow decoupling so that you can always call the method and it will "broker" it to the right product type

There should be a difference between "use if enabled" and "needs it to function"

Jieiku commented 3 years ago

Yes. But the dependency could be in part of the module that is not used. But yes, you've identified the big problem with modular development like this. Some can easily be solved, others are much more difficult.

This is the reason that these modules should not be included by default, because its a slippery slope. If the goal were to always include the bare minimum required for a store front where users can register and view products then there would be so many less issues. Anyone able to install Magento can also add additional modules as they require them.

stale[bot] commented 3 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed after 14 days if no further activity occurs. Is this issue still relevant? If so, what is blocking it? Is there anything you can do to help move it forward? Thank you for your contributions!

t-heuser commented 3 years ago

This is definitly still an unresolved issue.

stale[bot] commented 3 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed after 14 days if no further activity occurs. Is this issue still relevant? If so, what is blocking it? Is there anything you can do to help move it forward? Thank you for your contributions!

t-heuser commented 3 years ago

Still unresolved.

m2-assistant[bot] commented 3 years ago

Hi @engcom-Alfa. Thank you for working on this issue. In order to make sure that issue has enough information and ready for development, please read and check the following instruction: :point_down:

m2-assistant[bot] commented 3 years ago

Hi @engcom-Echo. Thank you for working on this issue. In order to make sure that issue has enough information and ready for development, please read and check the following instruction: :point_down:

gabrieldagama commented 3 years ago

Hi @ericmorand, as currently described, this issue is too broad. Ideally, the reported issues aim to one specific problem that can be solved in one pull request, which is not the case described here.

We acknowledge the modularity problem from several core modules, but I would recommend you to create an issue specifically for a module like the Downloadable one.

Such issues will be triaged and prioritized as usual, and if a pull request is created it may be processed based on its priority.

Therefore, I will be closing this issue.

Hope that makes sense.