Developer Information
=====================

.. _mailing-lists:

Mailing Lists
-------------

All of the communication about Libcloud development happens on our mailing
lists.

* `announce@libcloud.apache.org`_ - Moderated and low volume mailing list which
  is only used for distributing important project announcements and updates.
  (`announce-archive <https://mail-archives.apache.org/mod_mbox/libcloud-announce/>`_)
* `users@libcloud.apache.org`_ - Mailing list for general talk about Libcloud
  and other off-topic things
  (`users-archive <https://mail-archives.apache.org/mod_mbox/libcloud-users/>`_)
* `dev@libcloud.apache.org`_ - General mailing list for developers
  (`dev-archive <https://mail-archives.apache.org/mod_mbox/libcloud-dev/>`_)
* `notifications@libcloud.apache.org`_ - Commits messages and other automatically
  generated notifications go to this mailing list.
  Keep in mind that unlike the others, this mailing list is fairly noisy.
  (`notifications-archive <https://mail-archives.apache.org/mod_mbox/libcloud-notifications/>`_, `commits-archive <https://mail-archives.apache.org/mod_mbox/libcloud-commits/>`_)

Archive of old incubator mailing lists:

* `incubator-libcloud`_
* `incubator-libcloud-commits`_

.. _irc:

IRC
---

* #libcloud on Freenode

.. _issue-tracker:

Issue Tracker
-------------

For bug and issue tracking we use Github issues located at
https://github.com/apache/libcloud/issues.

Testing
-------

For information how to run the tests and how to generate the test coverage
report, please see the :doc:`Testing page </testing>`.

.. _ci-cd:

Continuous Integration
----------------------

For continuous integration we use Travis-CI. You can find build reports on the
following links:

* https://travis-ci.org/apache/libcloud

Travis-CI builder is also integrated with Github which means that if you open a
pull request there, Travis-CI will automatically build it.

If you want to validate the build before raising the PR, Travis-CI can be enabled for personal
accounts and branches separately.

.. _code-coverage:

Test Coverage
-------------

Test coverage report is automatically generated after every push and can be
found at https://codecov.io/github/apache/libcloud?branch=trunk.

.. _`announce@libcloud.apache.org`: mailto:announce-subscribe@libcloud.apache.org
.. _`users@libcloud.apache.org`: mailto:users-subscribe@libcloud.apache.org
.. _`dev@libcloud.apache.org`: mailto:dev-subscribe@libcloud.apache.org
.. _`notifications@libcloud.apache.org`: mailto:notifications-subscribe@libcloud.apache.org
.. _`incubator-libcloud`: http://mail-archives.apache.org/mod_mbox/incubator-libcloud/
.. _`incubator-libcloud-commits`: http://mail-archives.apache.org/mod_mbox/incubator-libcloud-commits/
