George Stephanis, who is a member of the Jetpack Pit Crew, published a post over the weekend that explains why Jetpack is not a collection of plugins. According to Stephanis, dependency management in WordPress sucks. In a nutshell, a dependency is when a library, framework, component, theme, or plugin requires the existence of another to function. He gives a practical example of dependencies that highlights how quickly things could get messy.
Now, if Likes, Single Sign On, After the Deadline, Post by Email and others were their own plugins, and connected to a separate Jetpack Core plugin, versioning gets tricky. It could work, in theory, if every plugin is kept up to date, always and forever. But the instant that the user is using, say, an outdated version of Subscriptions with an outdated Jetpack Core (which work perfectly together), and then installs the up-to-date WP.me Shortlinks plugin, things could break because WP.me Shortlinks expects a more up-to-date Jetpack Core.
So you go ahead and update Jetpack Core to current, but now Subscriptions — which used to work perfectly — now breaks because there was a method change in Jetpack Core, that is fixed in the up-to-date version of Subscriptions, but the user isn’t running the up-to-date version. Horrible UX.
He goes on to describe the installation flow for a plugin that needs Jetpack Core to function. A plugin that depends on Jetpack Core adds at least four additional steps to the installation flow.
It’s a good article that answers the technical side of a commonly asked question. It also gives insight to those who may be thinking of creating alternatives to Jetpack using a similar model. In part two of the series, Stephanis plans to write about the variety of other reasons Jetpack is not a collection of plugins.