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

:Date: 2005/06/24 
:Author: Frank Warmerdam, Independent
:Contact: warmerdam@pobox.com
:Last Edited: $Date: 2007-09-05 13:55:20 -0700 (Wed, 05 Sep 2007) $
:Status: Adopted


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 compatability 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 seperate "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.

 
