blob: 03cd88f19e6bdbc5c6b29f0c7332f1ff9c03b087 [file] [log] [blame]
[[pmi]]
== Project Management Infrastructure (PMI)
The {forgeName} Project Management Infrastructure (PMI) consolidates
project management activities into a single consistent location and experience.
Project Management Infrastructure themes:
_Improved consistency._ Configuration/data-driven project web presence,
direct linkage between releases, reviews, and plans. Information--including
basic project metadata, project plans, and release review information--is
captured and retained in a consistent (and easily leveraged) data-based
format (rather than in multiple documents in arbitrary formats).
_All-in-one-place._ Project leads and committers are able to edit
information in place on the project information pages. Text/information in
one place with links in another is eliminated where possible. Comments and
discussion related to reviews, elections, etc. are connected directly
to the item being discussed.
_Get started faster._ By default, projects are provided with a data-driven
website that includes consistent links to project releases, reviews,
downloads, etc. Projects can opt to override the default and provide
their own customized web presence. Setting up a project presence is a
matter of configuration, not PHP programming against proprietary APIs.
[[pmi-metadata]]
=== Project Metadata
Project committers and project leads are responsible for maintaining
their project's metadata. This information is an important part of being
an Eclipse project.
Project metadata is:
1. Relatively static structural information such as the project
description and scope, the names of the project's mailing lists and
newsgroups, the bugzilla products, source code repositories, etc.
2. Historical information such as previous release downloads, release
review slides and IP logs, etc.
3. Status and future looking information such as the project and
milestone plans, the features scheduled for the current release, release
dates, etc.
PMC members, and the Eclipse Foundation staff also have the ability to
make changes on behalf of a project.
[[pmi-viewing]]
=== Viewing
The complete listing of all current
{projectListUrl}[{forgeName} projects] provides
one starting point for viewing projects. From here, you can link
directly to a project information page. Navigation options are provided
to help you move from one project to another.
[[pmi-commands-and-tools]]
=== Commands and Tools
Committers have access to several committer-specific
commands and tools. The selection of commands available are context sensitive; only those
commands that make sense for the logged in user are shown.
[[pmi-editing]]
=== Editing Project Metadata
Committers have the ability to edit the information managed and displayed
on the project page.
There are several sections on the page. When you switch the page into
"Edit" mode, you will be provided with lots of help regarding the
contents of each of the fields (note that the help text is currently
rendered below the fields).
Some of the fields are described below.
[[pmi-description-and-scope]]
==== Description and Scope
The 'description' should start with a concise paragraph of three to five
sentences (e.g. suitable for display with a collection of other projects).
A single paragraph is generally appropriate for the
description.
If more than a single simple paragraph is required to fully
describe the project, it is possible to set a summary. The summary
can be specified by toggling the "show summary" link to explicitly
set a summary apart from the more detailed description, or the top
part of the description can be designated as the summary by inserting
a 'Teaser Break' into the content.
NOTE: providing a summary gives you control over what will get rendered.
In views where we are displaying more than one project, the system
will artifically cut short descriptions that are too long, potentially
resulting in a description that looks _weird_.
The 'scope' is intended for a more select audience; generally speaking the
scope should be taken directly from the project's proposal. Project
members have the ability to change the text of the project scope, but
should be careful to avoid changing the meaning. If the meaning of the
scope needs to change, the Project Management Committee (PMC) must be
contacted regarding a potential restructuring review.
[[pmi-downloads]]
==== Downloads
You can provide download information for your project in the "Downloads"
section.
The first entry is the main "Downloads URL". This manifests as a "Big
Button" Download on the project page. What you put here is left to the
project team to decide. It can be a link to a webpage, a direct link to
a file download, or whatever else makes sense the project and community.
Optional text can be included along with the "Big
Button" Download, as well as links to zero or more Eclipse Marketplace,
update/p2 sites, or other downloads. Each of the links can have an
optional title (the link itself will be displayed if no title is
provided). Note that no validation is done on the links to ensure that
they are meaningful.
ifeval::["{forgeName}"=="Eclipse"]
_The Eclipse Foundation strongly encourages all projects to create an
maintain and http://marketplace.eclipse.org[Eclipse Marketplace]
presence._
endif::[]
[[source-repositories]]
==== Source Repositories
The project can specify zero or more *source repositories*. These are
displayed in the "Contribute to this Project" section.
The values specified are used to query against a database of known
existing source repositories (this database is updated nightly by a
discovery process). Those repositories that are found in the database
will be displayed with enhanced information (including links to
repository mirrors, Gerrit, etc.). All values that you provide will be
displayed, whether they point to real repositories or not. If the
database does not contain your repository, the PMI will assume that the
value is correct and try its best to display the information.
Repositories should be specified using the file system path, e.g.
'/gitroot/egit/egit.git'. The name that is displayed for the repository
is extracted from the last segment of the URL.
If a description file exists in the Git repository, the contents are
automatically displayed under the repository name.
NOTE: The script that we us to identify repositories attempts to identify a
corresponding Gerrit interface for the repository. If it exists, the
Gerrit URL is used in place of the Git one. If the repository uses
Gerrit, then only the Gerrit URL is displayed. Otherwise, the "git://"
and "ssh://" URLs are displayed.
You can use wildcards to match multiple repositories, e.g.
'/gitroot/virgo/*'. Note that wildcards only work for repositories that
exist on {forgeName} infrastructure (they do not work for GitHub-based
repositories, for example).
Repositories are displayed in the order they are specified. The order
can be changed in the edit screen by dragging entries into the desired
order. All wildcard matches are sorted alphabetically by name at the end
of the list.
A *Contribution Message* should be provided; it is displayed at
the top of the section and is one of the primary means by which the
community will find the project code. Arbitrary text is permitted, but we recommend
that you limit this content to a single paragraph with a few sentences
that include a link to more information.
[[pmi-company-logos]]
==== Company Logos
Company logos automatically appear on the _Who's Involved_ page under the following
conditions:
* The company must be a http://eclipse.org/membership/[member] of the
Eclipse Foundation;
* The company needs to have their logo uploaded to the Portal;
* At least one committer has to be listed as an employee of the company
in question;
* The committer must be on this project; and
* The committer must be active (must have made at least one commit in
the last three months)
If all of those conditions are met and the logo is still not showing up,
then it's possible that the project meta-data doesn't have the correct
source code repository information specified.
[[pmi-build-technology]]
==== Build Technology
A project can specify a section of text, links, and a selection of the
build technologies employed. Specifying this information makes it easier
for members from the community to understand your build. Links can
include direct links into the Hudson builds, pages of build
instructions, or whatever else the project team feels will help the community build
the project.
[[pmi-technology-types]]
==== Technology Types
A project can specify the types of technology produced by the project.
This is specified in rather broad terms like "OSGi" or "Runtime". The
various technology types manifest as checkboxes on the edit screen. This
information is used to form connections between projects to assist in
navigation and discovery.
Clicking on one of the technology types, will take the user
to a page that lists the projects that produce that particular type of
technology, along with the summary of their description and project logo
(if specified).
[[pmi-releases]]
=== Releases and Reviews
Projects, Releases, and Reviews are presented as separate records. Each
project record, obviously, represents information about a project. A
project may have multiple releases; information about the release is
represented in a release record. The release record also contains some
review information. This information is included here, because all
releases do not necessarily have a review (a project can opt to provide
some _review_ type information as part of a release record. A project
can have multiple review records; as release reviews are the most common
form of review, most review records will be joined to a release record.
[graphviz, releases-and-reviews, svg]
.The relationship between proposals, projects, releases, and reviews.
----
digraph {
bgcolor=transparent
graph [ranksep="0.25", nodesep="0.25"];
node [shape=box;style=filled;fillcolor=white;fontsize=12];
review[label="Review"]
proposal[label="Proposal"]
project[label="Project"]
release[label="Release"]
proposal -> review[label="1:1"]
project -> review[label="1:*"]
release -> review[label="1:0..1"]
proposal -> project[label="1:1"]
project -> release[label="1:*"]
{rank=same;proposal project release}
}
----
A review record, however, does not require a release association. Some
reviews are associated with proposals. Other have no other association
(e.g. termination reviews).
Each <<release,release>> has its own record in the database. Records are connected
directly to a single specific project; a subset of release records
associated with a project are displayed on the project page. An existing
release can be edited in much the same was as a project. Any logged in
project member (committer or project lead) can click the "Edit" button.
NOTE: Create a single record for each release. *Do not create release records
for milestones.* Enter milestone information in the 'Plan' information
for your release.
A project lead or committer can create a new release by clicking "Create a new release" under
"Committer Commands" on the project page. This opens a dialog requesting
that a date and name be specified. Both of these values can be changed later.
[[pmi-release-description]]
==== Description
Describe the release in the 'Description' section. The description
should generally be a concise paragraph describing the focus of the
release (e.g. adding certain functionality, fixing bugs, etc.) in a form
that is appropriate in an aggregation (e.g. a page that displays the
release information for all projects participating in an instance of the
Simultaneous release). The description should provide enough information
to encourage the reader to click the "find out more" link.
[[pmi-release-issues]]
==== Issues
The release record will automatically generate a list of targeted bugs.
To populate this list:
* Ensure that the Bugzilla Product is set the to correct value in the
project metadata;
* Set the "target milestones" in Bugzilla need to match the name of your
release.
NOTE: The matching algorithm tries to be as forgiving as possible, a release
named "3.5", "3.5.0", or "3.5 (Luna)" will--for example--match target
milestones named "3.5" ,"3.5M1", "3.5 M2", "3.5.0M3", etc., but will
not match "3.5.1".
The bugs for all projects participating in the release will be included.
Bugs are grouped by Bugzilla product and component.
[[pmi-release-plan]]
==== Plan
<<releases-plan,Project plan>> information belongs in the 'Plan' section. This
information *should* generally be provided early in the development
cycle to allow the various communities the ability to understand and
participate in the release. It is expected that the plan will evolve
over time. Note that all projects are required to provide a plan for
each major and minor release (plans are not required service releases).
[[pmi-release-milestones]]
==== Milestones
Enter the name, date, and optional description for each milestone
expected with the release.
Projects should generally include more than one milestone build with each
release. To include additional milestones, click the "Add another item"
button. Note that milestones can be dragged into the desired order. To
remove a milestone, leave the "Name" field blank.
[[pmi-review]]
==== Review
The release has a <<release-review,'Review'>> section that can be used to provide
information for the associated review. If you provide information here,
the release record itself can be used as review documentation; no
further documentation is required.
Each section on the review page includes a little help to describe the
sort of information that you should provide.
All major and minor releases require a review. Service releases (i.e.
bug fix releases that do not change public APIs or add new
functionality) do not require a review.
If a release requires a review, you can schedule one by clicking the
"Schedule a review" button. The drop-down list above the button contains
several options for review dates. Pick the one that works best for you.
Note that this form will not appear if a review has already been
scheduled, or the release date does not provide enough time to run a
review (or is in the past). If a review has been scheduled, a link to
the review will appear.
You can edit the review document, but there's really not all that much
to edit. A free-form text field is available and can be used if there is
some need to provide review-specific information that might not
otherwise be an appropriate part of the release record. _This field is
intended for other types of review (e.g. restructuring or termination
reviews); we decided to leave it available for release reviews for cases
in which it might be useful rather than suppress it._
When the review is displayed, it automatically includes the _review_
information from the release record; it shows the review-specific
information at the top of the page, and includes the _review_
information from the release as the rest of the page contents.
This can make things a bit confusing when you want to make changes to
the metadata for a review record. Just remember that the _review_
information for a release is stored in the release record.
ifeval::["{forgeName}"=="Eclipse"]
[[pmi-joining-a-simultaneous-release]]
=== Joining a Simultaneous Release
Projects cannot add themselves directly to a simultaneous release (e.g.
https://projects.eclipse.org/releases/luna[Luna]), but rather must be
added by the EMO (there is a
https://bugs.eclipse.org/bugs/show_bug.cgi?id=402190[bug open] to extend
this ability to planning council members).
To join a simultaneous release:
1. Create a release record:
* Provide at least a description of the release initially;
* The date of the release should generally match that of the
simultaneous release;
2. Send a note to the planning council (Eclipse projects normally do
this via the
https://dev.eclipse.org/mailman/listinfo/cross-project-issues-dev[cross-project-issues-dev
mailing list]) with the name of your project, the name/number of the
release, and the offset.
The offset indicates how many days after the start of the aggregation
process for a milestone your project's bits will be available. If your
project's bits depend on a +pass:[+1]+ project's bits then your project is
probably a +pass:[+2]+ project, for example.
endif::[]