//Licensed under the Apache License, Version 2.0 (the "License");
//you may not use this file except in compliance with the License.
//You may obtain a copy of the License at
//
//http://www.apache.org/licenses/LICENSE-2.0
//
//Unless required by applicable law or agreed to in writing, software
//distributed under the License is distributed on an "AS IS" BASIS,
//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//See the License for the specific language governing permissions and
//limitations under the License.
= Transferring Resources out of the Incubator
Apache Incubator PMC
2002-10-16
:jbake-type: guide
:jbake-status: published
:idprefix:
:toc:
:imagesdir: ../images/
:icons: font 

== Life After Graduation

Once a project has been established by the board, or a sub-project consumed by a TLP, this guide should be followed to migrate
the podling from the Incubator to their own TLP.

=== Handover

This is the transfer of virtual resources from the care of
the link:/guides/roles_and_responsibilities.html#incubator_project_management_committee_ipmc[IPMC]
to the care of either the new or existing top
level project taking charge of the graduating community.

==== Graduating as Subproject

This is the simple case. The
link:/guides/roles_and_responsibilities.html#chair_of_the_incubator_pmc[IPMC Chair] and the Chair of the project accepting the
graduating community organize the handover between
themselves.

You do need to update the Incubator's podlings file. See link:/cookbook/podlings-xml.html#graduated_into_the_pmc_that_sponsored_it[Podling XML Examples].

==== Graduating as New Top Level Project

===== Board resolution and roster appointment

When graduating to a new project, the process is more
complex. Creating a new project requires a
link:graduation.html#preparing_a_charter[resolution]
to be passed by the link:http://www.apache.org/foundation/board/[Board].
You may look at older minutes from the link:http://www.apache.org/foundation/board/calendar.html[calendar] and check for "Establish ProjectName".
link:https://whimsy.apache.org/board/agenda/[Board Agenda Tool] has an "Add Item" button that can be used to add the Graduation Resolution to the Board Agenda.

The Board votes on graduation resolutions at their monthly meeting.  If the Board votes to pass the resolution, that then appoints
the listed Project Management Committee including:

- a Chair for the new project aka PMC Chair. The Chair will also be appointed an
  link:http://www.apache.org/foundation/[Officer]
  of the Apache Software Foundation. This allows them
access to official resources of the foundation as well
as granting power to act on behalf of Apache within the scope of their project's activities.

WARNING: Usually once this happens, the secretary will
inform the new chair.
Occasionally, this will be missed: if more than 72
hours has passed since the Board meeting, it may be
worth pinging the board to request confirmation.

- the initial members of Project Management Committee aka PMC members.

===== PMC Chair Todo List

Once appointed, the new Chair needs to:

- Subscribe to the *board* mailing list
- Ensure that they have been added to
link:https://people.apache.org/phonebook.html?service=pmc-chairs[the PMC chairs group (pmc-chairs) in LDAP].

WARNING: The ASF Secretary should do this without any action on the part
of the new chair. As with above, if it has not happened within
72 hours of the resolution passing, contact the secretary to remind them.

