<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you 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. 
-->
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
   <!--
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
            This file is generated from XML source: DO NOT EDIT!
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
   -->
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
	<link rel="stylesheet" href="/style/compressed.css" type="text/css" media="screen, projection"/>
	<link rel="stylesheet" href="/style/style.css" type="text/css" media="screen, projection"/>
	<link rel="stylesheet" href="/style/attic.css" type="text/css" media="screen, projection"/>
	<!--[if IE]><link rel="stylesheet" href="/style/ie.css" type="text/css" media="screen, projection"/><![endif]-->
     <meta name="author" content="The Apache Software Foundation" /><meta name="email" content="general.AT.attic.apache.DOT.org" />
    <title>Moving a PMC to the Attic - Apache Attic</title>
  
 </head>
 <body id="sub">
	<div class="container">
	<hr class="space col"/>
	<div class="block">
		<div class="column span-24">
      <div id="header">
                          <!-- Add 'default' header section here. -->
                                <h1>Moving a PMC to the Attic</h1>
                         </div>
      </div>
	</div>
	<hr/>
	<div class="block content">
		<div class="column span-15 colborder">
                            
<div class="section-content">
<p>At some point a PMC may want to join the Attic. The following defines a process
     to move that PMC into the Attic and gently close it down. </p>
<ol>
    <li>A PMC decides to move to the Attic. 
      <ul>
        <li>Conduct a discussion on the public developer list whether to dissolve the PMC. Do not conduct it on the private PMC list.</li>
        <li>Consider an appeal to the user list for interested users to provide their interest in helping out more.</li>
        <li>Conduct a PMC vote on the public dev list. </li>
        <li>If the PMC votes to dissolve the PMC and move to the Attic, inform the board of the successful vote on board@ mailing list (linking or forwarding the 'successful' vote) and add a <a href="resolution.html">resolution</a> to dissolve the PMC to the next board meeting agenda. </li>
        <li>If the PMC can't get enough people to vote to dissolve the PMC (and there are not three -1 votes), then that is grounds for moving to the Attic. They should inform the board as above, noting that the vote failed to get enough votes. </li>
      </ul>
    </li>
    <li>If the board approves the resolution, open an <a href="https://issues.apache.org/jira/browse/ATTIC">Attic JIRA</a> item - 'Move ${project} to the Attic'.<br />
      The Attic PMC will step in and create a detailed issue description using <a href="https://svn.apache.org/viewvc/attic/site/retire.py?view=markup"><code>retire.py</code></a>, with other generated parts to move the project to the Attic.<br />
      Generated issue content typically contains following steps (see <a href="#howto">"How to"</a> below for a description of each step): 
      <ol type="1">
        <li><a href="#confirm-resolution">#</a> Confirm Board Resolution</li>
        <li><a href="#informing">#</a> Inform users of the move to the Attic</li>
        <li><a href="#atticsite">#</a> Create project page on Attic site: https://attic.apache.org/projects/$project.html</li>
        <li><a href="#doap">#</a>Update the project DOAP files (if any) or copy to <a href="https://svn.apache.org/repos/asf/comdev/projects.apache.org/trunk/data/projects-override/">projects-override</a></li>
        <li><a href="#infra">#</a>Get infra lock down project's resources</li>
        <li><a href="#announce">#</a> Announce on <a href="https://lists.apache.org/list?announce@apache.org:lte=1M:%22is%20now%20retired%22">announce at apache.org</a></li>
      </ol>
      The Attic PMC will then execute the steps: getting help from terminating project is welcome, particularly on informing users step or any other useful action at project's level like modifying DOAP.
    </li>
  </ol>
</div>
                 
<h4 id="General-pointers">
   How to: General pointers
