<?xml version="1.0" encoding="UTF-8"?>
<!--
 * Copyright 2001-2009 The Apache Software Foundation.
 *
 * 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.
 *
 */ -->
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN" "http://forrest.apache.org/dtd/document-v12.dtd">
<document>
  <properties>
    <title>The jUDDI project team</title>
  </properties>
  <body>
    
    <section name="Who We Are">
      <p>
        The jUDDI Project operates on a meritocracy: the more you do,
        the more responsibility you will obtain. This page lists all
        of the people who have gone the extra mile and are
        Committers. If you would like to get involved, the first step
        is to join the mailing lists.
      </p>
      <p>
        We ask that you please do not send us emails privately asking
        for support. We are non-paid volunteers who help out with the
        project and we do not necessarily have the time or energy to
        help people on an individual basis. Instead, we have setup
        mailing lists which often contain hundreds of individuals who
        will help answer detailed requests for help. The benefit of
        using mailing lists over private communication is that it is
        a shared resource where others can also learn from common
        mistakes and as a community we all grow together.
      </p>
    </section>

  </body>
</document>
