:linkattrs:
= Gerrit Code Review - Core Plugins

[[definition]]
== What are core plugins?

Core plugins are plugins that are packaged within the Gerrit war file. This
means during the link:pgm-init.html[Gerrit initialization] they can be easily
installed without downloading any additional files.

To make working with core plugins easy, they are linked as
link:https://gerrit.googlesource.com/gerrit/+/refs/heads/master/.gitmodules[Git
submodules,role=external,window=_blank] in the `gerrit` repository. E.g. this means they can be easily
link:dev-readme.html#clone[cloned] together with Gerrit.

All core plugins are developed and maintained by the
link:dev-roles.html#maintainers[Gerrit maintainers] and everyone can
link:dev-contributing.html[contribute] to them.

Adding a new core plugin feature that is large or complex requires a
link:dev-design-doc.html[design doc] (also see
link:dev-contributing.html#design-driven-contribution-process[design-driven
contribution process]). The link:dev-processes.html#steering-committee[
engineering steering committee (ESC)] is the authority that approves the design
docs. The ESC is also in charge of adding and removing core plugins.

Non-Gerrit maintainers cannot have link:access-control.html#category_owner[
Owner] permissions for core plugins.

[[criteria]]
=== Criteria for Core Plugins

To be considered as a core plugin, a plugin must fulfill the following
criteria:

1. License:
+
The plugin code is available under the
link:http://www.apache.org/licenses/LICENSE-2.0[Apache License Version 2.0,role=external,window=_blank].

2. Hosting:
+
The plugin development is hosted on the
link:https://gerrit-review.googlesource.com[gerrit-review,role=external,window=_blank] Gerrit Server.

3. Scope:
+
The plugin functionality is Gerrit-related, has a clear scope and does not
conflict with other core plugins or existing and planned Gerrit core features.

4. Relevance:
+
The plugin functionality is relevant to a majority of the Gerrit community:
+
--
** An out of the box Gerrit installation would seem like it is missing
   something if the plugin is not installed.
** It's expected that most sites would use the plugin.
** Multiple parties (different organizations/companies) already use the plugin
   and agree that it should be offered as core plugin.
** If the same or similar functionality is provided by multiple plugins,
   the plugin is the clear recommended solution by the community.
--
+
Whether a plugin is relevant to a majority of the Gerrit community must be
discussed on a case-by-case basis. In case of doubt, it's up to the
link:dev-processes.html#steering-committee[engineering steering committee] to
make a decision.

5. Code Quality:
+
The plugin code is mature and has a good test coverage. Maintaining the plugin
code creates only little overhead for the Gerrit maintainers.

6. Documentation:
+
The plugin functionality is fully documented.

7. Ownership:
+
Existing plugin owners which are not Gerrit maintainers must agree to give up
their ownership. If the current plugin owners disagree, forking the plugin is
possible, but this should happen only in exceptional cases.

[[list]]
== Which core plugins exist?

See link:config-plugins.html#core-plugins[here].

GERRIT
------
Part of link:index.html[Gerrit Code Review]

SEARCHBOX
---------