</h4>
<div class="section-content">
<a name="howto" />
<p>The following are useful svn/https locations:</p>
<ul>
     <li>svn site <a href="https://svn.apache.org/viewvc/attic">https://svn.apache.org/repos/asf/attic</a>: sources in <code>xdocs</code>, generated html in <code>docs</code><br />
     git mirror <a href="https://github.com/apache/attic-site">https://github.com/apache/attic-site</a></li>
     <li>site <a href="https://attic.apache.org">https://attic.apache.org</a></li>
     <li>internals: <a href="https://ci2.apache.org/#/builders/16">Buildbot job</a> to build from source and commit generated html
         (see <a href="https://svn.apache.org/repos/infra/infrastructure/buildbot/aegis/buildmaster/master1/projects/attic-site.conf">attic-site.conf</a>),
         <a href="https://github.com/apache/infrastructure-p6/blob/production/modules/svnwcsub/files/svnwcsub.conf">svnwcsub configuration</a> to update generated html from svn to webserver</li>
     <li>jira <a href="https://issues.apache.org/jira/browse/ATTIC">https://issues.apache.org/jira/browse/ATTIC</a></li>
    </ul>
</div>
                 
<h4 id="confirm-resolution">
   How to: 1. Confirm Board Resolution
</h4>
<div class="section-content">
<p>Check previous Board minutes to confirm the "terminate" resolution passed. The minutes are available from the following sources:</p>
<ul>
  <li>The private <a href="https://lists.apache.org/list.html?committers@apache.org:lte=2M:ASF%20Board%20Meeting">committers@a.o list</a> (requires login)</li>
  <li>Previously published <a href="https://www.apache.org/foundation/board/calendar.html">Board meeting minutes</a></li>
  <li>Whimsy has a public list of <a href="https://whimsy.apache.org/board/minutes/">Board Minutes by topic</a></li>
  </ul>
<p>However note that the most recent meeting minutes are not published until the following meeting at the earliest</p>
<p>Check that Secretary removed the PMC from <a href="https://svn.apache.org/repos/private/committers/board/committee-info.txt">https://svn.apache.org/repos/private/committers/board/committee-info.txt</a></p>
<p>This automatically removes VP entry on <a href="https://www.apache.org/foundation/leadership">https://www.apache.org/foundation/leadership</a> and project from <a href="https://www.apache.org/#projects-list">https://www.apache.org/#projects-list</a> navigation</p>
</div>
                 
<h4 id="informing">
   How to: 2. Inform users of the move to the Attic
</h4>
<div class="section-content">
<p>Let the users know that the PMC is moving into the Attic. Use the following template: </p>
<pre>
A heads up for the ${project} user community that the ${project} PMC has 
been 'moved to the Attic'. This means that the ${project} developers (more 
formally its Project Management Committee) have voted to retire ${project} 
and move the responsibility for its oversight over to the Attic project.

Loosely speaking this means that the projects resources will be moved to a 
read-only state.

You can read more about the Apache Attic and the process of moving to the 
Attic at https://attic.apache.org.

You can follow this process in JIRA: 
 
  https://issues.apache.org/jira/browse/ATTIC-${#}

Thanks,

${Name} on behalf of ${project} + the Attic.
  </pre>
