Background:
Recently, WordPress core developers have promoted the idea of "Core Plugins", which would be,
as defined by Jane Wells:
[Core] plugins would be plugins that are community developed (multiple developers, not just one person) and address the most popular functionality requests with superlative execution. These plugins would be GPL and live in the WordPress.org repo, and would be developed in close connection with WordPress core. There would be a very strong relationship between core and these plugins that ensured that a) the plugin code would be secure and the best possible example of coding standards, and b) that new versions of WordPress would be tested against these plugins prior to release to ensure compatibility. There would be a screen within the Plugins section of the WordPress admin to feature these canonical plugins as a kind of Editor’s Choice or Verified guarantee. These plugins would be a true extension of core WordPress in terms of compatibility, security and support.
This proposal provides an alternative suggestion for these proposed "Core Plugins", that would hopefully address some of the short-comings of that proposal.
Problems with "Core Plugins" Idea:
The implementation of Core Plugins is being pursued without the underlying concept having been completely fleshed out. This rushed implementation is creating confusion among users and third-party developers, and is leading to perhaps unfounded fear and criticism of the proposal.
This Core Components proposal is intended to define fully the underlying concept prior to embarking upon its implementation.
Core Plugins, as proposed, have
caused many concerns within the WordPress community. Some of
these concerns include:
- Discriminatory Labeling/Sanctioning of Core Plugins
- Disruption of the Plugin Free Market System
- Assuming/Forcing Plugin Developers to Collaborate
- Discouraging Third-Party Plugin Development
Core Components would seek to avoid these issues by focusing on major functionality only, and by designing the Core Components to be fully and inherently extensible, in order to ensure and to facilitate sufficient third-party developer space.
Differences between "Core Components" and "Core Plugins":
NatureCore Plugins, as proposed, would be plugins, and would exist as part of the current plugin system. Core Plugins would be available through extend/plugins, and would be managed through the Manage Plugins screen.
Core Components would be a separate classification of WordPress extension. Although Core Components would have a separate landing page (e.g. extend\components), Core Components would be generally available and managed through a new, Top-Level Menu Manage Components screen.
FunctionalityCore Plugins, as proposed, could address any functionality as determined by the core developers.
Core Components would be intended to address only major functionality (multi-user blogs, social-networking, forums, micro-blogging, podcasting, etc.).
ExtensibilityCore Plugins, as proposed, would merely be plugins. As such, they may or may not be developed such that they are themselves extensible.
Core Components would be desinged to be inherently extensible, and provided with APIs to facilitate third-party plugin development.
Purpose of Core Components:
Core Components would be community developed (multiple developers, not just one person) and address the most popular functionality requests with superlative execution. The purpose of Core Components would be to standardize and to consolidate such functionality to the benefit of both the users and the developers of that functionality.
These components would be GPL and live in their own WordPress.org repo, and would be developed in close connection with WordPress core. There would be a very strong relationship between core and these components that ensured that:
- the component code would be secure and the best possible example of coding standards, and
- new versions of WordPress would be tested against these components prior to release to ensure compatibility.
There would be a new Manage Components screen within the WordPress admin to feature these core components. These components would be a true extension of core WordPress in terms of compatibility, security and support.
Definition:
Core Components are defined as follows:
- Core Components would be managed from a distinct Admin UI page, such as Manage Components, that would provide for installation and configuration.
- Core Components would address extensible/niche functionality of core, functionality that extends core as a CMS, but that would not be useful to the majority of users. Examples of Core Components include, but are not limited to, Multi-Site component (MU), Social-Networking component (BuddyPress), Forum component (bbPress), Micro-Blogging component (TwitPress), Podcasting component (PodPress).
- Core Components would themselves be extensible, with well-documented APIs.
Name:
The name "Core Components" is desirable, in order to prevent the confusion and ambiguity created by the name "Core Plugins". Further, the concept of "components" facilitates the promotion of WordPress as a bona fide "Content-Management System" (CMS).
First, the name "core plugin" is internally contradictory, since plugins are by definition an extension, rather than a part, of core.
Second, the functionality and integration of Core Components rise above that of mere plugins. The intent of Core Components is to incorporate some form of significant functionality into WordPress, rather than merely extend existing functionality.
Third, Core Components facilitates the promotion of WordPress as a CMS, since the various cmoponents represent functionality that extends beyond a mere blog platform. WordPress components such as Multi-Site, Social Networking, Forum, Micro-Blogging, and Podcasting present ready-made marketing opportunities for WordPress.
Core Integration:
Core Components would be tightly integrated into core.
Core Components would be managed via a new, top-menu-level Admin screen, such as Manage Components. This screen would allow for enabling/disabling the Core Components, and would contain, either within the main screen or sub-menu screens, the configurable options for each Core Component.
Core Components would be subject to extensive compatibility, security, and usability testing, commensurate with such testing for WordPress core. e.g. Critical bugs against Core Components will be considered as "show-stoppers" for WordPress core version releases.
Extensibility:
Core Components would be fully extensible through the WordPress plugin system, including top quality documentation and APIs.
For some Core Components (e.g. Twitter or OpenID integration), the bulk of the component may itself be the API, to allow for more standardized plugins to be developed.
Plugins that extend Core Components would be hosted in the wordpress.org plugin repository (provided, of course, that such plugins meet the hosting requirements).
Collaboration:
Core Components would be GPL, and would exist in a separate SVN repository hosted by wordpress.org. Core Components would have a separate "landing page" on wordpress.org, such as Extend -> Components, in order to clarify further the distinction between components and plugins.
Core Component project teams would consist of multiple developers, and membership on Core Component project teams would be open-invitation to any developer who chooses to contribute.
(How will Core Component project teams and team leaders be chosen?) More:
(What else needs to be included?)