---
# System prepended metadata

title: Brainstorming outline for development guide

---

# Brainstorming outline for development guide

[Nick] I'm putting this together to gather my thoughts. I'm also curious if there are existing guides with a compatible open source license we can copy & paste from, and then adapt.

* Overview
    * Welcome!
    * Imposter syndrome disclaimer
    * Code of conduct
* Navigating the PlasmaPy Project
    * GitHub organization and repository
    * Webpage
    * Matrix chat
    * Communication channels
    * PLEPs
    * Affiliated packages
* Many ways to contribute
    * Providing user 
    * support
    * Organizing events
    * Providing feedback
        * Making feature requests
        * Making bug reports
        * Providing knowledge on plasma physics topics
    * Creating educational materials (introduce plasma concepts while introducing PlasmaPy)

* Background tutorials
    * Python
        * Research software engineering with Python open access book
        * `astropy.units`
    * git & GitHub: how to make a pull request
    * reStructuredText
    * Markdown
* Getting set up to contribute
    * Fork & clone repo
    * Set up remotes
    * Install PlasmaPy for development
    * Choosing an IDE
    * Running tests
        * Helpful practice: run tests often!
* Workflow (assuming completion of previous tasks)
    * Create a branch
    * Pushing branch to fork on GitHub
    * 

* Code guidelines
    * pre-commit
* Documentation 
    * Overview
    * reStructuredText
    * numpydoc standard
        * Example docstring
    * How to build documentation locally
        * Sphinx
    * `plasmapy-sphinx`
    * Documentation guidelines
    * Best practices
* Tests 
    * Overview
        * Test are run using pytest
    * How tests are run
        * Command line
        * Inside Python
    * 
    * Floating point comparisons
    * Test independence & parametrization
    * `plasmapy-test`
* Release guide
    * NEP 28 guidelines

