<?xml version="1.0"?> 
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You 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>JMeter on IRC</title>   
</properties> 
<body> 
<section name="JMeter on IRC"> 
<p>JMeter developers often hang out on IRC to chat about development issues.  
Users are also welcome to stop by and ask questions, offer feature suggestions, 
or just chit-chat.  </p>
<p>IRC Server: <strong>irc.us.freenode.net</strong><br/>
Room: <strong>#jmeter</strong></p>
</section> 
</body> 
</document>
