[ OPEN SOURCE ]

Contributing
to UMD

UMD is built in the open. Whether you fix a typo, add a platform handler, or report a bug — every contribution makes it better.

[ HOW TO HELP ]

Ways to Contribute

01

Report Bugs

Found something broken? Open an issue on Codeberg with clear reproduction steps, your OS, Python version, and the full error output.

02

Suggest Features

Have an idea? Open a feature request on Codeberg. Describe the use case, not just the solution — context helps us understand the need.

03

Write Code

Fork the repo, make your changes on a feature branch, and open a pull request. Keep commits small and focused. All code must pass existing tests.

04

Add a Platform Handler

UMD uses a modular handler system. Adding a new platform is as simple as creating a new handler class in the handlers/ directory and registering it.

05

Improve Docs

Documentation lives in the documentations/ folder as Markdown. Fix typos, add examples, or write new guides — docs PRs are always welcome.

06

Star & Share

The simplest contribution: star the repo on Codeberg and share UMD with developers who need it. Visibility helps the project grow.

[ WORKFLOW ]

PR Workflow

01

Fork the repository

Go to codeberg.org/nk2552003/umd and fork it to your account.

02

Clone your fork

git clone https://codeberg.org/YOUR_USERNAME/umd.git && cd umd

03

Create a feature branch

git checkout -b feature/your-feature-name or fix/bug-description

04

Make your changes

Write code, update tests, and add docs if relevant to your change.

05

Test your changes

Run the test suite to make sure nothing is broken: python -m pytest

06

Commit & push

git add . && git commit -m "feat: describe your change" && git push origin feature/...

07

Open a Pull Request

Go to Codeberg, open a PR from your branch to main. Fill in the PR template.

08

Review & merge

The maintainer will review your PR, request changes if needed, then merge it.

[ STANDARDS ]

Code Standards

Python 3.9+ compatible code only
Follow PEP 8 style guidelines
Add type hints to new functions
Write docstrings for public methods
Keep handler classes in handlers/ directory
Update CHANGELOG.md with your changes
No new dependencies without maintainer approval
Test on at least one platform before PR
[ COMMIT FORMAT ]
feat: add TikTok handler
fix: resolve playlist URL parsing
docs: update INSTALLATION.md
chore: bump yt-dlp to 2024.12.x
refactor: simplify download queue
test: add tests for audio extraction
[ FIRST TIME? ]

Look for Good First Issues

Issues tagged good-first-issue on Codeberg are intentionally scoped to be approachable for new contributors.

Browse Issues ↗
[ READY? ]

Let's build it
together.

Every line of code, every bug report, every doc fix makes UMD better for everyone.

Fork on Codeberg ↗