# 🌈 📦️ Welcome to the Containerization community! 📦️ 🌈 Contributions to Containerization are welcomed and encouraged. ## How you can help We would love your contributions in the form of: 🐛 Bug fixes\ ⚡️ Performance improvements\ ✨ API additions or enhancements\ 📝 Documentation\ 🧑‍💻 Project advocacy: blogs, conference talks, and more Anything else that could enhance the project! ## Submitting Issues and Pull Requests ### Issues To file a bug or feature request, use [GitHub issues](https://github.com/apple/containerization/issues/new). 🚧 For unexpected behavior or usability limitations, detailed instructions on how to reproduce the issue are appreciated. This will greatly help the priority setting and speed at which maintainers can get to your issue. ### Pull Requests We require all commits be signed with any of GitHub's supported methods, such as GPG or SSH. Information on how to set this up can be found on [GitHub's docs](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification#about-commit-signature-verification). To make a pull request, use [GitHub](https://github.com/apple/containerization/compare). Please give the team a few days to review but it's ok to check in on occasion. We appreciate your contribution! > [!IMPORTANT] > If you plan to make substantial changes or add new features, we encourage you to first discuss them with the wider containerization developer community. > You can do this by filing a [GitHub issue](https://github.com/apple/containerization/issues/new). > This will save time and increases the chance of your pull request being accepted. We use a "squash and merge" strategy to keep our `main` branch history clean and easy to follow. When your pull request is merged, all of your commits will be combined into a single commit. With the "squash and merge" strategy, the *title* and *body* of your pull request is extremely important. It will become the commit message for the squashed commit. Think of it as the single, definitive description of your contribution. Before merging, we'll review the pull request title and body to ensure it: * Clearly and concisely describes the changes. * Uses the imperative mood (for example, "Add feature," "Fix bug"). * Provides enough context for future developers to understand the purpose of the change. The pull request description should be concise and accurately describe the *what* and *why* of your changes. #### .gitignore contributions We do not currently accept contributions to add editor specific additions to the root .gitignore. We urge contributors to make a global .gitignore file with their rulesets they may want to add instead. A global .gitignore file can be set like so: ```bash git config --global core.excludesfile ~/.gitignore ``` #### Formatting Contributions Make sure your contributions are consistent with the rest of the project's formatting. You can do this using our Makefile: ```bash make fmt ``` #### Applying License Header to New Files If you submit a contribution that adds a new file, please add the license header. You can do this using our Makefile: ```bash make update-licenses ``` ### AI Contribution Guidelines We welcome thoughtful use of AI tools in your contributions to this repository. We ask that you adhere to these rules in order to preserve the project's integrity, clarity, and quality, and to respect maintainer bandwidth: * You should be able to explain and justify every line of code or documentation that was generated or assisted by AI. Your submission should reflect your own understanding and intent. * Use AI to augment, not totally replace, your reasoning or familiarity, especially for non-trivial parts of the system. * Avoid dumping AI-generated walls of text that you cannot explain. Low-effort, unexplained submissions will be deprioritized to protect maintainer bandwidth. AI tools should be used to **enhance, not replace** the human elements that make OSS special: learning, collaboration, and community growth. ## Code of Conduct To clarify of what is expected of our contributors and community members, the Containerization team has adopted the code of conduct defined by the Contributor Covenant. This document is used across many open source communities and articulates our values well. For more detail, please read the [Code of Conduct](https://github.com/apple/.github/blob/main/CODE_OF_CONDUCT.md "Code of Conduct").