Bahmni Feature Proposal & Contribution Guide
The guidelines define the mandatory process for proposing, reviewing, approving, and contributing enhancements, features, architectural changes, or new modules to Bahmni.
- 1 Objectives
- 2 Scope
- 3 Contribution Flows
- 4 Flow 1: Minor Enhancements and Bug Fixes
- 5 Flow 2: Major Enhancements and New Features
- 5.1 Step 1: Submit Proposal on OpenMRS Talk
- 5.1.1 Concept Brief: Required Sections
- 5.1.1.1 1. Problem Statement
- 5.1.1.2 2. Proposed Solution
- 5.1.1.3 3. Impact Assessment
- 5.1.1.4 4. User Experience
- 5.1.1.5 5. Architecture and Technical Design
- 5.1.1 Concept Brief: Required Sections
- 5.2 Step 2: Community Assessment
- 5.3 Step 3: Product Advisory Team Review
- 5.4 Step 4: Functional Sign-Off
- 5.5 Step 5: Development Governance
- 5.1 Step 1: Submit Proposal on OpenMRS Talk
- 6 Development Governance
- 7 Merge into Main Branch & Sanity Testing
- 8 Guideline Review
Objectives
The objective is to ensure:
Alignment with Bahmni’s product strategy and roadmap
Transparency within the community
Architectural integrity and upgrade safety
UX consistency across modules
Long-term maintainability
Avoidance of duplication
Scope
These guidelines apply to:
Category | Details |
|---|---|
New Feature Proposals and Major Enhancements | Proposals for new functionalities or capabilities, or any major enhancements. |
Minor Enhancements or Bug Fixes | Minor improvements to existing features or bug fixes. |
Workflow Changes | Modifications to operational processes or user flows. |
Architectural Modifications | Changes to the underlying system architecture. |
New Module Proposals | Proposals for the introduction of new software modules. |
Significant UX Change | Any substantial alteration to the user experience. |
Contribution Flows
There are two contribution flows. Choose the flow based on the size and impact of the proposed change.
Flow | Use this flow when | Entry point |
|---|---|---|
Flow 1: Minor Enhancements and Bug Fixes | The change is small, localised, and does not significantly alter existing functionality. | Create a JIRA issue. |
Flow 2: Major Enhancements and New Features | The change introduces new functionality, significantly changes workflows or UX, affects architecture, or introduces a new module. | Start an OpenMRS Talk discussion with a Concept Brief. |
Flow 1: Minor Enhancements and Bug Fixes
Minor enhancements and bug fixes follow a simplified contribution process. They do not require a Concept Brief or community proposal unless the change significantly alters existing functionality.
Step 1: Create a JIRA Issue
Create a JIRA issue in the appropriate Bahmni project with:
https://bahmni.atlassian.net/jira/software/c/projects/BAH/boards/37
Summary: concise title.
Issue type: Bug, Improvement, or Task.
Description: problem, current and expected behaviour, steps to reproduce or proposed solution, and impact.
Supporting information: screenshots, logs, API responses, mockups, or related discussions.
Labels: relevant tags such as
bug,enhancement,UI,EMR, orOrders.
Step 2: Maintainer Review
If the issue is straightforward and the scope is clear, development may begin after maintainers review and prioritise the JIRA issue.
If the proposed change affects existing workflows, introduces new functionality, or requires design decisions, maintainers may request an OpenMRS Talk discussion before implementation.
Step 3: Development Governance
Once the issue is accepted, development must follow the common governance requirements defined in the Development Governance section.
Step 4: Pull Request and Code Review
Submit a Pull Request that:
References the JIRA issue.
Includes a clear description of the implemented changes.
Provides screenshots or recordings for UI changes.
Ensures all CI checks pass.
The Pull Request will undergo the standard Bahmni code review process before being merged.
Flow 2: Major Enhancements and New Features
Major enhancements and new features follow a formal proposal, review, and sign-off process before development begins.
Step 1: Submit Proposal on OpenMRS Talk
Every proposal for a new feature or major enhancement must start with a public discussion on OpenMRS Talk and include a Concept Brief. This is the required entry point before formal review.
Concept Brief: Required Sections
The Concept Brief should include the following sections:
1. Problem Statement
Core problem being addressed
Current workflow or limitation
Relevant background information and supporting data
2. Proposed Solution
Functional requirements
Scope of the proposed change
Out-of-scope items
3. Impact Assessment
Affected product modules
Impact on existing implementations and backward compatibility
Upgrade and migration considerations
Configuration changes versus code changes
4. User Experience
Affected screens or user flows
Figma designs, wireframes, or prototypes, where applicable
5. Architecture and Technical Design
Structural system outcomes
External package reliance
Implementation methodology
Schema or data store modifications, where applicable
Step 2: Community Assessment
Public interaction serves as the foundation for collecting input, confirming user needs, and refining the proposed solution. Official assessment begins only after an open thread containing the mandatory Concept Brief is published.
Step 3: Product Advisory Team Review
The proposal must be presented during a weekly Product Advisory Team (PAT) call.
The PAT review focuses on:
Strategic roadmap alignment
Overlap with existing initiatives
Community prioritisation
Step 4: Functional Sign-Off
The proposal posted on the OpenMRS Talk thread must receive formal sign-off from:
Category | Owner |
|---|---|
Product Owner | Akhil |
Technical Owner | Angshuman |
Note: SLA will be approximately 7–15 days. Once approved, create the JIRA card after sign-off is received from the respective owners.
Step 5: Development Governance
After functional sign-off is received and the JIRA card is created, development must follow the common governance requirements defined in the Development Governance section.
Development Governance
After a contribution is approved through either Flow 1 or Flow 2, development must follow the same governance requirements below.
Git Workflow
Bahmni follows a strict branching and naming convention:
Fork & Clone: Fork the official repo (e.g.,
bahmni-apps-frontend) and clone it locally.Upstream Remote: Set the original Frontend repo as your
upstreamto keep your fork updated.Branch Name: Create a branch named after the Jira ticket ID.
Correct:
git checkout -b BAH-1234Incorrect:
git checkout -b fix-login-bugAtomic Commits: Squash your changes into one single commit before pushing. The commit message must follow the pattern:
PROJECT-ID: Short description of fix(e.g.,O3-123: Added validation to the login form).
Update relevant documentation and Wiki pages
Maintain backward compatibility (unless explicitly approved otherwise)
Pull Request & Merge Requirements
Submitting & Sign-off
Testing Evidence: Add recording/screenshot of functional testing of the feature to the JIRA card.
Push & Open PR: Push to your fork and open a Pull Request on GitHub.
All Pull Requests must include detailed description and screenshots of UI change if applicable.
Link to Jira: Paste the PR link into the Jira ticket and move the ticket status to "Under Review."Wait for Peer Review: Bahmni technical team will review your code. They may request changes if applicable.
Merging: Once approved, a maintainer will merge your PR. You should then Close the Jira ticket.
Final merge approval requires:
Bahmni Product Team review
UX approval
Technical approval
QA validation (if applicable)
Signed CLA
Merge into Main Branch & Sanity Testing
Once all approvals are completed and CI checks are passed, the designated maintainer merges the contribution into the main branch and does post-merge sanity testing.
Post-Merge Sanity Testing
A basic sanity check must be performed to ensure:
The application builds successfully
Affected modules function as expected
No regressions are introduced
Critical workflows remain stable
Guideline Review
These guidelines may be updated by the Bahmni Product Team in consultation with:
Product Advisory Team
UX Leadership
Technical Steering Representatives