Trying to get involved in an open source project can feel like a daunting task. This section provides some suggestions and pointers for those who want to get involved.
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.
First and foremost, anyone interested in contributing in any way 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 code contributors.
Tutorials and Documentation
As one of its tasks, the project provides up-to-date tutorials 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.
Finding Tasks to Work On
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:
- Go to the ONOS project JIRA, and log in with your account. You will be taken to the Project Dashboard.
- Search for Starter tasks by going to Issues > Search for issues. This will take you to the Search page.
- At the search bar, enter labels = starter and assignee = null , and hit enter. This will bring up all Starter tasks that are unassigned. Each task has a name of format ONOS-[number] (ONOS-255 for our example). Selecting a task will display its details.
- Once you find an issue that you would like to work on, assign it to yourself by selecting "Assign to me" under People. Your name should be under the Assignee field, and you should see a message "ONOS-[number] has been assigned".
- To verify that you now own the issue, go to Agile > ONOS Scrum Board. You will be taken to the Work view (swim lane) of the Scrum board, which shows the progress of all current tasks based on who is working on them. Your name should appear as one of the entries (they are alphabetical, so you may need to scroll a bit), with your new issue under the To Do column (the blue entry in the figure below). Selecting the issue will display its details in a sidebar to the right.
If your name or your task doesn't appear, select the Plan view, and search for your issue - it should appear as an entry under Backlog. Drag your issue from Backlog to the dotted box for the current sprint (Sprint 1 in the figure below).
Confirm when the Move Issue dialog box appears, and check the Work view again.
- Once you are ready to work on the task, drag the issue from the To Do column to the In Progress column. Similarly, once you are finished, drag the issue from In Progress to Resolve Issue under Done. When your changes are accepted by the project, it can be moved to Close Issue under Done.
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 is 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.