# Contributing to Mealie [Please Join the Discord](https://discord.gg/QuStdQGSGK). We are building a community of developers working on the project. ## We Develop with GitHub We use GitHub to host code, to track issues and feature requests, as well as accept pull requests. ## We Use [GitHub Flow](https://docs.github.com/en/get-started/using-github/github-flow), So All Code Changes Happen Through Pull Requests Pull requests are the best way to propose changes to the codebase (we use [GitHub Flow](https://docs.github.com/en/get-started/using-github/github-flow)). We actively welcome your pull requests: 1. Fork the repo and create your branch from `mealie-next`. 2. Checkout the Discord, the PRs page, or the Projects page to get an idea of what's already being worked on. 3. If you're interested on working on major changes please get in touch on discord and coordinate with other developers. No sense in doubling up on work if someones already on it. 4. Once you've got an idea of what changes you want to make, create a draft PR as soon as you can to let us know what you're working on and how we can help! 5. If you've changed APIs, update the documentation. 6. Run tests, including `mise run py:check`. 7. Issue that pull request! First make a draft PR, make sure that the automated GitHub tests all pass, then mark as ready for review. We follow Conventional Commits syntax; please title your PR as described in the PR template. 8. Be sure to add release notes to the pull request. ## Writing Style This guidance applies to all contributor prose. It includes pull request titles, pull request bodies, and commit messages. **Human authors**: Write naturally. Use short-to-medium sentences, active voice, and direct language. Assume that the reader knows the codebase. **LLM authors**: Use [ASD-STE100 Simplified Technical English](https://www.asd-ste100.org/) for all text. Use this practical subset: - Use words from the STE approved-vocabulary dictionary. Technical names that are not in the dictionary can be used as-is (for example `mealie-next`, `mise run py:check`, `BaseUserController`, or `HttpRepo`). - Use one word for one meaning. Do not vary synonyms for style. - Use active voice only. Do not use passive constructions. - Use present or simple past tense. Do not use `-ing` gerunds or participles as nouns. - Limit procedures to 20 words per sentence. Limit descriptions to 25 words per sentence. - Put one instruction in each sentence. - Do not use idioms, metaphors, or hedging. - Never write transient comments or comments that document point-in-time intent (e.g. notes about what changed, why an edit was made, or what was there before). - Write comments that document what the code does only when the code is not self-documenting. The goal is text that each reviewer can understand in one read. ### UI Text New or changed strings in `frontend/app/lang/messages/en-US.json` are what users read, so they follow their own rules. The guidance above applies to contributor prose, not to UI text. - Write what a person would naturally say on that screen. Read the string out loud in context. - Text written with an LLM is fine, but it should not sound like it. Avoid filler, marketing tone, and over-explaining. - Match the existing app. Reuse an existing string when one fits, and use the same terms the rest of the app uses for the same thing. - Match the capitalization of similar elements. Short labels such as buttons, titles, menu items, and field labels use Title Case. Messages and descriptions written as sentences use sentence case. - Only edit `en-US.json`. All other locales are managed through Crowdin. ## Any contributions you make will be under the AGPL Software License In short, when you submit code changes, your submissions are understood to be under the same [AGPL License](https://choosealicense.com/licenses/agpl-3.0/) that covers the project. Feel free to contact the maintainers if that's a concern. ## Report bugs using GitHub's [issues](https://github.com/mealie-recipes/mealie/issues) We use GitHub issues to track public bugs. Report a bug by [opening a new issue](https://github.com/mealie-recipes/mealie/issues/new); it's that easy! ## Write bug reports with detail, background, and sample code **Great Bug Reports** tend to have: - A quick summary and/or background - Steps to reproduce * Be specific! * Give sample code if you can. [This stackoverflow question](http://stackoverflow.com/q/12488905/180626) includes sample code that *anyone* with a base R setup can run to reproduce what I was seeing - What you expected would happen - What actually happens - Notes (possibly including why you think this might be happening, or stuff you tried that didn't work) People *love* thorough bug reports. I'm not even kidding. ## License By contributing, you agree that your contributions will be licensed under its AGPL License. ## References This document was adapted from the open-source contribution guidelines for [Facebook's Draft](https://github.com/facebookarchive/draft-js/blob/main/CONTRIBUTING.md)