CONTRIBUTING.md
Thank you for your interest in contributing to the RuFaS (Ruminant Farm Systems) program, a collaborative open-source initiative.
Contributions from individuals and organizations across disciplines are welcomed. Whether you're a researcher, software developer, student, or stakeholder, your input helps improve the scientific accuracy, usability, and impact of RuFaS.
Contributions to RuFaS can fall in any of the five categories described below. These contribution categories represent a progression in involvement from those that wish to only use the codebase, to those wishing to contribute to or assume various levels of responsibility for the maintenance and ongoing development of RuFaS.
Description: Users are individuals or organizations who have a need for the RuFaS modeling environment and utilize it for their own purposes, such as research, education, analysis, and software development. They provide valuable feedback on its functionality, usability, and accuracy, helping to identify areas for improvement. There are no requirements to be a RuFaS user. All users are encouraged to participate in RuFaS through the following activities:
User Activities:
- Utilize the RuFaS modeling environment for various applications respecting the
code of conduct.
- Provide feedback on model performance and usability through GitHub or by email at contact@rufas.org.
- Participate in community discussions and forums through GitHub.
- Report bugs and suggest enhancements through GitHub.
- Advocate for RuFaS based on their user experience.
Description: Contributors are individuals or organizations who actively participate in the development and improvement of RuFaS. They submit code, documentation, and other non-coding contributions for review and consideration by RuFaS maintainers through GitHub issues and pull requests. Contributors play a crucial role in expanding RuFaS capabilities and ensuring its scientific accuracy. There are no requirements or selection process to become a RuFaS contributor. All individuals and organizations, many of whom may already be RuFaS users, are encouraged to submit any of the following contributions.
Contributions:
- Submit code, documentation, and scientific literature for review.
- Engage in scientific discussions through collaboration channels to build consensus.
- Provide peer reviews for other contributions.
- Suggest new features and improvements.
- Contribute to user support, testing, and bug reporting.
- Create and update project documentation.
- Design and develop user interfaces and artwork.
- Recommend the project to other users and contributors.
- Help with new user onboarding.
Description: Sponsors are organizations or individuals who contribute funds for RuFaS maintenance and development. Sponsors recognize the intrinsic value of RuFaS and contribute funding with the primary aims of strengthening and enhancing the program while upholding its open-source principles. Their financial contributions are essential for keeping RuFaS reliable and operating effectively, the development of new features, and the education of the community. Financial support from sponsors is crucial for keeping RuFaS an open-source initiative and fostering a robust and innovative environment for all users, contributors, and maintainers. Please email contact@rufas.org for more information on becoming a sponsor.
Description: Maintainers are trusted individual contributors who have assumed responsibility for one or more RuFaS components and are committed to maintaining and improving them. They can make code, documentation, and other non-coding contributions through GitHub issues and pull request submissions. Maintainers are also responsible for integrating contributions, ensuring scientific and code quality, and maintaining the integrity of the RuFaS modeling environment. Eligibility to obtain maintainer privileges is based on demonstrated willingness and ability to participate collaboratively, and alignment with RuFaS objectives. Contributors seeking maintainer privileges are nominated by existing maintainers and approved by the RuFaS Program Management Leadership (PML). Maintainers may contribute to RuFaS by assuming any of the following responsibilities.
Maintainer Responsibilities:
- Integrate and review submitted code and documentation.
- Ensure code quality and adherence to project standards.
- Collaborate with contributors and PML to implement new features.
- Maintain the integrity and security of the codebase.
- Mentor new contributors and help build consensus within the community.
- Contribute to project documentation and shared vision.
- Nominate contributors for access to developer privileges.
- Inform the decision-making processes regarding code releases.
Description: The RuFaS Program Management Leadership (PML) consists of dedicated individual maintainers who have assumed overall responsibility for the active management of the program, which includes, without limitation, the creation and maintenance of open-source codebase for distribution to the public at no charge. They are responsible for providing program oversight, setting and communicating RuFaS governance and strategic objectives, ensuring alignment with the community's needs, and approving all codebase releases. The PML also handles sensitive issues, such as making decisions when community consensus cannot be reached, revoking maintainer privileges when appropriate, and resolving copyright or licensing disputes if they arise. Current PML members include the Scientific Director, the Director of Software Development, and the Director of Strategic Governance and Partnerships. PML functioning is actively supported by the RuFaS Program Coordinator and RuFaS Techno-Functional Liaison, who provide essential operational and strategic assistance to ensure smooth execution of responsibilities. Maintainers are offered PML privileges after a consensus vote by the existing PML members when appropriate or necessary. Maintainers considered for PML privileges show deep understanding of the program's objectives, high dedication to the program, and contribute to improving or maintaining the program's vision, strategic direction, reputation, and sustainability. PML members contribute to RuFaS by assuming any of the following responsibilities.
PML Responsibilities:
- Provide strategic direction and governance for the program.
- Approve governance changes.
- Nominate and elect new PML members.
- Approve and revoke developer privileges.
- Ensure the codebase is compliant with copyright and licensing standards.
- Maintain project resources and manage community engagement.
- Setting and upholding open development values including the code of conduct.
- Oversee consensus-building for the integration and synthesis of scientific evidence.
- Facilitate collaboration between different roles and stakeholders.
- Represent the project in external forums and partnerships.
- Cast binding votes on decision-making processes.
- Approve all codebase releases
These contribution categories are designed to foster a collaborative environment while ensuring strong leadership and governance for RuFaS.
RuFaS adopted the code of conduct to ensure a welcoming and inclusive environment for all users, contributors, sponsors, and maintainers. By participating in RuFaS, you agree to uphold its standards. Report code violations by email at contact@rufas.org.
Please familiarize yourself with the coding conventions, style, versioning policy, and code review process before submitting pull requests for coding contributions.
- Using Flake8
- Using Mypy
- Using Python's Black Formatter
- Using Sphinx
- RuFaS Versioning Policy
- Code Review
Please familiarize yourself with the guidance on How to Write a Design Document before submitting a pull request for non-coding contributions. For questions regarding other non-coding contributions, please email contact@rufas.org.