Skip to content

Latest commit

 

History

History
167 lines (83 loc) · 8.95 KB

CONTRIBUTING.md

File metadata and controls

167 lines (83 loc) · 8.95 KB

Contributing

This document provides some overall guidelines and suggestions for how to get started with contributing to the project. There are several features, enhancements, and fixes that we'd like to work on, so there are lots of opportunities to get started.

Table of Contents

First steps

  1. Set up your local dev environment
  2. Be sure to read our code of conduct
  3. Say hi on our Slack Channel!

Using Git

  • First, be sure that your local repo is a clone of your fork and not of the main project repository (see the main README.md).
  • Define the upstream remote repository to be the main project repo on github: git remote add upstream https://github.com/codeforpdx/recordexpungPDX
Creating a new feature branch
  • Navigate to your local master branch: $ git checkout master
  • Sync your local master branch with the upstream repository $ git pull -r upstream master
  • Create a new branch for the issue you would like to work on ie: $ git checkout -b name-of-new-branch

At this point you should now be in your new branch and can begin working on the new feature or bug fix.

Once you have changes that you would like to make available for others to see and use:
  • Run the backend unit tests and check that they all pass. In the main project directory, run make dev_test.
  • Add the changes: $ git add . There are many versions of this command, consult docs mentioned below for more details or run $ git help add to get help in the terminal.
  • Commit the changes: $ git commit This opens an editor to write your commit message. Consult articles about how to write a good commit message; here is one by freeCodeCamp: https://www.freecodecamp.org/news/writing-good-commit-messages-a-practical-guide/
  • Update you local branch with the latest changes on the main repo: git pull -r upstream master (the -r flag makes this perform a rebase on master; see https://git-scm.com/docs/git-rebase)
  • Push the changes to your remote repository: $ git push origin name-of-new-branch
  • Open a Pull Request on the codeforpdx/recordExpungPDX repository referencing the issue that this PR addresses
  • Please do not push direcly to a branch on the shared repo.
  • Avoid making a local merge or update in your master branch. Your local changes should only be reflected in your master branch after they have merged on the github repo, and then pulled down again to sync to your local repo.

image

  • Request review.

image

  • Move the issue from the In Progress column into the Review column.

image

  • Once your pull request has been approved, ensure it is up to date with the codeforpdx/recordexpungPDX master branch and then merge it into the repository.

image

  • When you have merged the branch, if the issue is fully resolved move close it and move it into the done column.

image

and

image

More information on general GitHub commands and tutorials:

Where to contribute

If you're wondering where to get started, the answer may best depend on what skills you want to use and/or develop:

If you're interested in frontend development, there are several core app components that are still missing or in progress. We're using React for page rendering and Redux and Typescript to manage the app. Many of us are quite new to these tools and we're learning as we go! Talk to Max or Forrest.

Python is used for the backend, and can be broken down further: if you're interested in working on implementing functional logic programming, check out the Expunger. It's this is the core of the app that deals with the individual criminal records and checks eligibilty rules. It has been mostly completed according to the client specification, but there are a few bugs and additional features still on the todo list. Ask Jordan or Kent about this.

Python is also used to expose our backend API, and to connect to the database. This is mostly for basic user account management, like changing user account settings or password. We don't save any collected or analyzed record data, but we plan to store some really basic usage statistics to report on the impact of our app. Ask Erik or Jordan.

Tech documentation: A lot of us dive in to just work on, and learn, one part of the app. Documentation would be great not just for new contributors, but to help us with the full stack integration too! We could use docstrings on the various components of our app, both frontend and backend. And, if you're a bit lost looking at our project, consider the folks who might want to join and help next month :)

How to use the project board

There are two different ratings systems to think about before choosing an issue to work on:

Complexity:

This is a rough estimation of the time required to complete this task. It will be rated on a scale of 1 - 4. If this is the first issue you are going to take on, please consider choosing one with a complexity rating of 1

  • 1 - Simple tasks, do not take much time to complete. A good starting point.

image

  • 2 - Slightly more complex, may take more effort and some additional research.

image

  • 3 - These tasks may require some code refactoring and additional input or research to find the best solution to the problem.

image

  • 4 - These tasks will require changes including but not limited to: design changes, major refactors, new feature development, researching best practices, input from multiple team members. Do not let this dissuade you, please reach out to team members for help and guidance.

image

Priority:

This highlights the value completing this issue brings to the project. They will be scored either: Low, Medium, or High value. When possible please prioritize High value items as these will bring the most value to the application.

  • High priority - Please work on these issues first when possible.

image

  • Medium priority - These will help the application be more useful and should be prioritized over things labeled as "Low".

image

  • Low priority - These have a low impact on the overall functioning/improvement of the app. They are still useful and should be completed when other issues in "Ready to Start" are complete.

image


How to track the issue you are working on:

Assign yourself to the issue
  • Under the Assignees section select yourself.

image

Move the issue to the In Progress column
  • Drag the issue in to the column, or change it under the Project section, change it to In Progress in the drop down menu.

image

or

image

Note: if you are unable to complete an issue or do not have time to work on it within a few days, please remove yourself from the Assignees section and move the issue back to the Ready to Start Column. This ensures that we are able to consistently move forward with the current issues at hand. We appreciate any and all help with this Volunteer based project, and may check in on issues that are assigned to individuals or remain in the In Progress column for an extended period of time.