<?php 
$title = "Keeping in Touch";
include("header.inc"); 
?>
<h2>Keeping in Touch</h2>

<h3>Mailing Lists</h3>
<p><strong>Before posting to any mailing list</strong> make sure that you have checked our page on how to <a href="asking_questions.html">ask questions about WebKit.</a></p>
<p>There are a number of mailing lists for WebKit related topics. Archives for all the lists as well as information on joining them are available on the individual list page. There is also a <a href="http://dir.gmane.org/">gmane archive</a> for some of the following mailing lists.</p>

<ul>
<li><a href="http://lists.webkit.org/mailman/listinfo/webkit-help">webkit-help</a> is for requests for help related to WebKit. It is the main mailing
list. Most of the questions will go to this mailing list. Usual topics include:
<ol>
<li>how to build WebKit</li>
<li>how to use WebKit&rsquo;s APIs</li>
<li>how to embed WebKit</li>
<li>how to port WebKit</li>
</ol>
</li>

<li><a href="http://lists.webkit.org/mailman/listinfo/webkit-jobs">webkit-jobs</a> is for WebKit-related jobs.</li>

<li><a href="http://lists.webkit.org/mailman/listinfo/webkit-dev">webkit-dev</a> is for discussion of the WebKit project&rsquo;s development.
If you do not intend to contribute patches to WebKit, you should direct your questions to webkit-help.</li>

<li><a href="http://lists.webkit.org/mailman/listinfo/webkit-reviews">webkit-reviews</a> is a list for notification of review requests. Bugzilla automatically notifies this list of all patches awaiting review.</li>

<li>New repository commit information is automatically sent to the <a href="http://lists.webkit.org/mailman/listinfo/webkit-changes">webkit-changes</a> mailing list.</li>

<li>New bugs are assigned to the <a href="http://lists.webkit.org/mailman/listinfo/webkit-unassigned">webkit-unassigned</a> mailing list by default, which is notified of the new bugs, as well as their updates and changes.</li>

<li>If you would like to discuss development of applications using WebKit on Mac OS X, the right list is one hosted on an Apple list server: <a href="http://www.lists.apple.com/mailman/listinfo/webkitsdk-dev">webkitsdk-dev</a>.</li>
</ul>

<h3>IRC</h3>

<p>You can find WebKit developers, testers, and other interested
parties in channel <a href="irc://irc.freenode.net/#webkit">#webkit</a> on the FreeNode IRC network
(<a href="irc://irc.freenode.net/#webkit">irc.freenode.net</a>).

<h3>Bug Tracker</h3>

<p>You can report new bugs and monitor the state of existing bugs in
our <a href="https://bugs.webkit.org/">Bugzilla</a>,
in the WebKit product.
</p>

<h3>Other useful info</h3>

<p>
<b>Trac</b><br>
Want to know more about what we&rsquo;re up to? Check out our <a href="http://trac.webkit.org">trac</a> where you can browse the source and see our changes.
</p>
<p>
<b>CIA</b><br>
Project activity of WebKit and other projects is measured at <a href="http://cia.vc/">CIA</a>, where you can see if we&rsquo;ve done anything on our <a href="http://cia.webkit.org/">project page</a>.
</p>
<p>
<b>Build Bot</b><br>
Another way to see the current state of things is our <a href="http://build.webkit.org/">build bot</a>. This build system helps us identify build and test case failures fast, and as such is invaluable to us.
</p>

<?php
include("footer.inc");
?>
