<div class="row">

<div class="col-lg-12">

<div class="page-header">

<h1 id="indicators">Apache CloudStack: Mailing Lists</h1>

</div>

</div>

</div>

<p>If you're interested in learning more or participating in the Apache CloudStack project, the mailing lists are the best way to do that. While the project has several communications channels, the mailing lists are the most active and the official channels for making decisions about the project itself. <em><a href="http://community.apache.org/newbiefaq.html#NewbieFAQ-IsthereaCodeofConductforApacheprojects?&quot;">"If it didn't happen on a mailing list, it didn't happen."</a></em></p>

<p>The project currently has several lists:</p>

<ul>
  <li><a href="https://lists.apache.org/list.html?announce@cloudstack.apache.org">announce@</a>: Project release, security and other announcements. This is a very low volume list.</li>
  <li><a href="https://lists.apache.org/list.html?users@cloudstack.apache.org">users@</a>: This list is for users of CloudStack to seek and provide support. This is a moderately high volume list.</li>
  <li><a href="https://lists.apache.org/list.html?dev@cloudstack.apache.org">dev@</a>: Where discussions about development and the project itself happen. This is a high volume list.</li>
  <li><a href="https://lists.apache.org/list.html?commits@cloudstack.apache.org">commits@</a>: This list is for commits to the CloudStack git repository. It's a high volume list with automated messages, probably of limited interest to anyone who is not actively developing Apache CloudStack.</li>
  <li><a href="https://lists.apache.org/list.html?issues@cloudstack.apache.org">issues@</a>: Notifications from CloudStack's Jira project. This is a high volume list.</li>
  <li><a href="https://lists.apache.org/list.html?marketing@cloudstack.apache.org">marketing@</a>: Discussions about marketing CloudStack.</li>
</ul>

<p>The preferred language to use on the lists above is English. To support the global nature of the CloudStack user community, we also have the following regionally specific user lists:</p>

<ul>
  <li><a href="https://lists.apache.org/list.html?users-cn@cloudstack.apache.org">users-cn@</a>: Chinese</li>
</ul>

<div>
	<strong>Search the CloudStack Mailing Lists</strong>: <input id="queryStringToSearchOnMailingList" type="text" name="q" size="60" />
	<a id="searchOnCloudStackMailingLists" class="button" target="_blank" href="#">Search</a>
</div>

<script>
	var searchEmailListBaseUrl = "https://lists.apache.org/list.html?users@cloudstack.apache.org:lte=1M&q=";
	$('#queryStringToSearchOnMailingList').change(function(){
		$('#searchOnCloudStackMailingLists').attr('href', searchEmailListBaseUrl + $(this).val());
	});
</script>

<h2 id="to-subscribe-to-the-mailing-lists">To Subscribe to the Mailing Lists</h2>

<p>If you want to subscribe to list, send an email to <em>listname</em>-subscribe@cloudstack.apache.org:</p>

<ul>
  <li>To join the announce mailing list email <a href="mailto:announce-subscribe@cloudstack.apache.org">announce-subscribe@cloudstack.apache.org</a>.</li>
  <li>To join the users mailing list email <a href="mailto:users-subscribe@cloudstack.apache.org">users-subscribe@cloudstack.apache.org</a>.</li>
  <li>To join the users-cn mailing list email <a href="mailto:users-cn-subscribe@cloudstack.apache.org">users-cn-subscribe@cloudstack.apache.org</a>.</li>
  <li>To join the dev mailing list email <a href="mailto:dev-subscribe@cloudstack.apache.org">dev-subscribe@cloudstack.apache.org</a>.</li>
  <li>To join the commits mailing list email <a href="mailto:commits-subscribe@cloudstack.apache.org">commits-subscribe@cloudstack.apache.org</a>.</li>
  <li>To join the issues mailing list email <a href="mailto:issues-subscribe@cloudstack.apache.org">issues-subscribe@cloudstack.apache.org</a>.</li>
  <li>To join the marketing mailing list email <a href="mailto:marketing-subscribe@cloudstack.apache.org">marketing-subscribe@cloudstack.apache.org</a>.</li>
</ul>

<h2 id="to-unsubscribe-to-the-mailing-lists">To Unsubscribe to the Mailing Lists</h2>

<p>Decided you're getting too much mail? To unsubscribe from one of the lists, send an email to <em>listname</em>-unsubscribe@cloudstack.apache.org from the same email you subscribed with.</p>

<ul>
  <li>To leave the announce mailing list email <a href="mailto:announce-unsubscribe@cloudstack.apache.org">announce-unsubscribe@cloudstack.apache.org</a>.</li>
  <li>To leave the users mailing list email <a href="mailto:users-unsubscribe@cloudstack.apache.org">users-unsubscribe@cloudstack.apache.org</a>.</li>
  <li>To leave the users-cn mailing list email <a href="mailto:users-cn-unsubscribe@cloudstack.apache.org">users-cn-unsubscribe@cloudstack.apache.org</a>.</li>
  <li>To leave the dev mailing list email <a href="mailto:dev-unsubscribe@cloudstack.apache.org">dev-unsubscribe@cloudstack.apache.org</a>.</li>
  <li>To leave the commits mailing list email <a href="mailto:commits-unsubscribe@cloudstack.apache.org">commits-unsubscribe@cloudstack.apache.org</a>.</li>
  <li>To leave the issues mailing list email <a href="mailto:issues-unsubscribe@cloudstack.apache.org">issues-unsubscribe@cloudstack.apache.org</a>.</li>
  <li>To leave the marketing mailing list email <a href="mailto:marketing-unsubscribe@cloudstack.apache.org">marketing-unsubscribe@cloudstack.apache.org</a>.</li>
</ul>

<p><strong>Please do not send emails to the list asking for someone to unsubscribe you.</strong></p>

<h2 id="conduct-on-mailing-lists">Conduct on Mailing Lists</h2>

<p>We expect all participants on the mailing list to treat one another professionally and politely.</p>
