<?xml version="1.0" encoding="UTF-8"?>
<!--
   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 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">

	<properties>
		<title>Mailing Lists</title>
		<author email="sebawagner@apache.org">
			Sebastian Wagner
		</author>
	</properties>

	<body>
		<section name="Apache OpenMeetings Mailing Lists">

			<p>
				There are currently 4 publicly available mailing lists for OpenMeetings.
			</p>
			<p>
				The commits list is for notification of commits to the OpenMeetings
				repository.
			</p>
			<p>
				The dev list is for internal discussion among the OpenMeetings
				developers. It is
				open to the public if you are interested in seeing how the sausage is
				made.
			</p>
			<p>
				<b>Note: </b>If your email bounces with status messages like "Delivery Status Notification" it is 
				likely that you have send your mail as HTML mail. Apache does not like sending HTML emails, see:
				<br/> 
				<a href="http://www.apache.org/dev/contrib-email-tips.html#do-not-send-html-mail" target="_BLANK" rel="nofollow">http://www.apache.org/dev/contrib-email-tips.html#do-not-send-html-mail</a>
			</p>
			
			<p>
				You can search the entire mailing list very easy by using markmail.com, by using the term 
				"openmeetings" plus your search. Try yourself: <br/>
				<a href="http://markmail.org/search/?q=openmeetings" target="_BLANK" rel="nofollow">http://markmail.org/search/?q=openmeetings</a>
			</p>

			<table>
				<tr>
					<td>
						<p>
							<strong>User List</strong>
							:
							<a href="mailto:user@openmeetings.apache.org">
								user@openmeetings.apache.org
							</a>
						</p>
					</td>
					<td>
						<p>
							<a class="external" rel="nofollow"
								href="mailto:user-subscribe@openmeetings.apache.org">
								Subscribe
							</a>
						</p>
					</td>
					<td>
						<p>
							<a class="external" rel="nofollow"
								href="mailto:user-unsubscribe@openmeetings.apache.org">
								Unsubscribe
							</a>
						</p>
					</td>
					<td>
						<p>
							<a
								href="http://mail-archives.apache.org/mod_mbox/openmeetings-user/">
								Archive
							</a>
						</p>
					</td>
				</tr>
				<tr>
					<td>
						<p>
							<strong>Spanish User List</strong>
							:
							<a href="mailto:user-espanol@openmeetings.apache.org">
								user-espanol@openmeetings.apache.org
							</a>
						</p>
					</td>
					<td>
						<p>
							<a class="external" rel="nofollow"
								href="mailto:user-espanol-subscribe@openmeetings.apache.org">
								Subscribe
							</a>
						</p>
					</td>
					<td>
						<p>
							<a class="external" rel="nofollow"
								href="mailto:user-espanol-unsubscribe@openmeetings.apache.org">
								Unsubscribe
							</a>
						</p>
					</td>
					<td>
						<p>
							<a
								href="http://mail-archives.apache.org/mod_mbox/openmeetings-user-espanol/">
								Archive
							</a>
						</p>
					</td>
				</tr>
				<tr>
					<td>
						<p>
							<strong>Commits List</strong>
							:
							<a href="mailto:commits@openmeetings.apache.org">
								commits@openmeetings.apache.org
							</a>
						</p>
					</td>
					<td>
						<p>
							<a class="external" rel="nofollow"
								href="mailto:commits-subscribe@openmeetings.apache.org">
								Subscribe
							</a>
						</p>
					</td>
					<td>
						<p>
							<a class="external" rel="nofollow"
								href="mailto:commits-unsubscribe@openmeetings.apache.org">
								Unsubscribe
							</a>
						</p>
					</td>
					<td>
						<p>
							<a
								href="http://mail-archives.apache.org/mod_mbox/openmeetings-commits/">
								Archive
							</a>
						</p>
					</td>
				</tr>
				<tr>
					<td>
						<p>
							<strong>Developer List</strong>
							:
							<a href="mailto:dev@openmeetings.apache.org">
								dev@openmeetings.apache.org
							</a>
						</p>
					</td>
					<td>
						<p>
							<a class="external" rel="nofollow"
								href="mailto:dev-subscribe@openmeetings.apache.org">
								Subscribe
							</a>
						</p>
					</td>
					<td>
						<p>
							<a class="external" rel="nofollow"
								href="mailto:dev-unsubscribe@openmeetings.apache.org">
								Unsubscribe
							</a>
						</p>
					</td>
					<td>
						<p>
							<a
								href="http://mail-archives.apache.org/mod_mbox/openmeetings-dev">
								Archive
							</a>
						</p>
					</td>
				</tr>
			</table>

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

