---
title: Apache CloudStack Mailing Lists
---

<div class="row">

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

<div class="page-header">

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

</div>

</div>

</div>

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. *["If it didn't happen on a mailing list, it didn't happen."](http://community.apache.org/newbiefaq.html#NewbieFAQ-IsthereaCodeofConductforApacheprojects?")*

The project currently has several lists:

- [announce@](http://mail-archives.apache.org/mod_mbox/cloudstack-announce/): Project release, security and other announcements. This is a very low volume list.
- [users@](http://mail-archives.apache.org/mod_mbox/cloudstack-users/): This list is for users of CloudStack to seek and provide support. This is a moderately high volume list.
- [dev@](http://mail-archives.apache.org/mod_mbox/cloudstack-dev/): Where discussions about development and the project itself happen. This is a high volume list.
- [commits@](http://mail-archives.apache.org/mod_mbox/cloudstack-commits/): 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.
- [issues@](http://mail-archives.apache.org/mod_mbox/cloudstack-issues/): Notifications from CloudStack's Jira project. This is a high volume list.
- [marketing@](http://mail-archives.apache.org/mod_mbox/cloudstack-marketing/): Discussions about marketing CloudStack.

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:

- [users-cn@](http://mail-archives.apache.org/mod_mbox/cloudstack-users-cn/): Chinese

<form action="http://markmail.org/search/list:org.apache.incubator.cloudstack-*">
<strong>Search the CloudStack Mailing Lists on MarkMail</strong>: <input type="text" name="q" size="50"/>
<input type="submit" value="Search"/>
</form>

## To Subscribe to the Mailing Lists

If you want to subscribe to list, send an email to *listname*-subscribe@cloudstack.apache.org:

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

## To Unsubscribe to the Mailing Lists

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

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

**Please do not send emails to the list asking for someone to unsubscribe you.** 

## Conduct on Mailing Lists

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