From a71916889016dcba2b7bd699b61c341193149ab8 Mon Sep 17 00:00:00 2001 From: Kurt Griffiths Date: Mon, 13 Jun 2016 10:07:46 -0500 Subject: [PATCH] doc(CONTRIBUTE): Reorganize contributing / community docs (#822) De-duplicate content between RTD and CONTRIBUTING.md. Also update outdated information, including mailing list instructions. --- CONTRIBUTING.md | 33 +++++++++++++++-- doc/community/contrib-snip.rst | 42 ---------------------- doc/community/contribute.rst | 64 +++++++++------------------------ doc/community/help.rst | 55 ++++++++++++++++++++++++---- volunteers.jpg | Bin 0 -> 16004 bytes 5 files changed, 96 insertions(+), 98 deletions(-) delete mode 100644 doc/community/contrib-snip.rst create mode 100644 volunteers.jpg diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 68ef453..d3f4396 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,8 +1,31 @@ -## Contributing +## Contributer's Guide -Hi, thanks for your interest in the project! We welcome pull requests from developers of all skill levels. To get started, simply fork the master branch on GitHub to your personal account and then clone the fork into your development environment. +Thanks for your interest in the project! We welcome pull requests from +developers of all skill levels. To get started, simply fork the master branch +on GitHub to your personal account and then clone the fork into your +development environment. -Kurt Griffiths (kgriffs) is the creator and current maintainer of the Falcon framework, along with a group of talented and stylish volunteers. Please don't hesitate to reach out if you have any questions, or just need a little help getting started. You can find us on IRC in #falconframework on Freenode. +Kurt Griffiths (**kgriffs** on IRC and Twitter) is the original creator of the +Falcon framework, and currently co-maintains the project along with John Vrbanac +(**jvrbanac** on IRC and Twitter). Falcon is developed by a growing +community of users and contributors just like you. + +Please don't hesitate to reach out if you have any questions, or just need a +little help getting started. You can find us in +the **#falconframework** IRC channel on [Freenode][freenode]. It's the best way to discuss ideas, ask +questions, and generally stay in touch with fellow contributors. + +Please note that all contributors and maintainers of this project are subject to our [Code of Conduct][coc]. + +### Mailing List + +The Falcon community maintains a mailing list that you can use to share your ideas and ask questions about the framework. To join the list, simply send an email to [][ml-join] (the subject and body will be ignored). You’ll receive a reply asking you to confirm the request. + +Per our [Code of Conduct][coc], we expect everyone who participates on the mailing list to act professionally, and lead by example in encouraging constructive discussions. Each individual in the community is responsible for creating a positive, constructive, and productive culture. + +[Discussions are archived][ml-archive] for future reference. + +### Pull Requests Before submitting a pull request, please ensure you have added or updated tests as appropriate, and that all existing tests still pass with your changes on both Python 2 and Python 3. Please also ensure that your coding style follows PEP 8 and doesn't cause pyflakes to complain. @@ -129,3 +152,7 @@ The footer should contain any information about **Breaking Changes** and is also [docstrings]: http://sphinxcontrib-napoleon.readthedocs.org/en/latest/example_google.html#example-google-style-python-docstrings [goog-style]: http://google-styleguide.googlecode.com/svn/trunk/pyguide.html#Comments [rtd]: http://falcon.readthedocs.org +[coc]: https://github.com/falconry/falcon/blob/master/CODEOFCONDUCT.md +[freenode]: https://www.freenode.net/ +[ml-join]: mailto:users-join@mail.falconframework.org?subject=join +[ml-archive]: https://mail.falconframework.org/archives/list/users@mail.falconframework.org/ diff --git a/doc/community/contrib-snip.rst b/doc/community/contrib-snip.rst deleted file mode 100644 index 2fbc90b..0000000 --- a/doc/community/contrib-snip.rst +++ /dev/null @@ -1,42 +0,0 @@ -Mailing List ------------- -The Falcon community maintains a mailing list that you can use to share -your ideas and ask questions about the framework. We use the appropriately -minimalistic `Librelist `_ to host the discussions. - -To join the mailing list, simply send your first email to falcon@librelist.com! -This will automatically subscribe you to the mailing list *and* sends your email -along to the rest of the subscribers. For more information about managing your -subscription, check out the -`Librelist help page `_. - -All contributors and maintainers of this project are subject to our `Code -of Conduct `_. -We expect everyone who participates on the mailing list to act -professionally, and lead by example in encouraging constructive -discussions. Each individual in the community is responsible for creating -a positive, constructive, and productive culture. - -`Discussions are archived `_ -for posterity. - -Submit Issues -------------- -If you have an idea for a feature, run into something that is harder to -use than it should be, or find a bug, please let the crew know -in **#falconframework** and/or by -`submitting an issue `_. We -need your help to make Falcon awesome! - -Pay it Forward --------------- -We'd like to invite you to help other community members with their -questions in IRC, and to peer-review -`pull requests `_. If you use the -Chrome browser, we recommend installing the -`NotHub extension `_ to stay up to date with PRs. - -Code of Conduct ---------------- -All contributors and maintainers of this project are subject to our `Code -of Conduct `_. diff --git a/doc/community/contribute.rst b/doc/community/contribute.rst index aeff664..9e11de9 100644 --- a/doc/community/contribute.rst +++ b/doc/community/contribute.rst @@ -3,54 +3,24 @@ Contribute to Falcon ==================== -`Kurt Griffiths `_ is the creator and current -maintainer of the Falcon framework. He works with a growing team of -friendly and stylish volunteers like yourself, who review patches, -implement features, fix bugs, and write docs for the project. +Thanks for your interest in the project! We welcome pull requests from +developers of all skill levels. To get started, simply fork the master branch +on GitHub to your personal account and then clone the fork into your +development environment. -Your ideas and patches are always welcome! +Kurt Griffiths (**kgriffs** on IRC and Twitter) is the original creator of the +Falcon framework, and currently co-maintains the project along with John Vrbanac +(**jvrbanac** on IRC and Twitter). Falcon is developed by a growing +community of users and contributors just like you. -IRC ---- -If you are interested in helping out, please join the **#falconframework** -IRC channel on `Freenode `_. -It's the best way to discuss ideas, ask questions, and generally stay -in touch with fellow contributors. We recommend setting up a good -IRC bouncer, such as ZNC, which can record and play back any conversations -that happen when you are away. +Please don't hesitate to reach out if you have any questions, or just need a +little help getting started. You can find us in +the **#falconframework** IRC channel on `Freenode +`_. It's the best way to discuss ideas, ask +questions, and generally stay in touch with fellow contributors. -.. include:: contrib-snip.rst +Please check out our +`Contributor's Guide `_ +for more information. -Pull Requests -------------- -Before submitting a pull request, please ensure you have added new -tests and updated existing ones as appropriate. We require 100% -code coverage. Also, please ensure your coding style follows PEP 8 and -doesn't make pyflakes sad. - -**Additional Style Rules** - -* Docstrings are required for classes, attributes, methods, and functions. -* Use `napolean-flavored`_ docstrings to make them readable both when - using the *help* function within a REPL, and when browsing - them on *Read the Docs*. -* Format non-trivial comments using your GitHub nick and an appropriate - prefix. Here are some examples:: - - # TODO(riker): Damage report! - # NOTE(riker): Well, that's certainly good to know. - # PERF(riker): Travel time to the nearest starbase? - # APPSEC(riker): In all trust, there is the possibility for betrayal. - -* Commit messages should be formatted using `AngularJS conventions`_ - (one-liners are OK for now but bodies and footers may be required as the - project matures). -* When catching exceptions, name the variable ``ex``. -* Use whitespace to separate logical blocks of code and to improve readability. -* Do not use single-character variable names except for trivial indexes when - looping, or in mathematical expressions implementing well-known formulae. -* Heavily document code that is especially complex or clever! -* When in doubt, optimize for readability. - -.. _napolean-flavored: http://sphinxcontrib-napoleon.readthedocs.org/en/latest/example_google.html#example-google-style-python-docstrings -.. _AngularJS conventions: http://goo.gl/QpbS7 +Thanks! diff --git a/doc/community/help.rst b/doc/community/help.rst index cb06e70..7abfd62 100644 --- a/doc/community/help.rst +++ b/doc/community/help.rst @@ -11,10 +11,53 @@ Please help us spread the word and grow the community! IRC --- -While you experiment with Falcon and work to familiarize yourself with -the WSGI framework, please consider joining the **#falconframework** -IRC channel on -`Freenode `_. It's a great place to -ask questions, share ideas, and get the scoop on what's new. +Chat with fellow community members in the official Falcon IRC channel. It's a +great place to ask questions and share your ideas. You can find us in +**#falconframework** on `Freenode `_. + +Mailing List +------------ +The Falcon community maintains a mailing list that you can use to share +your ideas and ask questions about the framework. To join the list, simply send +an email to +`users-join@mail.falconframework.org `_ +(the subject and body will be ignored). You'll receive a reply asking you to +confirm the request. + +Per our +`Code of Conduct `_, +we expect everyone who participates on the mailing list to act +professionally, and lead by example in encouraging constructive +discussions. Each individual in the community is responsible for creating +a positive, constructive, and productive culture. + +`Discussions are archived `_ +for future reference. + +Submit Issues +------------- +If you have an idea for a feature, run into something that is harder to +use than it should be, or find a bug, please let the crew know +in **#falconframework** and/or by +`submitting an issue `_. We +need your help to make Falcon awesome! + +Pay it Forward +-------------- +We'd like to invite you to help other community members with their +questions in IRC and on the mailing list, and to help peer-review +`pull requests `_. If you use the +Chrome browser, we recommend installing the +`NotHub extension `_ to stay up to date with PRs. If you +would like to contribute a new feature or fix a bug in the framework, please +check out our +`Contributor's Guide `_ +for more information. + +We'd love to have your help! + +Code of Conduct +--------------- +All contributors and maintainers of this project are subject to our `Code +of Conduct `_. -.. include:: contrib-snip.rst diff --git a/volunteers.jpg b/volunteers.jpg new file mode 100644 index 0000000000000000000000000000000000000000..89a0a791e0d3f0709569c57db52742837145aeae GIT binary patch literal 16004 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