.. _rfc1:

====================================================
  MS RFC 1: Technical Steering Committee Guidelines
====================================================

:Date: 2005/06/24 
:Author: Frank Warmerdam, Independent
:Contact: warmerdam at pobox.com
:Status: Superseded by :ref:`rfc23`


Summary
========

This document describes how the MapServer Technical Steering Committee 
determines membership, and makes decisions on MapServer technical issues.

In brief the technical team votes on proposals on mapserver-dev.  Proposals 
are available for review for at least two days, and a single veto is 
sufficient delay progress though ultimately a majority of members can 
pass a proposal.


Detailed Process
================

1. Proposals are written up and submitted on the mapserver-dev mailing list for 
   discussion and voting, by any interested party, not just committee members.

2. Proposals need to be available for review for at least two 
   business days before a final decision can be made. 

3. Respondents may vote "+1" to indicate support for the proposal and 
   a willingness to support implementation. 

4. Respondents may vote "-1" to veto a proposal, but must provide clear 
   reasoning and alternate approaches to resolving the problem within 
   the two days.

5. A vote of -0 indicates mild disagreement, but has no effect.  
   A 0 indicates no opinion.  A +0 indicate mild support, but has no effect. 

6. Anyone may comment on proposals on the list, but only members of 
   the Technical Steering Committee's votes will be counted. 

7. A proposal will be accepted if it receives +2 (including the
   proposer) and no vetos (-1). 

8. If a proposal is vetoed, and it cannot be revised to satisfy 
   all parties, then it can be resubmitted for an override vote in 
   which a majority of all eligible voters indicating +1 is sufficient 
   to pass it.  Note that this is a majority of all committee members, 
   not just those who actively vote. 

9. Upon completion of discussion and voting the proposer should announce 
   whether they are proceeding (proposal accepted) or are withdrawing 
   their proposal (vetoed). 

10. The Chair gets a vote.

11. The Chair is responsible for keeping track of who is a member of the 
    Technical Steering Committee (perhaps as part of a TSC file in CVS). 

12. Addition and removal of members from the committee, as well as 
    selection of a Chair should be handled as a proposal to the committee. 

13. The Chair adjudicates in cases of disputes about voting.


When is Vote Required?
======================

* Anything that could cause backward compatibility issues. 
* Adding substantial amounts of new code. 
* Changing inter-subssytem APIs, or objects. 
* Issues of procedure.
* When releases should take place.
* Anything that might be controversial. 


Boundaries of "Technical"
=========================

* If it relates to changes in the code, it is technical.
* If it relates to how the developers cooperate, it is technical.
* If it relates to legal issues around code ownership it is technical.
* If it relates to documentation, or the web site it is not technical.  
* If it relates to events such as conferences, it is not technical.


Observations
==============

* The Chair is the ultimate adjudicator if things break down.
* The absolute majority rule can be used to override an obstructionist veto,
  but it is intended that in normal circumstances vetoers need to be 
  convinced to withdraw their veto.  We are trying to reach consensus.
* It is anticipated that separate "committees" will exist to 
  manage conferences, documentation and web sites. 


Bootstrapping
=============

Steve Lime is declared initial Chair of the Technical Steering Committee.

Steve Lime, Daniel Morissette, Frank Warmerdam, Sean Gilles, Assefa
Yewondwossen, Howard Butler and Perry Nacionales are declared to be the 
founding Technical Steering Committee.

 
