Contributing to ``petgraph``
============================

Hi! We'd love to have your contributions! If you want help or mentorship, reach
out to us in a GitHub issue, or ping ``bluss`` in `#rust on irc.mozilla.org`_
and introduce yourself.

.. _`\#rust on irc.mozilla.org`: irc://irc.mozilla.org#rust

* `Building`_

* `Testing`_

* `Pull Requests`_

  * `Bug Fixes`_

  * `Performance Improvements`_

  * `Implementing New Algorithms`_

* `Where We Need Help`_

* `Team`_

Building
--------

::

    $ cargo build

Testing
-------

::

    $ cargo test --features all

Pull Requests
-------------

All pull requests are reviewed by a team_ member before merging.

Additionally, different kinds of pull requests have different requirements.

Bug Fixes
.........

We love getting bug fixes!

Make sure to include a regression test, so that we can be sure that we never
accidentally re-introduce the bug again.

Performance Improvements
........................

You made an algorithm faster? Awesome.

When submitting performance improvement, include the following:

* A new ``#[bench]`` function that exercises this code path, if one doesn't
  already exist

* Before and after ``cargo bench`` scores, optionally formatted using
  `cargo-benchcmp`_

.. _`cargo-benchcmp`: https://github.com/BurntSushi/cargo-benchcmp

Implementing New Algorithms
...........................

Implementing new graph algorithms is encouraged!

If you're going to implement a new algorithm, make sure that you do the
following:

* Add a ``quickcheck`` property test for the new algorithm

* Document what the algorithm does and in what situations it should be used

* Document the big-O running time of the algorithm

* Include links to relevant reading materials, such as a paper or Wikipedia

* Make the algorithm work with generic graphs, constraining the generic graph
  type parameter with our existing graph traits, like ``Visitable``, or with new
  graph traits

Any team_ member can review a pull request implementing a new algorithm, but the
final decision whether or not the algorithm is appropriate for inclusion in the
``petgraph`` crate is left to ``@bluss``.

Additionally, assuming that the new algorithm is merged into ``petgraph``, you
are *strongly* encouraged to join the ``petgraph`` team_! *You* are the best
person to review any future bug fixes, performance improvements, and whatever
other changes that affect this new algorithm.

Where We Need Help
------------------

* Issues labeled `"help wanted"`_ are issues where we could use a little help
  from you.

* Issues Labeled `"mentored"`_ are issues that don't really involve any more
  investigation, just implementation. We've outlined what needs to be done, and
  a team_ member has volunteered to help whoever claims the issue implement it,
  and get the implementation merged.

.. _`"help wanted"`:
   https://github.com/bluss/petgraph/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22

.. _`"mentored"`:
   https://github.com/bluss/petgraph/issues?q=is%3Aopen+is%3Aissue+label%3A%22mentored%22

Team
----

The ``petgraph`` team consists of:

* ``@bluss``
* ``@fitzgen``

We need more team members to help spread out reviewing and maintenance
responsibilities — want to join us? `Drop a comment in this issue!`_

.. _`Drop a comment in this issue!`: https://github.com/bluss/petgraph/issues/TODO
