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

Getting involved
================

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

One piece of it is the document you are currently reading ;-).

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
http://lists.busybox.net/pipermail/buildroot[] for discussion and
development.

[[mailing-list-subscribe]]

Subscribing to the mailing list
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

You can subscribe by visiting
http://lists.busybox.net/mailman/listinfo/buildroot[].
Only subscribers to the Buildroot mailing list are allowed to post to
this list.

The list is also available through _Gmane_ http://gmane.org[], at
+gmane.comp.lib.uclibc.buildroot+
http://dir.gmane.org/gmane.comp.lib.uclibc.buildroot[].

Searching the List Archives
~~~~~~~~~~~~~~~~~~~~~~~~~~~

Please search the mailing list archives before asking questions on the
mailing list, since there is a good chance someone else has asked the
same question before. Checking the archives is a great way to avoid
annoying everyone on the list with frequently asked questions...

IRC
---

The Buildroot IRC is irc://freenode.net/#buildroot[].
The channel +#buildroot+ is hosted on Freenode
http://webchat.freenode.net[].

When asking for help on IRC, share relevant logs or pieces of code
using a code sharing website.

[[patchwork]]
Patchwork
---------

The Buildroot patch management interface is at
http://patchwork.buildroot.org[].

All patches and comments sent through the mailing list are
automatically indexed in http://patchwork.buildroot.org[patchwork].

[[bugtracker]]
Bugtracker
----------

The Buildroot bugtracker is at https://bugs.busybox.net[].

To open a bug, see xref:reporting-bugs[].

Buildroot wikipage
------------------

After the Buildroot developer day on February 3, 2012,
a page dedicated to Buildroot has been created on
http://elinux.org[elinux.org].

This page is reachable at http://elinux.org/Buildroot[].

Currently, this page is mainly used as a _todo-list_.

[[events]]
Events
------

Buildroot Developer Days aside ELC-E 2012 (November 3-4, 2012 - Barcelona)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Event page: http://elinux.org/Buildroot:DeveloperDaysELCE2012[]

Buildroot presentation at LSM 2012 (July 12-14, 2012 - Geneva)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Announcement: http://lists.busybox.net/pipermail/buildroot/2012-May/053845.html[]

Buildroot Developer Days aside FOSDEM 2012 (February 3, 2012 - Brussels)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

* Announcement & agenda thread: http://lists.busybox.net/pipermail/buildroot/2012-January/049340.html[]
* Report: http://lists.busybox.net/pipermail/buildroot/2012-February/050371.html[]