<p>Remember to <a href="https://www.apache.org/foundation/mailinglists.html">subscribe</a> to the user list: use <a href="https://whimsy.apache.org/committers/subscribe">Whimsy Mailing List Self-subscription</a> to avoid moderation (if the project hasn't been removed yet).</p>
<p>Also bear in mind that the user mailing list may already know and you can skip this stage, or you can get help from project having asked to move to the Attic. Make sure you read that thread if it does exist. </p>
</div>
                 
<h4 id="atticsite">
   How to: 3. Create project page on Attic site: https://attic.apache.org/projects/${project}.html
</h4>
<div class="section-content">
<p>The Attic website is built using Anakia. Anakia is an old site technology built on top of Apache Velocity. 
     You can get the source for the site from Subversion: </p>
<pre>svn co https://svn.apache.org/repos/asf/attic/site</pre>
<p>You can generate the required changes using the Python3 <a href="https://svn.apache.org/viewvc/attic/site/retire.py?view=markup"><code>retire.py</code></a> script as follows:</p>
<pre>./retire.py id1 [id2...]</pre>
<p>This should generate the following files for each ID, as well as updating xdocs/stylesheets/project.xml:</p>
<ul>
    <li><code>ID.jira.tmp</code></li>
    <li><code>xdocs/flagged/ID</code></li>
    <li><code>xdocs/projects/ID.xml</code></li>
    <li><code>cwiki_retired/WIKI_ID.txt</code></li>
  </ul>
<p>N.B. The code does not (yet) allow for wiki aliases. For example, eagle used EAG as the wiki name.</p>
<p>Review the changes in <code>xdocs/</code>, then commit to svn.</p>
<p>The <code>ID.jira.tmp</code> file is text that can be copy-pasted into a JIRA description. It should be deleted after use, and not committed to SVN</p>
<p>The <a href="https://ci2.apache.org/#/builders/16">buildbot job</a> will build the site and commit the result which will be published soon after</p>
</div>
                 
<h4 id="doap">
   How to: 4. Update the project DOAP file (if any): https://projects.apache.org/project.html?${project}
</h4>
<div class="section-content">
<p>The files referenced are in <a href="https://svn.apache.org/repos/asf/comdev/projects.apache.org/trunk">https://svn.apache.org/repos/asf/comdev/projects.apache.org/trunk</a>, which every Apache committer can update.</p>
<p>Identify whether the project has a DOAP file (see the &lt;comdev repo&gt;/projects.apache.org/data/projects.xml file if update the rdf file with PMC to the Attic and add a category of <em>retired</em>: </p>
<pre>pmc change:    &lt;asfext:pmc rdf:resource="http://attic.apache.org" /&gt;
new category:  &lt;category rdf:resource="http://projects.apache.org/category/retired" /&gt;</pre>
<p>You can use <code>script/project2attic.py</code> to prepare the update that you'll just need to review and commit</p>
</div>
                 
<h4 id="infra">
   How to: 5. Get infra lock down project's resources
</h4>
<div class="section-content">
<p>Open an <a href="https://issues.apache.org/jira/browse/INFRA">Infrastructure JIRA</a> issue identifying the resources that need turning off/making read only.</p>
<p>The content of the issue can be generated using <a href="https://svn.apache.org/viewvc/attic/site/infrajiratext.py?view=markup"><code>infrajiratext.py</code></a>.</p>
<p>Typically, it contains steps like following, that need to be tweaked based on assets of the retired project:
    <ul>
      <li>Make source control Git|Svn read-only</li>
      <li>Remove files from <a href="https://dist.apache.org/repos/dist/">dist.apache.org/repos/dist/[release|dev]</a></li>
      <li>Closing down of dev@, commits@ and private@ etc. <a href="https://lists.apache.org/">mailing lists</a></li>
      <li>Close down the user mailing list (unless still active - in which case propose a moderator to Infra)</li>
      <li>Make JIRA|Bugzilla read-only</li>
      <li>Make the wiki (if any) read-only</li>
      <li>Delete LDAP group(s)</li>
      <li>Turn off automated builds</li>
    </ul>
  </p>
</div>
                 
<h4 id="announce">
   How to: 6. Announce on announce@apache.org
</h4>
<div class="section-content">
<p>Announce that the project <a href="https://lists.apache.org/list?announce@apache.org:lte=1M:%22is%20now%20retired%22">is now retired</a>. Consider the following template.</p>
<p>Sometimes, the user mailing list will not be shut down.
  If that is the case, it should be mentioned in the announce.
  e.g. add "The user mailing list remains open." after "change in url." below.
  </p>
<pre>
Announcing that the Apache ${project} committers have voted to retire
the project due to inactivity. ${project} was {boilerplate}.

Retiring a project is not as simple as turning everything off, as
existing users need to both know that the project is retiring and
retain access to the necessary information for their own development
efforts.

You can read more about ${project}'s retirement at:

   https://attic.apache.org/projects/${project}.html

The project's resources will continue to be available in a read-only state -
website, mailing lists, wikis, git, downloads and bug tracker with no 
change in url.

Providing process and solutions to make it clear when an Apache
project has reached its end of life is the role of the Apache Attic,
and you can read more about that at:

   https://attic.apache.org/

Thanks,

${NAME}
on behalf of the Apache Attic and the now retired Apache ${project} project
  </pre>
<p>It's important to include the boilerplate from the project's site so people 
     know what we're talking about. </p>
</div>
         </div>
    <div class="column span-8 last">
      <div class="block">
        <div class="nav column span-11">
          <div>
               <div class="menuheader">The Apache Attic</div>
  <ul>
          <li><a href="/">Home</a></li> 
          <li><a href="https://projects.apache.org/committee.html?attic">The team</a></li> 
          <li><a href="/process.html">Process</a></li> 
          <li><a href="/tracking.html">Process tracking</a></li> 
          <li><a href="https://whimsy.apache.org/board/minutes/Attic.html">Board Minutes</a></li> 
          <li><a href="https://www.apache.org/licenses/">License</a></li> 
          <li><a href="https://www.apache.org/security/">Security</a></li> 
          <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a></li> 
      </ul>
      <div class="menuheader">Related Apache Links</div>
  <ul>
          <li><a href="https://www.apache.org/">Foundation</a></li> 
          <li><a href="https://www.apache.org/foundation/sponsorship.html">Donate</a></li> 
          <li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li> 
          <li><a href="https://incubator.apache.org/">Incubator</a></li> 
          <li><a href="https://apachecon.com/">ApacheCon</a></li> 
      </ul>
          </div>
        </div>
        <div class="nav column prepend-1 span-12 last">
               <h6>Projects in the Attic</h6>
  <ul>
          <li><a href="/projects/abdera.html">Abdera</a></li> 
          <li><a href="/projects/ace.html">ACE</a></li> 
          <li><a href="/projects/any23.html">Any23</a></li> 
          <li><a href="/projects/apex.html">Apex</a></li> 
          <li><a href="/projects/archiva.html">Archiva</a></li> 
          <li><a href="/projects/aurora.html">Aurora</a></li> 
          <li><a href="/projects/avalon.html">Avalon</a></li> 
          <li><a href="/projects/axkit.html">AxKit</a></li> 
          <li><a href="/projects/axis-sandesha-c.html">Axis Sandesha2/C</a></li> 
          <li><a href="/projects/axis-savan-c.html">Axis Savan/C</a></li> 
          <li><a href="/projects/axis-savan-java.html">Axis Savan/Java</a></li> 
          <li><a href="/projects/bahir.html">Bahir</a></li> 
          <li><a href="/projects/beehive.html">Beehive</a></li> 
          <li><a href="/projects/bloodhound.html">Bloodhound</a></li> 
          <li><a href="/projects/buildr.html">Buildr</a></li> 
          <li><a href="/projects/chemistry.html">Chemistry</a></li> 
          <li><a href="/projects/chukwa.html">Chukwa</a></li> 
          <li><a href="/projects/clerezza.html">Clerezza</a></li> 
          <li><a href="/projects/click.html">Click</a></li> 
          <li><a href="/projects/climate.html">Open Climate Workbench</a></li> 
          <li><a href="/projects/crimson.html">Crimson</a></li> 
          <li><a href="/projects/continuum.html">Continuum</a></li> 
          <li><a href="/projects/crunch.html">Crunch</a></li> 
          <li><a href="/projects/deltacloud.html">Deltacloud</a></li> 
          <li><a href="/projects/devicemap.html">DeviceMap</a></li> 
          <li><a href="/projects/directmemory.html">DirectMemory</a></li> 
          <li><a href="/projects/drat.html">DRAT</a></li> 
          <li><a href="/projects/eagle.html">Eagle</a></li> 
          <li><a href="/projects/esme.html">ESME</a></li> 
          <li><a href="/projects/etch.html">Etch</a></li> 
          <li><a href="/projects/excalibur.html">Excalibur</a></li> 
          <li><a href="/projects/falcon.html">Falcon</a></li> 
          <li><a href="/projects/forrest.html">Forrest</a></li> 
          <li><a href="/projects/giraph.html">Giraph</a></li> 
          <li><a href="/projects/hama.html">Hama</a></li> 
          <li><a href="/projects/harmony.html">Harmony</a></li> 
          <li><a href="/projects/hawq.html">HAWQ</a></li> 
          <li><a href="/projects/hivemind.html">HiveMind</a></li> 
          <li><a href="/projects/ibatis.html">iBATIS</a></li> 
          <li><a href="/projects/jakarta.html">Jakarta</a></li> 
          <li><a href="/projects/jakarta-cactus.html">Jakarta Cactus</a></li> 
          <li><a href="/projects/jakarta-ecs.html">Jakarta ECS</a></li> 
          <li><a href="/projects/jakarta-oro.html">Jakarta ORO</a></li> 
          <li><a href="/projects/jakarta-regexp.html">Jakarta Regexp</a></li> 
          <li><a href="/projects/jakarta-slide.html">Jakarta Slide</a></li> 
          <li><a href="/projects/jakarta-taglibs.html">Jakarta Taglibs</a></li> 
          <li><a href="/projects/joshua.html">Joshua</a></li> 
          <li><a href="/projects/juddi.html">jUDDI</a></li> 
          <li><a href="/projects/labs.html">Labs</a></li> 
          <li><a href="/projects/lens.html">Lens</a></li> 
          <li><a href="/projects/lenya.html">Lenya</a></li> 
          <li><a href="/projects/lucy.html">Lucy</a></li> 
          <li><a href="/projects/marmotta.html">Marmotta</a></li> 
          <li><a href="/projects/metamodel.html">MetaModel</a></li> 
          <li><a href="/projects/metron.html">Metron</a></li> 
          <li><a href="/projects/mrunit.html">MRUnit</a></li> 
          <li><a href="/projects/mxnet.html">MXNet</a></li> 
          <li><a href="/projects/ode.html">ODE</a></li> 
          <li><a href="/projects/ojb.html">ObJectRelationalBridge (OJB)</a></li> 
          <li><a href="/projects/oltu.html">Oltu (previously Amber)</a></li> 
          <li><a href="/projects/onami.html">Onami</a></li> 
          <li><a href="/projects/oodt.html">OODT</a></li> 
          <li><a href="/projects/polygene.html">Polygene</a></li> 
          <li><a href="/projects/predictionio.html">PredictionIO</a></li> 
          <li><a href="/projects/quetzalcoatl.html">Quetzalcoatl</a></li> 
          <li><a href="/projects/rave.html">Rave</a></li> 
          <li><a href="/projects/reef.html">REEF</a></li> 
          <li><a href="/projects/river.html">River</a></li> 
          <li><a href="/projects/sentry.html">Sentry</a></li> 
          <li><a href="/projects/shale.html">Shale</a></li> 
          <li><a href="/projects/shindig.html">Shindig</a></li> 
          <li><a href="/projects/sqoop.html">Sqoop</a></li> 
          <li><a href="/projects/stdcxx.html">Standard C++ Library (STDCXX)</a></li> 
          <li><a href="/projects/stanbol.html">Stanbol</a></li> 
          <li><a href="/projects/stratos.html">Stratos</a></li> 
          <li><a href="/projects/submarine.html">Submarine</a></li> 
          <li><a href="/projects/tajo.html">Tajo</a></li> 
          <li><a href="/projects/tiles.html">Tiles</a></li> 
          <li><a href="/projects/trafodion.html">Trafodion</a></li> 
          <li><a href="/projects/tuscany.html">Tuscany</a></li> 
          <li><a href="/projects/twill.html">Twill</a></li> 
          <li><a href="/projects/usergrid.html">Usergrid</a></li> 
          <li><a href="/projects/vxquery.html">VXQuery</a></li> 
          <li><a href="/projects/whirr.html">Whirr</a></li> 
          <li><a href="/projects/wink.html">Wink</a></li> 
          <li><a href="/projects/wookie.html">Wookie</a></li> 
          <li><a href="/projects/muse.html">WS Muse</a></li> 
          <li><a href="/projects/xang.html">Xang</a></li> 
          <li><a href="/projects/xindice.html">Xindice</a></li> 
          <li><a href="/projects/xmlbeans.html">XMLBeans</a>
        ; revived June 2018
      </li> 
          <li><a href="/projects/xml.html">XML</a></li> 
      </ul>
        </div>
      </div>
    </div>
    <div class="column span-24 footer">
      <hr/>
        <p>Copyright &#169; 2009-2023 The Apache Software Foundation, Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.<br/>
        Apache and the Apache feather logo are trademarks of The Apache Software Foundation.</p>
      </div>
    </div>
  </div>
</body>
</html>

