--- sidebar_position: 1600 title: "🀝 Contributing" --- import { TopBanners } from "@site/src/components/TopBanners"; πŸš€ **Welcome, Contributors!** πŸš€ Your interest in contributing to Open WebUI is greatly appreciated. This document is here to guide you through the process, ensuring your contributions enhance the project effectively. Let's make Open WebUI even better, together! ## πŸ’‘ Contributing Looking to contribute? Great! Here's how you can help: ### 🌟 Code Contribution Guidelines We welcome pull requests. Before submitting one, please: 1. Open a discussion regarding your ideas [here](https://github.com/open-webui/open-webui/discussions/new/choose). 2. Follow the project's coding standards and include tests for new features. 3. Update documentation as necessary. 4. Write clear, descriptive commit messages. ### πŸ›  Code PR Best Practices: 1. **Atomic PRs:** Make sure your PRs are small, focused, and deal with a single objective or task. This helps in easier code review and limits the chances of introducing unrelated issues. If the scope of changes grows too large, consider breaking them into smaller, logically independent PRs. 2. **Follow Existing Code Convention:** Ensure your code aligns with the existing coding standards and practices of the project. 3. **Avoid Additional External Dependencies:** Do not include additional external dependencies without prior discussion. 4. **Framework Agnostic Approach:** We aim to stay framework agnostic. Implement functionalities on our own whenever possible rather than relying on external frameworks or libraries. If you have doubts or suggestions regarding this approach, feel free to discuss it. Thank you for contributing! πŸš€ ### πŸ“š Documentation & Tutorials Help us make Open WebUI more accessible by improving documentation, writing tutorials, or creating guides on setting up and optimizing the web UI. ### 🌐 Translations and Internationalization Help us make Open WebUI available to a wider audience. In this section, we'll guide you through the process of adding new translations to the project. We use JSON files to store translations. You can find the existing translation files in the `src/lib/i18n/locales` directory. Each directory corresponds to a specific language, for example, `en-US` for English (US), `fr-FR` for French (France) and so on. You can refer to [ISO 639 Language Codes](http://www.lingoes.net/en/translator/langcode.htm) to find the appropriate code for a specific language. To add a new language: - Create a new directory in the `src/lib/i18n/locales` path with the appropriate language code as its name. For instance, if you're adding translations for Spanish (Spain), create a new directory named `es-ES`. - Copy the American English translation file(s) (from `en-US` directory in `src/lib/i18n/locale`) to this new directory and update the string values in JSON format according to your language. Make sure to preserve the structure of the JSON object. - Add the language code and its respective title to languages file at `src/lib/i18n/locales/languages.json`. ### 🌎 Accessibility Matters We are committed to making **Open WebUI** inclusive and usable for everyone. Accessibility is a core part of good system design. Here’s how you can help improve accessibility when you contribute: - **Semantic HTML**: Use semantic HTML elements (`