Trying to get Thanks for your interest in contributing to ONOS. We know that getting involved in an open source project can feel like a daunting task. This section provides some suggestions and pointers to make this jump smoother for those who want to get involveddaunting, so this section provides information to make this jump smoother. If you have any questions about any of this, please check out the contact information below.
|Table of Contents|
Types of Contribution
Submitting code as a developer is certainly a way to contribute to a project, but not the only way. There are many aspects to an open source project where contributors can help, including (but not limited to):
- Testing - Functionality (unit and integration) testing, bug hunting, and implementing test frameworks
- UI design - Developing plugins for, and enhancing the GUI
- Documentation - Documenting system usage and architecture, and writing tutorials for the ONOS wiki document set
- Development - Writing applications, building use cases, and submitting bug fixes and enhancements to the existing code base
These roles are fluid - any work that modifies the system will need to be tested and documented, and documenting an aspect of the system or its usage may involve reading, running, and testing pieces of code so that you can understand them well enough to write about them.
- Development: Help build ONOS. Opportunities range from coding new features to creating unit tests to bug fixes to making sample applications. Learn how to get involved with coding.
- Documentation: Help create clear, concise documentation. Identify and add whatever is missing and fix what is unclear or just plain wrong. Learn how to get involved with documentation.
- Deployment: Help us show the world that ONOS can work in real networks by deploying ONOS and its applications on your network. Learn how to get involved with deployments.
- Quality: Help test ONOS – whether it’s the platform, sample applications or documentation. Work with the Jira issues to ensure that they are clear, complete, and the problems are reproducible. Learn how to get involved with testing.
- User experience and UI: Help ensure that the ONOS user experience is WOW – not blah! Help create a unique look, feel, and experience for ONOS users. Learn how to get involved with the UI.
There are other ways to contribute to ONOS. For instance, you may be interested in running a training event in your area. If there is something you're interested in doing but don't see information about that here, please contact us.
- Mailing lists: Anyone interested in contributing should join onos-discuss. This is the primary mailing list for general questions and discussions. There are several other mailing lists that you may want to join, such as onos-dev for ONOS developers.
- Chat: Join us on Slack for real-time conversations about ONOS. There is a general channel as well as channels dedicated to specific topics. Feel free to stop by and ask questions and introduce yourself.
Tutorials, Videos and Documentation
As one of its tasks, the The project maintains up-to-date tutorials for and videos for both users and contributors. In general, those interested in contribution should at least complete the Basic ONOS Tutorial, as it introduces many of ONOS's features.
- Learn how to install, run, and use ONOS, as per the User's Administrator Guide
- Learn how to set up the development/test environment and the usage of JIRA and Gerrit, and testing and coding guidelines as per the Developer 's Guide
- Reference relevant parts of the Architecture and Internals Guide, Javadocs, and Developer's Guide Appendices
Readers For step 2. of the above, readers interested in contributing to development should refer to Contributing to the ONOS Codebase, and readers interested in the documentation effort should focus on Contributing to ONOS Documentation as step 2. of the above.
An account is required to access to the various contributor services and access rights, such as JIRA issue creation. An account may be created by registering hereat https://www.opennetworking.org/register/.
Contributors begin as submitters, and may progress to committer status. In a similar vein, contributors may work on the existing ONOS codebase and use cases, or, with approval of the technical steering group, introduce their own work as a sanctioned project. ONOS Governance describes the project model that the ONOS Project follows in further detail.
The ONOS Project is a composite of the ONOS SDN platform itself and the various projects using it (applications and use cases). Information about the ongoing projects may be found on [Projects]. Many of these projects will have an Epic associated with them so that the tasks associated with them may easily be found, as described in the next section.
Finding tasks on JIRA
The ONOS Project keeps track of various tasks with JIRA. In specific, we maintain a category for tasks, labeled as "Starter", which have lower barriers of entry. These Starter tasks are intended for newcomers to the project that wish to work on existing material.
To find current Starter tasks:
If you have a certain type of task you would like to work on, such as testing, you may also filter the search by epic name by appending "Epic Name" = <Epic>. For example:
labels = starter and assignee = null and "Epic Name" = Test
Will return all available Starter tasks related to testing. Follow Finding Issues by Epic to view available epics.
|More information about searching JIRA can be found in Finding, Claiming, and Working On Issues.|
Proposing a new project or task
Anyone can approach the mailing lists with project ideas and proposals. For example, if a developer has written a new application or a provider for a new protocol, and wishes to contribute it back to ONOS, it is a good idea for them to drop a line on the mailing list for feedback and further suggestions, rather than to submit a pull request without a warning.
Creating Tasks and Sub-Tasks
Sometimes, you may be asked to file an new task/issue or subtask, based on a conversation you had on a mailing list.
To create a new issue, take a look at this page. To create a subtask from the Work view, click on a task, and in the side panel, go to the button on the upper right corner (...) > Create Sub-Task:
This will bring up a form similar to the Create Issue form described in the aforementioned link that can be filled out.
If you are working on a task, and are stuck, don't be afraid to ask questions - it's certainly in everyone's interest to move the project forward! However, please be sure to search existing documentations and mailing list archives before doing so, or the response you get may consist of a link to a page or something similarly terse. Likewise, If you have log files, or steps for recreating an odd behavior, attach or mention those to your question as well - Just saying "It's broken" without the specifics will just result in a response asking for those materials.
Submitting Bug Reports
If you encounter unexpected or incorrect behavior, first make sure that you understand what the correct behavior should be (and why it should be that way), and confirm that you are using the system correctly based on the documentation. Try to isolate the issue as much as possible, by finding the minimum set of steps (or a small, simple piece of code) that can reliably reproduce the problem. Make sure to include a transcript or log of any input steps or output. Finally, to submit the bug report itself, follow the instructions at Using Jira to create an issue: bugs, feature requests, documentation.