<?xml version="1.0"?>
<!--
  Copyright 2002,2004 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.
-->

<document>

  <properties>
    <title>IRC</title>
    <author email="jstrachan@apache.org">James Strachan</author>
  </properties>

  <body>

    <section name="IRC">

      <p>
      The CodeHaus runs an IRC server to support the interactive
      efforts of project members.
      </p>

      <p>
      To access the IRC server, point an appropriate IRC client at:
      </p>

      <blockquote>
            server: <b>irc.codehaus.org</b>
              port: <b>6667</b>
      </blockquote>

      <p>
      If you have <a href="http://www.mozilla.org/">Mozilla</a> installed you can point your browser at
      <a href="irc://irc.codehaus.org:6667/#jelly">#jelly</a>.
      </p>

      <p>
      You may find folks hanging out in either <code><b>#jelly</b></code>
      or <code><b>#maven</b></code>.
      </p>

      <!-- PL: sadly disabled archives...
      <subsection name="Logs">
        <p>
        Many of the channels hosted by The Werken Company are archived
        and available through the 
        <a href="http://irc.werken.com/channels/">Werken IRC Archives</a>.
        </p>

        <p>
        <a href="http://irc.werken.com/channels/jelly/">#jelly archive</a>
        </p>
      </subsection>
      -->

    </section>
    
  </body>
</document>