- Check out the link:https://svn.apache.org/repos/private/foundation/officers[*foundation/officers*] folder from the private repository.
Users with member or pmc-chairs karma can do this.
- Add yourself to the #foundation/officers/affiliations.txt# file with the appropriate information.
- Add your details to the foundation web site Officer list at link:http://www.apache.org/foundation/index.html[http://www.apache.org/foundation/index.html]
(in SVN at link:https://svn.apache.org/repos/asf/infrastructure/site/trunk/content/foundation/[https://svn.apache.org/repos/asf/infrastructure/site/trunk/content/foundation/])
- Review appropriate documentation:
** link:http://www.apache.org/dev/pmc.html#chair[PMC Chair Duties]
** PMC link:http://www.apache.org/dev/#pmc[documentation]
** Incubator link:http://incubator.apache.org/guides/chair.html[Chair guide]
** Reporting link:http://www.apache.org/foundation/board/calendar.html[calendar]
- Understand the reporting schedule with the link:/guides/roles_and_responsibilities.html#board[Board]. For
the first three months after graduation this will
be monthly. After that, the project should slot
into a quarterly reporting schedule. Now is a good time to remove
the project from the Incubator reporting schedule by updating the podlings.xml file. See link:/cookbook/podlings-xml.html#graduated_as_an_apache_tlp[Podling XML Examples].
- Ensure the PMC is added to the committee-info.txt file at https://svn.apache.org/repos/private/committers/board/committee-info.txt
There are 3 sections which need to be updated; see instructions in the file, otherwise update it in link:https://whimsy.apache.org/roster/[Whimsy's Roster Tool]
You may need to get a member to help with this, such as your mentors.
- They should then be able to start assembling the new
link:http://www.apache.org/foundation/how-it-works.html#structure[PMC].
The starting membership is listed in the
link:graduation.html#preparing_a_charter[resolution]. However, the Chair of the new project
needs to ensure that private list is created and the
membership subscribed.

===== PMC Todo List

Once appointed, Members of the new PMC need to:

- Subscribe to the private mailing list for the project, if they aren't already subscribed from their PPMC membership.
- Review appropriate documentation:
** Apache link:http://www.apache.org/dev/pmc.html[PMC Guide]
** Related link:http://www.apache.org/dev/#pmc[documentation]

Once all this is in place, resources can start to be
handed over to the new project. See next section.

IMPORTANT: Please continue to hang around the Incubator and help
new podlings have an easier time than you did!

=== First Steps Outside the Incubator

Graduation is the first step in what is hopefully a long road.
There are some issues which incubation may not cover.

==== Transferring Resources

IMPORTANT: Starting the following steps require that the resolution was passed by the board.

When a project graduates, then the infrastructure
resources (mailing lists, websites, source, etc.) need to
be transferred from the Incubator to a project's new home.

Although the below checklist is still generally useful, *the infrastructure process has been streamlined*, see
link:http://www.apache.org/dev/infra-contact#requesting-graduation[requesting graduation].
You might also want to check JIRA checklist tickets for projects that graduated in the last month or two.  This process is known as "TLP Parent Request"

Checklist:

- Update the Incubator status records
** Like the rest of incubation, graduation is a process. Updating your status records as you progress will enable others to assist.
** Update the podling status page.  All sections should now be filled in
including *EXIT*. Take some
time to read carefully since this page
forms the final public record for
graduation.

- Source
** SVN repositories will be moved from the incubator to other locations, if you need the move done please raise an infra ticket after the TLP Parent Request.
** Post an announcement to the development list telling everyone that the repository is about to be moved
** Post an announcement containing instructions for developers describing how to #svn switch# their workspaces
** Update site, jenkins, wikis, *pom.xml* and other resources to point to the new repository location.

- Websites
** Since podlings receive standard domains, no changes are required
** Once graduated, your website will automatically redirect to remove the *incubator* subdomain
** If you have any fully qualified links to your *podling.incubator.apache.org* on your website change them

- Mailing lists
** Mailing lists no longer need to get moved, since podlings are given standard domains.
** If you use *podling.incubator.apache.org* format email addresses, please start using *podling.apache.org*
** When using Maven: update *pom.xml* for
the new mailing list address(es). Also update any
documents on your website that show how to
subscribe to the lists and/or find archives.
** Check project-private mailing list membership.  Mentors should be allowed to remain if they wish to do so.
The subscriber list should otherwise match that on the resolution. See link:http://www.apache.org/dev/committers.html#mail-moderate[this] and the link:http://www.ezmlm.org/[EZMLM] "Moderator's and Administrator's Manual".
** Update mail addresses including:
*** confluence commit messages (see adminstration documentation)
*** issue tracking messages (see administration documentation)
*** The chair should have karma to perform these tasks.
** Double-check that all of your lists have sufficient active link:http://www.apache.org/dev/committers.html#mailing-list-moderators[moderators].

- Issue Tracking
** Ask infra to move the podling to its own top level category in JIRA, if using JIRA

- Distribution mirrors
** Dist area (dist.apache.org) *release/${project}* and *dev/${project}* folders can be created by PMC members. 
*** Do not forget to copy KEYS file from *release/incubator/${project}* location.
*** You have two major options then:
**** you can *keep* incubating released artifacts at *release/incubator/${project}* and remove artifacts once your TLP project does their first release.
+
NOTE: File a JIRA under your newly JIRA *${project}* space to remind to remove */dist/incubator/${project}/* after the first release in */dist/${project}/*
+
**** you can *move* the last incubating released artifacts to your *release/${project}*, taking care that incubating stay in path (you will need to
change website and mail for the new location)

=== Final Revision of Podling Incubation Records

When a project has finished its graduation steps, then the incubator resources
need to be updated to indicate that the project is no
longer incubating. Here are a few of the items that need
to be done:

- Update the svn *incubator/trunk/content/projects/${project}.xml* file to show the project's status.

- Update the podling summary metadata file, *incubator/trunk/content/podlings.xml* svn file.  See the content/podlings.dtd and follow 
link:/cookbook/podlings-xml.html#graduated_as_an_apache_tlp[Podling XML Examples]:
** Change the podling status to "graduated"; (The only acceptable status are "current", "graduated", and "retired". "graduating" will make your podling disappear from several incubator pages.)
** add the "enddate" attribute to document when the project graduated;
** add the "resolution" element (see other project examples);
** remove the "reporting" element.

- After your project has finished reporting to the Incubator, then remove the "reporting" element from that *podlings.xml* file.
- Ensure that other svn resources for your project have moved to your new home.
- Review this whole graduation guide.

*NOTE: Please edit this guide to add missing steps and clarifications.*

=== New Responsibilities
==== Oversight

During the stay in the Incubator, the
link:/guides/roles_and_responsibilities.html#incubator_project_management_committee_ipmc[Incubator PMC (IPMC)]
was responsible to the
link:/guides/roles_and_responsibilities.html#the_board[Board]
for oversight. A graduated project must now take
responsibility for its own oversight.

A project needs to ensure that its code base is
clean from an IP perspective. New committers need to
recruited, educated and mentored. Quality releases
need to be cut. Community spirit needs to be maintained
and conflicts resolved positively. Board reports need
to be accurate and prompt.

Help is still available but the
appropriate bodies (infrastructure, community, legal
and so on) should now be approached directly.

==== Security

Each project needs to be able to manage security issues
discovered in their code. By their nature, these issues
need to be dealt with in private. These issues may either
be dealt with on a separate security list or on the
private list. Which list is suitable for security issues
should be noted.

Volunteers need to be found from the
link:http://www.apache.org/foundation/how-it-works.html#structure[PMC]
to work with the link:https://www.apache.org/security/committers.html[Apache security team] and act as
first contacts on security matters. The new project
should make contact with the team soon after graduation
and not wait for the first issue to be raised.

Projects should adopt a positive attitude towards
security issues. It is easy to gain a poor reputation
by mishandling of these issues. There are many people
at Apache with considerable experience in this area
so ask first.

==== Stay In Touch

Passing through the incubation process gives a very
valuable perspective. Please help to improve the process
by guiding new podlings and by developing improved policy
and documentation on the link:lists.html#general+at+incubator.apache.org[general] list.
