Skip to content

Latest commit

 

History

History
75 lines (41 loc) · 5.02 KB

CONTRIBUTING.md

File metadata and controls

75 lines (41 loc) · 5.02 KB

How to Contribute

Welcome to the Drone Swarm Search Environment project!

We're thrilled that you're interested in contributing to our project. Your involvement is essential for keeping up to date with the most recent reinforcement learning community study & research needs. Whether you're fixing a bug, adding a feature, or improving the documentation, your contributions are welcome!

Here’s how you can contribute:

  1. Explore our issues: Start by looking through the issues on our GitHub repository.

  2. Fork and clone the repository: Once you've found an issue to work on, fork the repository and then clone it to your local machine so you can start your work.

  3. Set up your environment: We strongly recommend using Python's Virtual Environment to manage your dependencies. Setting up a virtual environment helps isolate and manage the packages specific to our project, ensuring compatibility and preventing conflicts with other projects.

  4. Make your changes: Create a new branch for your changes. This keeps the work organized and makes it easy for you to start different contributions on new branches without conflicts.

  5. Test your changes: Before submitting your pull request, make sure your changes do not break any existing functionality. We appreciate if you add tests to cover new code or bugs.

  6. Submit a pull request: Push your changes to your fork and submit a pull request to the main project. Fill in the provided PR template with all requested details. Explain the reason for your changes and how they improve the project.

  7. Review process: The maintainers will review your pull request as soon as possible. Participate in the discussion, and make any requested changes. We aim to work collaboratively to ensure that every contribution is of high quality.

  8. Stay involved: Contributions don’t end with a pull request! You can help out by reviewing other people's pull requests, providing constructive feedback, and engaging in discussions to make the project better for everyone.

Testing

Ensuring Quality with Automated Tests

In our project, we maintain high standards of quality and reliability by rigorously testing our code. We use Pytest, a powerful testing framework for Python, to write and run our tests.

All of our tests are located in the DSSE/tests directory. This structure helps keep the tests organized and separate from the main codebase.

Before you submit your changes, you must run the existing tests to ensure that your contributions do not break any current functionality. To run the tests, follow these steps:

  1. Navigate to the project root: Change to the directory where your project is located.

  2. Activate your virtual environment: Ensure that your virtual environment is active to use the project-specific dependencies.

  3. Run the tests: Execute the following command to run all tests:

    pytest
    

Coding Conventions

Maintaining Code Quality

In our project, we strive for excellence in our codebase and uphold high standards for readability, maintainability, and efficiency. To achieve this, we base our coding conventions on the principles found in Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin.

Why Clean Code?

Clean Code provides guidelines and best practices designed to improve the overall quality of software. Adhering to these principles aids in producing code that is not only functional but also clean and understandable to others. Here are a few key conventions we follow:

  1. Meaningful Names: Use descriptive, specific names for variables, functions, and classes. Names should clearly reflect their function and the data they hold.

  2. Functions Should Do One Thing: Functions must be small and focused. They should perform one task and do it well, which simplifies testing, debugging, and maintenance.

  3. Clean Tests: Just as with production code, cleanliness is crucial in test code. Tests should be concise, expressive, and cover both expected and edge case scenarios.

  4. Handling Errors: Error handling is important for maintaining the integrity of the application. It should be clear, concise, and must not obscure logic.

  5. Code Formatting: Consistent formatting is not just aesthetic; it promotes readability and reduces the cognitive load for all developers. Follow the format settings in our repository to ensure consistency.

If you have any questions or need assistance with your contributions, please don't hesitate to reach out to our community for help. We aim to make your experience as enjoyable and productive as possible!

Thank you for contributing to our project! We truly appreciate your efforts and are excited to see what you build with us.

Best regards,

The Development Team:

  • Renato Laffranchi, Computer Engineer
  • Pedro Andrade, Computer Engineer
  • Ricardo Rodrigues, Computer Engineer
  • Jorás Oliveira, Computer Engineer