Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create contribution.md #42

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
131 changes: 131 additions & 0 deletions contribution.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
# Contributing to Kasa

We’re excited to have you join the **Kasa** project! Your contributions are key to advancing this Python library that supports African language translation, Speech-to-Text (STT), and Text-to-Speech (TTS) models built by the Ghana NLP team.

Below, you'll find a guide to help you contribute smoothly.

## Table of Contents
- [Setting Up Your Development Environment](#setting-up-your-development-environment)
- [Development Workflow](#development-workflow)
- [Coding Standards and Best Practices](#coding-standards-and-best-practices)
- [Testing Your Code](#testing-your-code)
- [Submitting a Pull Request](#submitting-a-pull-request)
- [Understanding the Project Structure](#understanding-the-project-structure)
- [Useful Resources](#useful-resources)

## Setting Up Your Development Environment
Make sure to create a virtual environment, then proceed.

1. **Clone the Repository:**
Start by cloning the repository and switch to the kasa directory on your local machine:
```bash
git clone https://github.com/GhanaNLP/kasa.git
cd kasa
```

2. **Install Dependencies:**
Make sure Python 3.8 or higher is installed. Run:
```bash
pip install .
```

3. **Set Up Development Tools (Optional but Recommended):**
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This bit should be covered by the pyproject.toml and automatically install dev-dependencies. Correct? @Lagyamfi .
I think linting and formatting should be mandatory

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There should a way to install dev-dependencies using poetry @PhidLarkson

Use code linters and formatters like `black` and `flake8` for consistent code style:
```bash
pip install black flake8
```

We like clean contributions

## Development Workflow

1. **Create a Branch:**
Create a branch for your work. Use a meaningful name that hints at the purpose (e.g., `feature-enhance-translation`):
```bash
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure we need to specify here exactly what git commands to use. It would differ based on the contributors workflow whether terminal or gui based. We can describe here what is expected generally and probably not step by step

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alright well noted, I will sort that out in a bit

git checkout -b <branch-name>
```

2. **Implement Your Changes:**
- Modify or add code with attention to detail and consistency.
- Include proper documentation and comments where needed.
- Add or update unit tests to cover your changes.

3. **Run Tests Locally:**
Test thoroughly. Ensure your code doesn’t break existing functionality:
```bash
pytest
```

4. **Commit Your Work:**
Keep your commit messages descriptive and concise:
```bash
git add .
git commit -m "Added new preprocessing method for improved efficiency"
```

5. **Push to Your Branch:**
```bash
git push origin <branch-name>
```

## Coding Standards and Best Practices

- **Follow PEP 8**: Ensure your code aligns with the PEP 8 Python style guide.
- **Use Type Hints**: Add type annotations to improve code readability and aid type checkers.
- **Docstrings and Comments**:
- Use docstrings to describe the purpose and parameters of classes and functions.
- Add comments to explain complex or non-intuitive parts of the code.

## Testing Your Code

Testing is non-negotiable to maintain the quality of Kasa. Place your test scripts in the `tests/` directory and name them following the format `test_<feature>.py`.

1. **Run All Tests:**
```bash
pytest tests/
```

2. **Add New Test Cases:**
If your feature or bug fix requires new tests, create them to ensure comprehensive coverage.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should have a step here for running linting

## Submitting a Pull Request

1. **Push Your Changes:**
```bash
git push origin <branch-name>
```

2. **Create the Pull Request:**
Head over to [Kasa’s GitHub repository](https://github.com/GhanaNLP/kasa) and create a pull request. Make sure to:
- Use a clear and descriptive title.
- Write a brief summary of the changes.
- Tag project maintainers or relevant team members for review.

3. **Address Feedback:**
Respond to feedback from reviewers and make any requested changes.

4. **Merging**:
Once approved, your pull request will be merged. Remember, **never push directly to the main branch**.

## Understanding the Project Structure

Here's an overview of important directories and files:

- **`kasa/`**: Main library code.
- **`examples/`**: Ready-to-run examples to showcase various features.
- **`notebooks/`**: Jupyter notebooks for prototyping and proofs of concept.
- **`tests/`**: Contains unit tests to ensure code stability.
- **`setup.py`**: Lists package dependencies and metadata.
- **`HISTORY.md`**: Contains version updates and planned features.
- **`CONTRIBUTION.md`**: This contribution guide.

## Useful Resources

- **Documentation and Code Reference**: For deeper understanding, refer to `README.md` and inline comments.
- **Community and Support**: For questions or help, reach out to the [Ghana NLP team](https://github.com/GhanaNLP) or open a discussion in the Issues tab.

---

We’re grateful for your time and effort in helping Kasa grow.

Every contribution, big or small, helps us improve!
Loading