<h2>Mail Guideline</h2>
<p>Every volunteer project obtains its strength from the people involved in it. 
Mailing lists provide a simple and effective communication mechanism. </p>
<p>You are welcome to join any of our mailing lists (or all of them if you 
wish). You can choose to lurk, or actively participate. It's up to you.</p>
<p><b>Before you join these lists, you should make sure that you read and follow 
the information below... </b></p>
<p>We ask that you do your best to respect the charter of the appropriate 
mailing list. There are generally two types of lists that you can join. </p>
<ul>
	<li>The &quot;User&quot; list is where you should send questions and comments about 
	configuration, setup, usage and other &quot;user&quot; types of questions.</li>
	<li>The &quot;Developer&quot; list is where you should should send questions and 
	comments about the actual software source code and general &quot;development&quot; 
	types of questions. </li>
</ul>
<p><b>Summary : Prefix each message with &quot;[Axis2]&quot;</b> <br>
You may already know that Axis 1.x is still going parallel with Axis 2.0. So for 
everyone's convenience prefix the subject of <b>every mail </b>about Axis 2.0 
with [Axis2].</p>
<p><b>Summary: Join the lists that are appropriate for your discussion.</b> <br>
Please make sure that you are joining the list that is appropriate for the topic 
or product that you would like to discuss.</p>
<p><b>Summary: Do not abuse resources in order to get help.</b> <br>
Asking your configuration or user type of question on the developers list 
because you think that you will get help more quickly by going directly to the 
developers instead of to the user base is not very nice. Chances are that doing 
this will actually prevent people from answering your question because it is 
clear that you are trying to abuse resources.</p>
<p><b>Summary: Do your best to ensure that you are not sending HTML or &quot;Stylelized&quot; 
email to the list.</b> <br>
If you are using Outlook or Outlook Express or Eudora, chances are that you are 
sending HTML email by default. There is usually a setting that will allow you to 
send &quot;Plain Text&quot; email. If you are using Microsoft products to send email, 
there are several bugs in the software that prevent you from turning off the 
sending of HTML email. Please read this page as well...</p>
<p><b>Summary: Watch where you are sending email.</b> <br>
The majority of our mailing lists have set the Reply-To to go back to the list. 
That means that when you Reply to a message, it will go to the list and not to 
the original author directly. The reason is because it helps facilitate 
discussion on the list for everyone to benefit from. Be careful of this as 
sometimes you may intend to reply to a message directly to someone instead of 
the entire list.</p>
<p><b>Summary: Do not crosspost messages.</b> <br>
In other words, pick a mailing list and send your messages to that mailing list 
only. Do not send your messages to multiple mailing lists. The reason is that 
people may be subscribed to one list and not to the other. Therefore, some 
people may only see half of the conversation. </p>
<p>&nbsp;</p>
