| 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 |
| |
| * Add a ``benchmark`` test for measuring performance of 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 |