<!--#include virtual="includes/_header.htm" -->
<!--#include virtual="includes/_top.htm" -->
<div class="content">
	<!--#include virtual="includes/_nav.htm" -->
	<div class="right">
		<h1>Contact</h1>
		<h3>Mailing Lists</h3>

		<p>
		We have a few mailing lists hosted by Apache:
		</p>
		<ul>
			<li>
				<b>User mailing list</b>: A list for general user questions about Kafka&reg;. To subscribe, send an email to <a href="mailto: users-subscribe@kafka.apache.org">users-subscribe@kafka.apache.org</a>. Once subscribed, send your emails to <a href="mailto: users@kafka.apache.org">users@kafka.apache.org</a>. Archives are available <a href="https://lists.apache.org/list.html?users@kafka.apache.org">here</a>.
			</li>
			<li>
				<b>Developer mailing list</b>: A list for discussion on Kafka&reg; development. To subscribe, send an email to <a href="mailto: dev-subscribe@kafka.apache.org">dev-subscribe@kafka.apache.org</a>. Once subscribed, send your emails to <a href="mailto: dev@kafka.apache.org">dev@kafka.apache.org</a>. Archives are available <a href="https://lists.apache.org/list.html?dev@kafka.apache.org">here</a>.
			</li>
			<li>
				<b>JIRA mailing list</b>: A list to track Kafka&reg; <a href="https://issues.apache.org/jira/projects/KAFKA">JIRA</a> notifications. To subscribe, send an email to <a href="mailto: jira-subscribe@kafka.apache.org">jira-subscribe@kafka.apache.org</a>. Archives are available <a href="https://lists.apache.org/list.html?jira@kafka.apache.org">here</a>.
			</li>
			<li>
				<b>Commit mailing list</b>: A list to track Kafka&reg; commits. To subscribe, send an email to <a href="mailto: commits-subscribe@kafka.apache.org">commits-subscribe@kafka.apache.org</a>. Archives are available <a href="http://mail-archives.apache.org/mod_mbox/kafka-commits">here</a>.
			</li>
		</ul>

		<p>
		A searchable archive of the mailing lists is available at <a href="http://search-hadoop.com/?project=Kafka">search-hadoop.com</a>.
		</p>

		<p>
		To unsubscribe from any of these you just change the word "subscribe" to "unsubscribe" in the email adresses above.
		</p>

		<p>
		Prior to the move to Apache we had a Google group we used for discussion. Archives can be found <a href="http://groups.google.com/group/kafka-dev">here</a>. After that we were in Apache Incubator which has its own archives for <a href="http://mail-archives.apache.org/mod_mbox/incubator-kafka-users/">user</a>, <a href="http://mail-archives.apache.org/mod_mbox/incubator-kafka-dev/">dev</a>, and <a href="http://mail-archives.apache.org/mod_mbox/incubator-kafka-commits/">commit</a> lists.
		</p>

		<h3>IRC</h3>
		<p>
			We have an IRC channel where there is often a few people hanging around if you want an interactive discussion. You can find us on chat.freenode.net	in #apache-kafka room (previously #kafka). The irc log can be found <a href="https://botbot.me/freenode/apache-kafka/">here</a>.
		</p>


<script>
// Show selected style on nav item
$(function() { $('.b-nav__contact').addClass('selected'); });
</script>
<!--#include virtual="includes/_footer.htm" -->
