// -*- mode:doc; -*-
// vim: set syntax=asciidoc:

[[community-resources]]
== Community resources

Like any open source project, Buildroot has different ways to share
information in its community and outside.

Each of those ways may interest you if you are looking for some help,
want to understand Buildroot or contribute to the project.

Mailing List::
+
Buildroot has a mailing list for discussion and development. It is the
main method of interaction for Buildroot users and developers.
+
Only subscribers to the Buildroot mailing list are allowed to post to
this list. You can subscribe via the
http://lists.buildroot.org/mailman/listinfo/buildroot[mailing list info
page].
+
Mails that are sent to the mailing list are also available in the
mailing list archives, available through
http://lists.buildroot.org/pipermail/buildroot[Mailman] or at
https://lore.kernel.org/buildroot/[lore.kernel.org].

IRC::
+
The Buildroot IRC channel irc://irc.oftc.net/#buildroot[#buildroot] is
hosted on https://www.oftc.net/WebChat/[OFTC]. It is a useful place to
ask quick questions or discuss on certain topics.
+
When asking for help on IRC, share relevant logs or pieces of code
using a code sharing website, such as https://paste.ack.tf/.
+
Note that for certain questions, posting to the mailing list may be
better as it will reach more people, both developers and users.

Bug tracker::
+
Bugs in Buildroot can be reported via the mailing list or alternatively
via the https://bugs.buildroot.org/buglist.cgi?product=buildroot[Buildroot
bugtracker]. Please refer to xref:reporting-bugs[] before creating a bug
report.

Wiki::
+
http://elinux.org/Buildroot[The Buildroot wiki page] is hosted on
the http://elinux.org[eLinux] wiki. It contains some useful links, an
overview of past and upcoming events, and a TODO list.

Patchwork::
+
Patchwork is a web-based patch tracking system designed to facilitate
the contribution and management of contributions to an open-source
project. Patches that have been sent to a mailing list are \'caught' by
the system, and appear on a web page. Any comments posted that
reference the patch are appended to the patch page too. For more
information on Patchwork see
http://jk.ozlabs.org/projects/patchwork/[].
+
Buildroot's Patchwork website is mainly for use by Buildroot's
maintainer to ensure patches aren't missed. It is also used by Buildroot
patch reviewers (see also xref:apply-patches-patchwork[]).
However, since the website exposes patches and their corresponding
review comments in a clean and concise web interface, it can be useful
for all Buildroot developers.
+
The Buildroot patch management interface is available at
https://patchwork.ozlabs.org/project/buildroot/list/[].
