SONiC is a vibrant open-source project that has an active community. The community invites contributors to join hands and contribute towards its development through designing, testing, feature enhancement, documentation, or active participation in various workgroups.
Governance
The project’s governance is focused on maintaining a technical meritocracy. It consists of multiple repositories, each led by a maintainer. Contributors can submit various types of work, and maintainers have the authority to merge pull requests. Conflict resolution is primarily handled within each repository, with Project Leaders intervening when necessary.
Community Mailing List
The community mailing list is known as “sonic-dev@lists.sonicfoundation.dev”. It serves as a platform for developers, contributors, and members interested in the development and ongoing activities related to SONiC like attending the weekly discussions.
Community Sub-groups
The community consists of several subgroups, each with a specific focus. These include Testing, Management, VRF, MCLAG, EVPN, Breakout, SAI Security, SONiC Application, SONiC Chassis, SONiC Platform, SONiC Kubernetes, SONiC MPLS, SONiC Yang, SAI IPSEC, SONiC-Documentation, SONiC-PINS, SONiC-OTN, SONiC DASH, and SONiC-Routing. These subgroups focus on various aspects, including testbed improvement, management standardization, VRF enhancement, MLAG options, EVPN design, port break-related features, security-related APIs, documentation, SDN interfaces, optical transport support, disaggregated APIs, and routing performance and scale.
Community Calendar
Subscribing to a SONiC calendar is a useful way to stay up-to-date with important events, updates, and releases. The calendar is hosted online and can subscribed to using calendar applications, such as Google Calendar, or Microsoft Outlook.
Weekly Meetings
Community meetings are held every week and each workgroup conducts its meetings separately. community meeting occurs every Tuesday from 8:00 a.m. to 9:00 a.m. PST, the test-subgroup meeting occurs every alternate Wednesday from 8:00 a.m. to 9:00 a.m. PST, SONiC EVPN subgroup convenes the same alternating Wednesdays but from 9:00 a.m. to 10:00 a.m. PST, SAI ECMP workgroup gathers every Friday from 2:30 pm to 3:15 pm PST, SONiC Chassis Subgroup meets every Wednesday from 9:00 am to 11:00 a.m. PST, SONiC Kubernetes Subgroup, and SAI IPSEC Subgroup both meet every alternate Friday and Wednesday, respectively, from 8:00 am to 9:00 am PST.
How to Contribute
Members can contribute by developing a feature or enhancing an existing feature. To do so, the members must inform the community of their intent, provide a rough plan about the design document availability date, code availability date, and also identify reviewer(s). Finally, ensure that your feature is merged into the codebase before the release.
Development
Creating the design document using the template provided at SONiC HLD Template, sending the design document as a pull request to the SONiC GitHub repository and the community will review the design, where feedback and comments may be provided during the review. Once the design is approved by the community and merged into the SONiC GitHub repository.
Design: Members will code features as per the approved design, create a pull request in the relevant repository, follow code nomenclature, and use appropriate programming language format (e.g., Python, C/C++, Ruby). The community will review and merge the code upon approval.
Code: Members can actively participate in SONiC’s review process by reviewing design documents, code, test cases/scripts, and related materials. They can attend design review meetings, offer feedback, and comment on pull requests to help ensure timely feature development for the roadmap.
Testing & Bug-Fixing
Members are encouraged to test SONiC on their platforms and report issues in the relevant SONiC repositories. They can also make valuable contributions by reviewing existing test cases and introducing new ones to the sonic-mgmt repository. Bug fixing is encouraged by the SONiC community. Members should join the issue triage subgroup and contribute to root cause analysis and reviews to resolve issues.
Documentation
Members should review and enhance SONiC technical documents, including the Configuration Guide, CLI Guide, and Wiki pages. They are also welcome to document deployment scenarios and use cases on the SONiC Wiki. Some relevant resources are High-level design documents, Test plans, SONiC release notes, SONiC command reference, SONiC YANG models, SONiC YANG model guidelines, and Technical Charter.
Fork & Clone
Fork the SONiC repository, clone it, and create a private branch. Make changes, add, commit, and push them. Create a pull request to the original repository with labels and details. For CLI changes, update Command-Reference.md in sonic-utilities. Optionally, use an HLD PR to track code PRs.
Release Process
The SONiC release process includes Planning (feature commitments and plans), Design (detailed document review), Coding and testing (coding, PRs, testing), and Release (branching, stabilization, release notes). Features unfinished by the branching date are deferred to the next cycle to maintain a structured development process. Regular communication is also emphasized.
Conclusion
SONiC with its active and diverse community, offers various ways for contributors to get involved. The community’s communication hub provides a platform for discussions and updates. SONiC encompasses multiple subgroups, each focused on specific aspects, offering ample opportunities for participation. Regular community meetings, workgroup sessions, and guidelines for contribution and collaboration are emphasized, promoting a structured development process for SONiC.
About the Author:
Wajahat Razi, a Network Design Engineer at xFlow Research Inc., is a professional specializing in crafting robust network architectures. With a core focus on Network Design, his expertise lies in shaping efficient and scalable network solutions. With a keen interest in cutting-edge technologies, he has extensively researched and comprehensively understands the architecture of SONiC, particularly its relevance in modern data centers. #xFlowResearch #SONiC #Networking