Our process is a living, breathing thing. We strive to have regular retrospectives that help us shape and adapt our process to our team's current needs. This document attempts to capture the broad strokes of that process in an effort to:
- Strengthen community member involvement and understanding
- Welcome feedback and helpful suggestions
Include issue lifecycle diagram
GitHub issues are the best way to provide feedback, ask questions,
and suggest changes to the OHIF Viewer's core team. Community issues generally
fall into one of three categories, and are marked with a
triage label when
|Issue Template Name||Description|
|Community: Report 🐛||Describe a new issue; Provide steps to reproduce; Expected versus actual result?|
|Community: Request ✋||Describe a proposed new feature. Why should it be implemented? What is the impact/value?|
|Community: Question ❓||Seek clarification or assistance relevant to the repository.|
table 1. issue template names and descriptions
Issues that require
triage are akin to support tickets. As this is often our
first contact with would-be adopters and contributors, it's important that we
strive for timely responses and satisfactory resolutions. We attempt to
accomplish this by:
- Responding to issues requiring
triageat least once a week
- Create new "official issues" from "community issues"
- Provide clear guidance and next steps (when applicable)
- Regularly clean up old (stale) issues
:pencil: Less obviously, patterns in the issues being reported can highlight areas that need improvement. For example, users often have difficulty navigating CORS issues when deploying the OHIF Viewer -- how do we best reduce our ticket volume for this issue?
Community issues serve as vehicles of discussion that lead us to "backlogged issues". Backlogged issues are the distilled and actionable information extracted from community issues. They contain the scope and requirements necessary for hand-off to a core-team (or community) contributor ^_^
|Bugs||An issue with steps that produce a bug (an unexpected result).||Bug: Verified 🐛|
|Stories||A feature/enhancement with a clear benefit, boundaries, and requirements.||Story 🙌|
|Tasks||Changes that improve [UX], [DX], or test coverage; but don't impact application behavior||Task: CI/Tooling 🤖, Task: Docs 📖, Task: Refactor 🛠, Task: Tests 🔬|
table 2. backlogged issue types (full list of labels)
Issue Curation ("backlog grooming")
If a GitHub issue has a
task label; it's on
our backlog. If an issue is on our backlog, it means we are, at the very least,
committed to reviewing any community drafted Pull Requests to complete the
issue. If you're interested in seeing an issue completed but don't know where to
start, please don't hesitate to leave a comment!
While we don't yet have a long-term or quarterly road map, we do regularly add items to our "Active Development" GitHub Project Board. Items on this project board are either in active development by Core Team members, or queued up for development as in-progress items are completed.
Incoming Pull Requests (PRs) are triaged using the following labels. Code review is performed on all PRs where the bug fix or added functionality is deemed appropriate:
|PR: Bug Fix||Filed to address a Bug.|
|PR: Draft||Filed to gather early feedback from the core team, but which is not intended for merging in the short term.|
|PR: Awaiting Response 💬||The core team is waiting for additional information from the author.|
|PR: Awaiting Review 👀||The core team has not yet performed a code review.|
|PR: Awaiting Revisions 🖊||Following code review, this label is applied until the author has made sufficient changes.|
|PR: Awaiting User Cases 💃||The PR code changes need common language descriptions of impact to end users before the review can start|
|PR: No UX Impact 🙃||The PR code changes do not impact the user's experience|
We rely on GitHub Checks and integrations with third party services to evaluate changes in code quality and test coverage. Tests must pass and User cases must be present (when applicable) before a PR can be merged to master, and code quality and test coverage must not changed by a significant margin. For some repositories, visual screenshot-based tests are also included, and video recordings of end-to-end tests are stored for later review.
Releases are made automatically based on the type of commits which have been merged (major.minor.patch). Releases are automatically pushed to NPM. Release notes are automatically generated. Users can subscribe to GitHub and NPM releases.
We host development, staging, and production environments for the Progressive Web Application version of the OHIF Viewer. Development always reflects the latest changes on our master branch. Staging is used to regression test a release before a bi-weekly deploy to our Production environment.
Important announcements are made on GitHub, tagged as Announcement, and pinned so that they remain at the top of the Issue page.
The Core team occasionally performs full manual testing to begin the process of releasing a Stable version. Once testing is complete, the known issues are addressed and a Stable version is released.