Skip to content

Software Development Process

Brenton Cheng edited this page Apr 25, 2019 · 10 revisions

Submitting Issues

When submitting issues in GitHub, choose an appropriate issue type and fill out the corresponding template. Be as complete as you can.

Picking Issues and Using the Project Board

We use a GitHub Kanban-style project board to organize and track issues being worked on. Issues that are in the "To do" column are available to be selected by developers. If you feel interested in and qualified to work on an issue in this column, assign it to yourself and drag it into the "In progress" column.

Once the code is tested and ready, and you've created a Pull Request (PR) for it, the issue can be moved to the "Code review" column, where it will be reviewed by the community, as well as core committers. Additional changes may be required. Once a core committer approves the PR and merges it to the master branch, the issue can be moved to "Done".

Newly created issues appear in the "For consideration" column and will be spec'd and reviewed by the core team before being moved to "To do".

Issues may have any number of labels attached to them. See the reference list of labels.

For a higher-level view of our priorities, see the roadmap.

Picking a First Issue

If you are a new contributor to this project, consider picking issues labeled as Good First Issue or Easy.

Development Tips

Code Style and Styleguides

Please adhere to stated styleguides. e.g. We follow the AirBNB styleguide for Javascript. One of the easiest ways to remain compliant is to use an automated linter in your code editor.

Where no styleguide is explicitly stated, follow the prevailing style in an existing file or ask a core committer or the community when creating a new file.

Write Automated Tests

Good automated tests are part of good code. We encourage Test-Driven Design (TDD), whether or not tests are written first. i.e. When designing new code, make sure that you are doing so in a such a way that the code will be easy to test.

We use unit tests (using jest) to ensure that the individual parts are working and integration tests (using Puppeteer) to ensure that the parts work together correctly.

Whenever a bug is found, the first thing we do is write a regression test that would have caught that bug, making sure the test fails, and then we implement the bug fix, making sure the test now succeeds.

TODO: Remaining topics to cover:

  • Development tips
    • Using Git/GitHub: using feature branches, branch names, commit messages
  • Creating Pull Requests: use of PR template, author responsibilities
  • Reviewing Pull Requests: giving feedback, reviewer responsibilities
  • Issue resolution: what happens next, integration with Archive.org code base
Clone this wiki locally