Skip to content

Latest commit

 

History

History
160 lines (121 loc) · 9 KB

CONTRIBUTING.md

File metadata and controls

160 lines (121 loc) · 9 KB

Contributing to FinTrack

Thank you for considering contributing to FinTrack! Your contributions help make this project better. Whether you're reporting a bug, suggesting a feature, or submitting a pull request, your input is highly valued. Below are the guidelines to help you contribute effectively.

Table of Contents
  1. Code of Conduct
  2. License
  3. How to File a Bug Report
  4. How to Suggest a New Feature
  5. How to Submit a New Documentation
  6. How to Submit a Pull Request
  7. Issue Approval Process
  8. Pull Request Approval Process
  9. Setting Up Your Environment
  10. Types of Contributions We're Looking For

Code of Conduct

By participating in this project, you agree to abide by the Code of Conduct. Please read it to understand the expected behavior. Note that the course coordinator will adjudicate conflicts if needed.

License

By contributing, you agree that your contributions will be licensed under its MIT License.

How to File a Bug Report

To file a bug report, please follow these steps:

  1. Search for existing issues: Before creating a new issue, please check if it already exists.
  2. Open a new issue: If the bug hasn't been reported, create a Report Bug and include the following information:
    • Summary: A clear and descriptive title with a brief summary of the bug.
    • Steps to Reproduce: Steps to reproduce the issue.
    • Expected Behaviour: What you expected to happen.
    • Observed Behaviour: What actually happened.
    • Version: The version of the software you are using.
    • Screenshots: Any relevant logs, stack traces, screenshots, code examples, test cases.

How to Suggest a New Feature

To suggest a new feature, please follow these steps:

  1. Search for existing feature requests: Check if the feature has already been suggested.
  2. Open a new issue: If the feature hasn't been requested, create a Request Feature and include the following information:
    • Summary: A clear and descriptive title and the summary of the feature.
    • Description: A detailed description of the feature.
    • Problem: The problem the feature solves.
    • Examples/Use Cases: Any relevant examples or use cases.

How to Submit a New Documentation

To suggest new documentation, please follow these steps:

  1. Search for existing documentation requests: Check if the documentation has already been requested.
  2. Open a new issue: If the documentation hasn't been requested, create a Request Documention and include the following information:
    • Summary: A clear and descriptive title and the summary of the documentation needed.
    • Description: A detailed description of the documentation required.
    • Problem: The problem the documentation addresses.
    • Examples/Use Cases: Any relevant examples or use cases where the documentation would be useful.

How to Submit a Pull Request

To submit a pull request (PR), follow these steps:

  1. Fork the repository: Create your own fork of the project.
  2. Create a feature branch: Create a new branch for your feature or bugfix (git checkout -b feature/AmazingFeature).
  3. Commit your changes: Commit your changes with a clear and descriptive message (git commit -m 'Add some AmazingFeature').
  4. Push to the branch: Push your changes to your fork (git push origin feature/AmazingFeature).
  5. Open a pull request: Create a new pull request from your fork's branch to the main repository's main branch. Include the following information:
    • Title: A clear and descriptive title.
    • Description: A detailed description of the changes.
    • Related Issues: Any related issue numbers (e.g., Closes #123).

Issue Approval Process

To ensure that all issues are valid, necessary, and not duplicates, we follow a structured approval process:

  1. Group Meetings:

    • New issues will be discussed during our weekly group meetings and/or in our communication channels.
    • Team members will provide feedback, suggest modifications, and collectively approve the issues.
  2. Delegated Approval:

    • All team members are responsible for reviewing and approving new issues.
  3. Comment-Based Approval:

    • An issue requires at least 2 team members to comment "approved" before work can begin.
    • Team members should review the issue details, check for duplicates, and ensure all necessary information is provided before commenting their approval.

All approved issues will be documented in our project tracker via the wiki and assigned to team members as appropriate.

Pull Request Approval Process

To ensure that all pull requests are properly reviewed, validated, and adhere to the project standards, we follow a structured approval process:

  1. Group Meetings:

    • New pull requests will be discussed during our weekly group meetings and/or in our communication channels.
    • Team members will provide feedback, suggest modifications, and collectively approve the pull requests.
  2. Delegated Approval:

    • All team members are responsible for reviewing and approving pull requests.
  3. Comment-Based Approval:

    • A pull request requires at least 1 team member to comment "approved" before it can be merged.
    • Reviewers should:
      • Check for code quality, readability, and adherence to coding standards.
      • Run the test suite to ensure no existing functionality is broken.
      • Verify that the code works as expected and meets the acceptance criteria.
      • Ensure all feedback and required changes have been addressed before commenting their approval.
  4. Final Approval and Merge:

    • After receiving the necessary approvals, the reviewer will:
      • Squash commits into a single commit to maintain a clean commit history.
      • Resolve any merge conflicts.
      • Merge the pull request into the main branch.
    • The reviewer will notify the team once the merge is complete.
  5. Post-Merge:

    • After merging, the reviewer will delete the feature branch to keep the repository tidy.
    • Verify that the changes have been successfully merged and that the main branch is stable.

All approved pull requests will be documented in our project tracker via the wiki and any associated issues will be updated accordingly.

Setting Up Your Environment

For instructions on setting up your development environment, please refer to the Getting Started section in the README.

Types of Contributions We're Looking For

We welcome a variety of contributions to the FinTrack project, including but not limited to:

  1. Bug Fixes:

    • If you find a bug and know how to fix it, your contribution is valuable!
    • Please ensure you follow the steps for filing a bug report before submitting a fix.
  2. New Features:

    • Have an idea for a new feature that could improve FinTrack? We’d love to see it!
    • Make sure to discuss your idea with the team by opening an issue first.
  3. Improving Documentation:

    • Good documentation helps others understand and contribute to the project.
    • If you notice anything missing or unclear, please help us improve it.
  4. Code Refactoring:

    • If you find areas of the code that could be cleaner, more efficient, or more maintainable, your refactoring efforts are appreciated.
  5. Testing:

    • Writing tests is a crucial part of maintaining the project’s stability.
    • If you can help improve the test coverage or fix failing tests, we encourage your contributions.
  6. Design and UX Enhancements:

    • If you have a background in design or user experience, your insights on improving the look and feel of FinTrack are welcome.
  7. Performance Improvements:

    • If you spot a way to make FinTrack faster or more resource-efficient, your optimizations would be highly valued.
  8. Security Improvements:

    • Security is critical. If you can help us identify and fix vulnerabilities, your contributions will help keep our users safe.
  9. Internationalization (i18n):

    • Help make FinTrack accessible to users around the world by contributing translations or improving existing ones.

Please look at Description for specific functionalities we are looking for!