Develop and evolve the OpenMRS Platform, the foundational product of our community
The purpose of this document is to document the goals & tasks we believe OpenMRS needs to meet the objective in time for sharing & discussion at OMRS15.
We should strive to come up with metrics for each Goal. Each task should have one or more objective success criteria (i.e., how do we know that the task was achieved?).
We will draw out our achievable-if-resourced goals for 2016 (i.e., when defining goals & tasks for 2016, assume that we can get the resources to achieve them), use those to define the additional resources needed, and then review those and define which are at risk or will not get done without additional resources.
Team (responsible for getting goals documented)
Objective
Outputs before Singapore
Outputs after Singapore
Goals & Tasks
Philosophy and Process
Road Map 2016
Parking Lot Items:
Team (responsible for getting goals documented)
Burke Mamlin (lead), Andy Kanter, Kaweesi Joseph, Darius Jazayeri, Sri Maurya Kummamuru, Jan Flowers
Objective
Develop and evolve the OpenMRS Platform, the foundational product of our community
Outputs before Singapore
- We want to have a straw man for objectives & tasks for the Platform in 2016 that can be presented to the community and guide discussion at the Summit.
- Some idea of metrics for each goal
- Some idea of success criteria for each of the tasks
- Description to Leadership of process for estimating resource requirements (so that we all can wrangle them)
- Estimate of minimal resourcing needs
Outputs after Singapore
- A “final” set of objectives & tasks for Platform in 2016, vetted by the community.
- Objectives, Philosophy, and Process
- Technical Road Map
- Estimate of ideal resourcing needs
Goals & Tasks
Philosophy and Process
- The OpenMRS Platform Road Map is driven by consumers and managed by a coordinating group, in a well-known way
- Identify, engage, and describe users of the platform
- Document the types of users of the platform and how each can contribute and shape it over time (e.g., Implementers, Organizations, Developers, Architecture Strategic Goals)
- Metrics:
- Documented types of Platform Users on wiki(1)
- Note:
- look at implementers data available (that Judy presented)
- Look for ways to monitor usage & infer use of the platform, identify new user groups, detect problems, etc.
- Metrics:
- At least one mechanism introduced to look at platform usage patterns
- Notes:
- Consider collecting information at the time of Platform download
- Define (and fill) a role to oversee Platform user engagement - (maybe a shared role)
- Published Platform Road Map
- Publish Platform Road Map on openmrs.org
- Metrics:
- There is a Platform Road Map page on the wiki, and it is up to date for next (1-2?) releases
- There is a link from somewhere on openmrs.org to the Road Map wiki page
- Promote reference to the road map
- Metrics:
- Short links
- Links used in forums
- Describe how people or organizations can influence and contribute to the Platform Road Map
- Define & document process for how ideas, resources, and/or ideas+resources can influence the road map
- Metrics:
- The majority of New Feature tickets in the 2016 Platform release (e.g. 2.1) went through the platform road map process
- Describe how the Platform Road Map is prioritized, and how people or organizations can influence the prioritization. (Parking lot items)
- Define & document how milestones are prioritized
- Concretely describe how a platform consumer can raise the priority of an item of interest.
- Have a process identified of how an implementer can contribute back to the platform
- The OpenMRS Platform will be released on a predictable schedule
- Document and announce 2016 OpenMRS Platform release schedule
- Metrics:
- Documented page describing the release process and schedule
- At least one new release of the Platform in 2016, that happens in the scheduled month
- Define role & expectations of Release Management Lead (for Platform & Ref App)
- Identify and describe the release process and schedule
- Manage the release process by facilitating the release managers
- Keeping the release process current
- Communicate effectively with the community before releases to anticipate issues (e.g., info for module authors, distributions, etc.)
- The OpenMRS Platform will be scalable & reliable
- Define the current limitations (concurrency, number of obs, number of patients, number of concepts, …)
- Upgrade and Installation Testing as part of release process
- Installation testing automated, maybe through CI
- Upgrade path identified and displayed in the release schedule/ platform release timeline
- Identify and do some platform upgrades for known implementations to come up with some summary of the amount of effort needed to upgrade to the platform being released (needs discussion)
- Roadmap includes a spike on scaling OpenMRS bigger than anyone has done so far, and identifying bottlenecks to be addressed
- The OpenMRS Platform will stay current, relevant, and accessible
- Create a clear process for regular reviews of that architecture
- Create an OpenMRS Platform Architecture Review Board
- Identify and publish Quarterly/Half-year dates to have this architecture review
- Define what the Platform is and what is should/could be
- Define which modules can be incorporated into the platform and how those can be supported and sustained
- Define the governance for what is in the platform
- Add Define and begin building the Web framework component for the Platform (Module Management, Open Web Apps Reusable Components, openmrsjs, etc.)
- Postgres Compatibility
- The OpenMRS community will ensure consistent, productive development resources exists to build and refine the OpenMRS Platform
- Sufficient “always on” resources to empower/leverage the volunteer community to build the OpenMRS Platform as effectively as possible
- Be able to identify and effectively use product owners and subject matter expertise
- Metrics:
- Different product owners and subject matter experts identified and listed (within 6 months)
- Build a reliable technical project management team
- Metrics:
- At least one full time technical project manager (within 3 months)
- Improve our ability to convert design ideas to actionable tickets
- Metrics:
- At least one BA (within 6 months)
- Some level of UX support (need to determine based on 2016 experience if this is always-on or can be ad-hoc)
- Reliably and quickly review & respond to issues (bugs, enhancements, etc.) for the Platform
- Metrics:
- Handled by the developer team.
- Number of unvetted Platform tickets is shrinking (not growing)
- Platform tickets get a response within 3? working days
- Reliably and quickly review and merge volunteer contributions
- Metrics:
- Continues to be handled by the developer team?
- All OpenMRS Platform pull requests reviewed and/or merged within 3? working days
- All OpenMRS Platform merged contributions go through QA within 5? working days
- Constantly iterate on improving workflow and experience for Platform development, so developing for OpenMRS is a great (and always improving) experience
- Metrics:
- Development environment can be set up in less than 15 minutes
- Hello World can be achieved in less than 1 hour
- Updated Developer’s Guide in 2016
- Produce and maintain technical documentation, and make it easy to find
- Metrics:
- Published living REST/FHIR documentation
- Published living Java API documentation
- Published and updated Architecture Overview
- Lead an external review of platform documentation
- A process for maintaining and improving documentation
- Documentation is commonly referenced in community discussions
- Cultivate experts to advise on a regular basis (e.g. FHIR & REST expertise, API expertise, and other technical expertise relevant to the platform)
- Metrics:
- At least one expert identified (within 12 months)
- "Sufficient dedicated development resources" to consistently implement Platform road map items and respond to critical bugs with a minimum velocity, as volunteer effort fluctuates
- Technical Project Manager
- BA
- Dedicated developers
- ≥4 devs focused (in the zone) on a development activity/sprint
- ≥1 dev supporting the community
- ≥1 dev working directly with an implementation
- QA
- Technical documentation
- Assumption: no need for dedicated UX. (Verify this over 2016.)
- Assumption: infrastructure (dev ops) supplied by community
- Perhaps educators/implementation specialists, others, might be a part of the team (volunteers)
- Understand and Grow the development team
- Metrics to assess contributions to github
- Create tools and processes that help developers be Devs productive in 1 hour
- Road Map for SDK
- ≥10 people doing code review + pull requests
- ≥4 within 3 months, ≥7 within 6 months, ≥10 within 12 months
- ≥10 active /dev/5s (within 12 months)
- Begin defining “lieutenants” to delegate authority (e.g. volunteer tech lead for a specific portion of OpenMRS, who thinks about this ≥ weekly and has some authority & accountability in the area)
- REST and FHIR web services
- API
- Security
- Databases
- Documentation
- …
2016 Resourcing Goal (Dedicated resources)
- 1 FTE of Technical Project Manager (within 3 months)
- 1 FTE of Lead BA with ability to build strategy & lead volunteers -OR- 2 FTE Entry-Level BAs (within 6 months)
- Three additional dedicated developers (within 6 months)
- ≥4 devs focused (in the zone) on a development activity/sprint
- ≥1 dev supporting the community
- ≥1 dev working directly with an implementation
- 50% FTE of QA (within 12 months)
- 100% of an FTE of technical documentation (within 12 months)
Notes
- Additional resources to support modules added to the platform
- Discuss & define the list of modules that belong in the platform (e.g., reporting, idgen, …)
- Map out the lifecycle of a module and criteria needed to become part of the platform
- Stable
- Well-tested
- Used by ≥2 implementations
- Headless (does not depend on UI framework)
- Consider an OpenMRS IDE package
- 50% QA is awfully low. Rule of thumb is often 1-2 QA/dev
Objective 1.1: The OpenMRS Platform Road Map is driven by consumers and managed by a coordinating group, in a well-known way
Initiative/Activity | 2016 Milestone | Lead | Performance Measures |
Identify, engage, and describe users of the platform | Document the types of users of the platform and how each can contribute and shape it over time (e.g., Implementers, Organizations, Developers, Architecture Strategic Goals) | TBD | Documented types of Platform Users on wiki. |
Look for ways to monitor usage & infer use of the platform, identify new user groups, detect problems, etc. | TBD | At least one mechanism introduced to look at platform usage patterns |
Define (and fill) a role to oversee Platform user engagement - (maybe a shared role) | TBD |
|
Published Platform Road Map | Publish Platform Road Map on openmrs.org | TBD | - There is a Platform Road Map page on the wiki, and it is up to date for next (1-2?) releases
- There is a link from somewhere on openmrs.org to the Road Map wiki page
|
Promote the road map | TBD | - Short links
- Links used in forums
|
Describe how people or organizations can influence and contribute to the Platform Road Map | Define & document process for how ideas, resources, and/or ideas+resources can influence the road map | TBD | The majority of New Feature tickets in the 2016 Platform release (e.g. 2.1) went through the platform road map process |
Describe how the Platform Road Map is prioritized, and how people or organizations can influence the prioritization. | Define & document how milestones are prioritized | TBD | TBD |
Concretely describe how a platform consumer can raise the priority of an item of interest. | TBD | TBD |
Have a process identified of how an implementer can contribute back to the platform | TBD | TBD |
|
|
|
|
Objective 1.2: The OpenMRS Platform will be released on a predictable schedule
Initiative/Activity | 2016 Milestone | Lead | Performance Measures |
Document and announce 2016 OpenMRS Platform release schedule | OpenMRS Platform release schedule documented | TBD | OpenMRS Platform release schedule documented on the wiki. |
OpenMRS Platform release schedule announced | TBD | Announcement to community describing the Platform release schedule. |
Define role & expectations of Release Management Lead (for Platform & Ref App) | TBD |
|
|
|
|
|
Objective 1.3: The OpenMRS Platform will be scalable & reliable
Initiative/Activity | 2016 Milestone | Lead | Performance Measures |
Define the current limitations to scale | Define concurrency limitations | TBD | Document number of concurrent users supported on a specific (standard-sized) implementation. |
Define content limits (obs, patients, concepts, …) | TBD | Document number of rows before performance is significantly affected or bottlenecks uncovered for primary resources (patients, encounters, obs, concepts). |
Upgrade and installation testing | Installation testing through CI. |
|
|
Upgrade testing through CI. |
|
|
Describe effort needed for upgrade path for common scenario(s). |
|
|
Objective 1.4: The OpenMRS Platform will stay current, relevant, and accessible
Initiative/Activity | 2016 Milestone | Lead | Performance Measures |
Create a clear process for regular reviews of the Platform architecture | Identify and publish Quarterly/Half-year dates to have this architecture review. | TBD |
|
Define what the Platform is and what is should/could be | Define which modules can be incorporated into the platform and how those can be supported and sustained | TBD |
|
Describe strategy and road map for the boundaries of the platform | TBD |
|
Define the governance for what is in the platform | TBD |
|
Increased database compatibility | Confirm MySQL and MariaDB support | TBD |
|
Add PostgreSQL support | TBD |
|
Objective 1.5: The OpenMRS community will ensure consistent, productive development resources exists to build and refine the OpenMRS Platform
Initiative/Activity | 2016 Milestone | Lead | Performance Measures |
Sufficient “always on” resources to empower/leverage the volunteer community to build the OpenMRS Platform as effectively as possible | Be able to identify and effectively use product owners and subject matter expertise | TBD | Different product owners and subject matter experts identified and listed (within 6 months) |
Build a reliable technical project management team | TBD | At least one full time technical project manager (within 3 months) |
Improve our ability to convert design ideas to actionable tickets | TBD | - At least one BA (within 6 months)
- Some level of UX support (need to determine based on 2016 experience if this is always-on or can be ad-hoc)
|
Reliably and quickly review & respond to issues (bugs, enhancements, etc.) for the Platform | TBD | - Handled by the developer team.
- Number of unvetted Platform tickets is shrinking (not growing)
- Platform tickets get a response within 3? working days
|
Reliably and quickly review and merge volunteer contributions | TBD | - Continues to be handled by the developer team?
- All OpenMRS Platform pull requests reviewed and/or merged within 3? working days
- All OpenMRS Platform merged contributions go through QA within 5? working days
|
Constantly iterate on improving workflow and experience for Platform development, so developing for OpenMRS is a great (and always improving) experience | TBD | - Development environment can be set up in less than 15 minutes
- Hello World can be achieved in less than 1 hour
- Updated Developer’s Guide in 2016
|
Produce and maintain technical documentation, and make it easy to find | TBD | - Published living REST/FHIR documentation
- Published living Java API documentation
- Published and updated Architecture Overview
- Lead an external review of platform documentation
- A process for maintaining and improving documentation
- Documentation is commonly referenced in community discussions
|
Cultivate experts to advise on a regular basis (e.g. FHIR & REST expertise, API expertise, and other technical expertise relevant to the platform) | TBD | At least one expert identified (within 12 months) |
"Sufficient dedicated development resources" to consistently implement Platform road map items and respond to critical bugs with a minimum velocity, as volunteer effort fluctuates | Resources to support a minimum team within the community. | TBD | - Technical Project Manager
- BA
- ≥ 6 Dedicated developers
- QA
- Technical documentation
|
Understand and Grow the development team | Metrics to assess contributions to github | TBD | Automated or semi-automated regular metrics contributing to a dashboard of community contributions in GitHub. |
Create tools and processes that help developers be Devs productive in 1 hour | TBD | A new, naive developer can create a running Hello World module within one hour. |
Grow code review capacity | TBD | ≥4 within 3 months, ≥7 within 6 months, ≥10 within 12 months |
Grow active /dev/5s | TBD | ≥10 active /dev/5s (within 12 months) |
Begin defining “lieutenants” to delegate authority (e.g. volunteer tech lead for a specific portion of OpenMRS, who thinks about this ≥ weekly and has some authority & accountability in the area) | TBD | One or more “lieutenants” named. |
Road Map 2016
- The OpenMRS Platform will have a fully realized and well documented API for health record keeping functions
- Document the OpenMRS Platform functional architecture
- Living REST API documentation (i.e., Interactive REST documentation provided by a module with static documentation drawn from source code)
- The OpenMRS Platform will be scalable (1-2 dedicated devs)
- Perform formal load testing of the OpenMRS Platform
- Design and resource plan for clustering support
- Introduce Higher Level Functions within the Platform
- Initial implementation of decision support API
- Include core terminology services in platform (support under Objective 6)
- 3 mo: publish/subscribe
- 6 mo: proposals, collection
- 12 mo: all concept management within platform, not just packaging?
- Assess/create terminology needs road map for upcoming use cases
- Include indicators in the CIEL dictionary
- Move toward vision of vertical packaging
- Make localization of concepts easier
Parking Lot Items:
Strategic Goal 1:
Point 4:
How can the tickets be prioritized:
- Following the normal process - will be completed in the order they are picked up - (The ones high in the priority of the list will be encouraged)
- Consumers coming with contributors can complete the tasks after they have been added to the release roadmap
- Volunteers can be hired by consumers with funding to complete the tasks they want to get released.