<project>
  <name>Eclipse Communication Framework Project</name>
  <short-name>ECF</short-name>

  <bugs url="http://www.eclipse.org/ecf/bugs.php">
  </bugs>
  <bugzilla url="/ecf/bugs.php">
    <product name="ECF"/>
  </bugzilla>
  
  <integrators url="http://www.eclipse.org/ecf/integrators.php"/>

  <!--
     - Committers and non-committer Contributors are the raison d'etre of 
     - an Eclipse project, thus each project should list and acknowledge these
     - developers. Some of the Committers are 'special' in the sense that
     - they are the project leaders.  The <team> element contains the 
     - URL of the project's pages listing these important people.
    -->
  <team url="/ecf/team.php"/>
  
  <cvs repository="/cvsroot/rt/">
    <module path="org.eclipse.ecf/applications" /> 
    <module path="org.eclipse.ecf/builds" /> 
    <module path="org.eclipse.ecf/examples" /> 
    <module path="org.eclipse.ecf/features" /> 
    <module path="org.eclipse.ecf/incubation" /> 
    <module path="org.eclipse.ecf/plugins" /> 
    <module path="org.eclipse.ecf/providers" /> 
    <module path="org.eclipse.ecf/tests" /> 
    <module path="org.eclipse.ecf/tutorials" /> 
  </cvs>

  <!--
     - The description of an Eclipse project shows up in many places: the
     - project's home page, perhaps the /projects/ page listing all the
     - top-level projects, in the Roadmap, and so on. Some of the descriptions
     - are separate HTML files (such as those described in 
     - http://phoenix.eclipse.org/projects/dev_process/project-status-infrastructure.php).
     - It would be nice 
     - This <description> element contains two additional descriptions.
     -    1. The optional <description url="..."> points to a web page with a larger
     -       description of the entire project. 
     -    2. The required <description paragraph-url="..."> points to a file
     -       containing a couple of simple HTML paragraphs describing the project. 
     -       This file is often stored in the /project-info/ directory, thus the
     -       url would be something like "/tptp/project-info/description.html".
    -->
    
    <description url="http://www.eclipse.org/ecf/about.php"
     paragraph-url="/ecf/project-info/project-page-paragraph.html"/>

  <!--
     - In addition to the description, each Eclipse project is also required to
     - provide an up-to-date status summary. "Up to date" means revised at least
     - quarterly. 
     - The required <summary paragraph-url="..."> points to a file
     - containing a number of simple HTML paragraphs with an executive summary
     - of the project status.
     - This file is often stored in the /project-info/ directory, thus the
     - url would be something like "/rt/project-info/executive-summary.html".
    -->

  <summary paragraph-url="/ecf/project-info/executive-summary.html"/>

  <!--
     - It is important to help new users get started with an Eclipse project
     - because most Eclipse projects are solving some difficult technical
     - problem and thus are somewhat complex. The <getting-started> element
     - points to a web page on the project's site that describes how to
     - get started using and extending the project's tools and frameworks.
    -->
    
  <getting-started url="/ecf/dev_resources.php"/>
  
  <!--
     - It is also important to help new contributors get started with an Eclipse project.
     - Most Eclipse projects have interesting/complex development environment
     - setups or to-do lists. The <contributing> element
     - points to a web page on the project's site that describes how to
     - get started developing on, and contributing to, the project.
    -->
    
  <contributing url="/ecf/dev_resources.php"/>
  
  <!--
     - Each Eclipse project is required to maintain a current Project IP Log.
     - See http://www.eclipse.org/projects/dev_process/project-log.php
     - The <ip-log> contains the URL of that log.  If the project has
     - other legal information as well, it can use the <legal> element
     - instead and then include the IP Log information on the Legal web page.
    -->
  <legal url="/ecf/legal.php"/>
 <ip-log url="/ecf/legal.php"/>
    

  <!--
     - Each Eclipse project has one or more mailing lists.
     - Some projects also have a separate web page describing these lists
     - while others rely on the main Eclipse mailing lists page.
     - 
     - <mailing-lists url="..."> <list name="..."/> ... </mailing-lists>
     - The url is optional; if absent, the url will default to the Eclipse
     - mailing lists page. Multiple <lists>s are allowed.
     -
     - Note that currently mailing lists must be redundantly listed in
     - the separate project-info/maillist file as well.
    -->
    
  <mailing-lists url="/ecf/maillist.php">
    <list name="ecf-dev"/>
  </mailing-lists>
  
  <newsgroups url="http://www.eclipse.org/ecf/newsgroups.php">
    <newsgroup name="eclipse.rt.ecf"/>
  </newsgroups>
  
  <!--
     - The dashboard attempts to measure the liveness of a project in many
     - ways including the traffic on the mailing lists and newsgroups. There
     - are other places where significant project-related traffic can occur
     - including blogs and articles. When listed here, the dashboard incorporates
     - them into the liveness measure (or rather, "will incorporate").
    -->
  <articles>
    <article url="http://www-128.ibm.com/developerworks/opensource/library/os-ecl-commfwk/"/>
    <article url="http://www.eclipsezone.com/articles/ecf-interview/"/>
    <article url="http://eclipseecf.blogspot.com/"/>
  </articles>
  
  <blogs>
    <blog rss="http://eclipseecf.blogspot.com/atom.xml"/>
  </blogs>
  
  <!--
     - Each Eclipse project needs to have a plan both for its internal purposes
     - (to guide development and resource allocation) and for the larger Eclipse
     - community and ecosystem to understand what will be delivered and when
     - it will be delivered.
    -->
    
  <project-plan url="/ecf/plan.php"/>

  <api-plan url="/ecf/apiPlan.php"/>

  
  <!--
     - Each Eclipse project creates (optional) nightly builds and milestone builds,
     - but the important builds of a project are the releases. This section of the
     - status file records the completed (past) and scheduled (future) releases of
     - the project. 
     - The status, name, and date are required attributes. The download is optional
     - and only valid for completed releases; the plan is optional and valid for
     - all releases.  The three valid types of releases are, in order of ascending 
     - uncertainity: "completed", "scheduled", and "tentative".  Dates can be
     - specified as particular day DD/MM/YYYY (e.g., 22/03/2005) or a particular
     - month MM/YYYY (e.g., 10/2005), or a quarter NQYYYY (e.g., 3Q2005). Obviously
     - completed releases should include the exact day the release was completed.
     -
     - In the following example, we have three completed, two scheduled, and one 
     - tentative release.
    -->
  <releases>
    <release  
       status="scheduled"
       name="2.0.0"
       date="06/25/2008"
       download="/ecf/downloads.php" />
    <release  
       status="scheduled"
       name="2.0.0M5"
       date="2/11/2008"
       download="/ecf/downloads.php" />
    <release  
       status="completed"
       name="2.0.0M4"
       date="12/15/2007"
       download="/ecf/downloads.php" />
    <release  
       status="completed"
       name="1.2.0"
       date="10/19/2007"
       download="/ecf/downloads.php" />
    <release  
       status="completed"
       name="1.0.0"
       date="6/29/2007"
       download="/ecf/downloads.php" />
  </releases>
</project>
