How To Submit A Viewer Change
This is not the place to start if you want to change the Viewer.
If you are interested in proposing a Viewer feature or modification, see How To Propose A Viewer Feature.
This page is one part of the Viewer Integration and Release Processes and, before you belong here, you should already have gotten your proposed change accepted (strictly speaking, if you want to do the work of implementing the change first, that's up to you, but you still have to go back and get the idea accepted before you submit the code).
For general advice on how to prepare changes so that they can get through the review and submission process easily, see Submitting code.
Submitting an Integration Request
Commit access to the viewer-development repository is managed by the Snowstorm team.
A full description of the Snowstorm workflow is below. The criteria to be met before submitting an integration request, and complete instructions for completing a merge request, are described in the following sections.
Readiness Criteria
Changes must meet all of the Development Integration Criteria before it can be pulled to the Development repository.
- Functionality must have been reviewed and accepted by the Product Owner:
- Normally, this means that the item must be on the current Sprint Backlog for the Snowstorm Project Team or some other Linden viewer development team, and has been reviewed by the Product Manager for that team. See How To Propose A Viewer Feature.
- Design and code must have been reviewed by competent reviewers.
- Reviewer(s) must be identified in the Jira item(s) used to track the change.
- The strongly preferred way to review code is to create a fork of the viewer-release repository and commit the changes to that fork, then fill in the URL for that fork in the "Repository Fixed In" field of a Jira issue.
- There must be a test plan
- The test plan must describe in detail how Integration QA can validate the modified behavior.
- For bug fixes, putting the test plan into a Jira comment is acceptable (since the issue should already contain a documented way to reproduce the problem, this should not be much new work).
- For features, links to wiki pages are preferred.
- For features especially, building and distributing a viewer from the Project repository for live testing is strongly encouraged.
- The test plan must describe in detail how Integration QA can validate the modified behavior.
- The Project repository must have merged in the latest changes from viewer-release.
- The results must be validated by building viewers for all platforms and doing at least minimal viewer testing.
- There must be a Contribution Agreement on file from each contributor to the change that is not a Linden employee or contractor.
- External contributions must include the appropriate updates to
doc/contributions.txt
- If you already have one or more entries in
contributions.txt
, add new ones at the appropriate positions (sorting yours, if desired).
- External contributions must include the appropriate updates to
Linden Submissions
After the code has met all of the above-stated Readiness Criteria, submit a Merge Request as detailed on the (internal) Viewer Release Workflow page.
Open Source Submissions
Open source contributors should be working on issues that are already in the Snowstorm Jira project. Before submitting (or even doing work) it is best to have first made a proposal and had it approved as described on the Snowstorm Project page (any submission will go through this review anyway, and not doing it at the outset may mean doing work that either isn't accepted at all or will have to be significantly modified).
The following describes the workflow for issues in the Snowstorm Jira project. Issues enter this workflow either by being moved from the BUG project, or when a proposal outside jira is accepted and a STORM issue created directly. The same workflow is used for the Open Development Jira project, but issues there are only for changes to the process of building the viewer, not for changes to how the viewer works.
Open this link in a new window to see the workflow diagram.
Note: You can see the workflow, with the current step for an issue highlighted, by clicking on the '(View Workflow)' link next to its Status in the issue display. |
- Open
- An issue that is ready to be worked on; it may or may not be Assigned to someone. When someone takes responsibility for it, the issue should be Assigned to them and they should execute the Start Progress transition to move the issue to show that work has begun (as a side effect, this Assigns the issue to that user).
→ Start Progress →
- In Progress
- When a developer has finished work, they:
- set the Branch/Repo Fixed In and Changeset/Revision ID fields to point to a public mercurial repository containing the change
- set the Code Review field to the URL of the Diff display in the Bitbucket "Compare" display.
- execute the transition to indicate that it is ready:
→ Ready For Review (assignee only) →
- Code Review
- Reviews may come from other open source developers and/or Lindens. The developer should respond to issues raised in the review; when the code passes code review, Oz will send it to the QA team (sometimes bundled with other issues in a test build) and transition the issue
→ Pass Code Review →
- Team QA
- Linden internal QA team will test the issue using the test plan in the issue and the existing regression tests, and if it passes,
→ Pass Team QA →
- Product Review
- This is the final acceptance review by the Linden Product Team; when it has been approved for integration
→ Approved →
- Integration Ready
- which indicates that it is eligible to be merged to viewer-development; when that has happened
→ Integrated →
- Integrated
- where it will again be tested for problems that may have arisen due interactions with other new development
→ Pass IQA →
- Passed IQA
- where it will remain until the next release is created from viewer-development; the final transition
→ Close →
- Closed
- because it's in the Viewer!
of course, each of these steps also include the possibility of some failure, which will transition the issue back to Open for further work, and then the cycle begins again.
Tracking
You can see the current state of the Snowstorm issues on the shared "Snowstorm" dashboard in Jira.