If you are interested in contributing to OSMO, your contributions will fall into three categories:
- You want to report a bug or documentation issue
- File an issue describing what you encountered.
- The OSMO team will evaluate the issue and triage it, scheduling it for a release. If you believe the issue needs priority attention, comment on the issue to notify the team.
- You want to fix a bug or documentation issue
- Look for outstanding issues that you can help fix.
- Follow the code contributions guide below.
- If you need more context on a particular issue, please ask and we shall provide.
- You want to propose a new feature and implement it
- For small, localized changes, file an issue describing your intended feature, and we shall discuss the design and implementation. Once we agree that the plan looks good, implement it using the code contributions guide below.
- For significant changes (new projects, major features, cross-cutting changes, or architectural decisions), use the projects process. Open a project proposal to discuss your idea with the OSMO team before starting implementation.
- Ubuntu 22.04+ (x86_64)
- MacOS (arm64)
- Git LFS - Source control for large files (>=3.7.1)
- Bazel - Build tool (>=8.1.1)
- Docker - Container runtime (>=28.3.2)
- Helm - Package manager for Kubernetes (>=3.17.1)
- KIND - Kubernetes in Docker (>=0.29.0)
- kubectl - Kubernetes command-line tool (>=1.32.2)
- aws-cli - AWS command-line tool (>=2.24.7)
- npm - Package manager for Node.js (>=11.6.2)
- Fork the NVIDIA/OSMO repository
- Clone the forked repository:
git clone https://github.com/YOUR_USERNAME/YOUR_FORK.git osmoAs you develop your fix or feature, follow this workflow:
- Iterate on your changes - Follow the Dev Guide to develop and test your changes following coding guidelines
- Build and test container images - Follow the Build and Test Guide to create containers with your changes and validate that they work
- Test your changes - Add or update any unit or functional tests for coverage over your changes
- Open a pull request - Follow Pull Requests to propose a change to be merged into OSMO
- Follow the existing conventions in the relevant file, submodule, module, and project when you add new code or when you extend/fix existing functionality
- Avoid introducing unnecessary complexity into existing code so that maintainability and readability are preserved
- Avoid committing commented-out code
- Write commit titles using imperative mood and these rules, and reference the Issue number corresponding to the PR. Following is the format for commit texts:
#<Issue Number> - <Commit Title>
<Commit Body>
- Make sure that you can contribute your work to open source (no license and/or patent conflict is introduced by your code)
- Push your changes to your fork:
git push origin <local-branch>- Create a Pull Request
(PR) to merge the changes from the branch of your fork into the
mainbranch of theNVIDIA/OSMOrepository- Try to keep PRs as concise as possible and address a single concern. Consider multiple PRs if you need to address multiple concerns.
- Exercise caution when selecting the source and target branches for the PR.
- Creation of a PR kicks off the code review process.
- Your PR will be reviewed by the OSMO engineering team:
- The OSMO engineering team will automatically be assigned for the review.
- Two OSMO engineers must approve your PR before it can be merged.
- Status Checks will be manually triggered by an OSMO engineer and must pass before the PR can be merged.
- Merge conflicts must be resolved before the PR can be merged.
- Merge your PR!
Your changes will be included in the next release of OSMO.
All contributions are made according to the Developer Certificate of Origin:
Developer Certificate of Origin
Version 1.1
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or
(b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or
(c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it.
(d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved.