Stop Putting Garbage 3rd Party Extensions In The Magento Core
I was reading through the release notes of Magento 2.3.4 and noticed this tidbit:
Live Chat powered by dotdigital enables merchants to increase conversion rates, and keep customers coming back with real-time engagement. All Magento 2.3.x merchants (both Magento Open Source and Magento Commerce) can receive a free live chat agent without the need for a full dotdigital Engagement Cloud license.
I immediately thought back to my terrible experience with Klarna more than a year ago when they included it in the core and I mistakenly thought, “Since this is in the core. It must be a quality integration.”
For that client, we wasted countless billable hours debugging and fixing Klarna’s own code and attempting to interact with their support team that was clear were not Magento developers. And ultimately the extension performed so poorly that we ended up going with another solution for a financing payment option: Bread (which hasn’t been perfect, but their support has been good).
Why Would They Do This?
Early in the Magento 2 days at Imagine, it was clear that Magento, Inc. was looking for any kind of new sources of revenue that they could find. In the way that PC manufacturers around the Windows Vista days found a new source of revenue in installing a bunch of 3rd party apps on their systems, Magento has monetized the core itself, even Magento Open Source, by selling their soul with a composer.json entry.
Why It's Terrible
First off, it's bad because being included in the core is no longer a stamp of quality. These modules are just not being tested to rigorous standards.
Secondly, it’s an issue for security because they’ve been including these modules in security releases too. Although I will give them credit for creating the new -p1 patch releases so that for example merchants on 2.3.3 who want to stay secure, can install 2.3.3-p1 without getting functional updates and unnecessary modules like dotdigital.
Thirdly, it’s bad for performance. There are posts like this that describe what all the unnecessary modules are (Some of them aren’t 3rd party modules, but that’s a discussion for another day).
Let’s discuss this on twitter: