Subject: Application Development and Maintenance Process Audience: MicroCODE Customers Purpose: Explanation of recommended App support process Author: Tim McGuire Last Updated: [To be updated]
Developing complex software applications and supporting time-critical operations requires a proactive and highly responsive software support process.
MicroCODE sees application development as a set of concentric Circles. Each Circle consists of:
- A code base used to build all parts of a solution
- A documentation set describing the use of the code base
- A team, or allocated time for personnel within a team, to support the Circle activities
Note: Microsoft refers to these 'Circles' as 'Rings' - see Managing Office 365 Updates
The following application Circles must be supported concurrently:
- Git Branch:
develop - Purpose: The 'next major release' currently being developed
- Status: Pre-production code, integration branch for new features
- Activity: Long-term development work
- Testing: Unit and Integration testing
- Git Branch:
release/*(long-lived branches) - Purpose: The 'current major release' being tested and supported in selected customer sites
- Status: Pilot-ready 'Production Candidate'
- Activity: Multi-group testing before production promotion
- Requirements: Minimum of three (3) sites, varying environments, to exit Pilot phase
- Testing: System Acceptance Testing (SAT) and User Acceptance Testing (UAT)
- Git Branch:
main - Purpose: The 'previous major release(s)' running in actual Production sites
- Status: Production-ready, stable releases
- Activity: Multiple versions may be in the field based on plant upgrade schedules
- Support: All versions must be supported concurrently until End of Life
We use this branching model that maps directly to our Circles:
main (Production)
├── hotfix/* (Emergency patches in main)
├── develop (Alpha - Integration branch)
├── feature/* (New features from main, accumulate in develop)
│ └── bugfix/* (Defect corrections in alpha test)
└── release/* (Beta - Forked from main, cherry-picks selected features)
└── bugfix/* (Defect corrections in beta test)
- Circle: Production
- Purpose: Always contains production-ready code
- Protection: Protected, requires PR approval
- Tagging: Every release tagged with
vM.F.H(e.g.,v2.11.322) - Versioning: vM.F.H
- Circle: Production → Alpha → Beta
- Purpose: Emergency patches for production issues
- Naming:
hotfix/{issue#}--{short-snake-name} - Source: Created from
main - Merge: Merged to
mainimmediately, then merged todevelop(and any openrelease/*branches) - Versioning: vM.F.H
- Circle: Alpha
- Purpose: Integration branch for next release
- Source: All feature branches merge here
- Status: Pre-production, actively developed
- Versioning: aM.F.H
- Circle: Alpha
- Purpose: New functionality or improvements
- Naming:
feature/{issue#}--{short-snake-name} - Source: Created from
main - Merge: Merged to
developwhen complete for testing - Versioning: aM.F.H
- Circle: Beta
- Purpose: Long-lived branches for multi-group testing
- Naming:
release/b1.0.0(semantic versioning) - Lifespan: Remain open during extended testing periods
- Merge: Merged to
mainwhen testing complete - Versioning: bM.F.H
Alpha tags (aM.F.H) are on develop and Beta tags (bM.F.H) are on release/* branches; production tags (vM.F.H) are on main.
We use Semantic Versioning (SemVer): vM.F.H
M= Major Release - incremented on architecture, design, APIs or other major App changesF= Feature Release - incremental release of Feature(s) into a Major Release (.1. = 1st release of new features, .2. = 2nd, .3. = 3rd, etc.)H= Hotfix or Bugfix Patch - incremental fixes released to correct a particular vM.F, bM.F, or aM.F
Examples:
v2.1.0- Major Version 2, 1st Feature Release, no hotfixesa2.1.1- Major Version 2, 1st Feature Release, 1st hotfix - ALPHA Buildb2.1.1- Major Version 2, 1st Feature Release, 1st hotfix - BETA Buildv2.1.1- Major Version 2, 1st Feature Release, 1st hotfixv2.2.0- Major Version 2, 2nd Feature Release (new features bundled), no hotfixesv3.0.0- Major Version 3 (architectural change), 1st Feature Release
See MicroCODE Git Workflow - for detailed procedures and examples.
We use GitHub Issues and GitHub Projects to track all software problems, enhancements, and requests. This replaces the previous SPR/SER tracking system.
Every problem, request, or enhancement is tracked as a GitHub Issue:
- Bug Reports: Issues labeled with
bugand severity labels - Enhancements: Issues labeled with
enhancement - Hotfixes: Issues labeled with
hotfixand linked tohotfix/*branches - Features: Issues labeled with
featureand linked tofeature/*branches
We use a standardized label system:
Type Labels:
bug- Software defectenhancement- New feature or improvementhotfix- Emergency production fixdocumentation- Documentation updates
Severity Labels:
severity-1- System crash, complete loss of major componentseverity-2- Function fails, no workaroundseverity-3- Function fails, workaround availableseverity-4- Function fails, no production impactseverity-5- Display/report/tool problemseverity-6- Annoyance, requires business case
Status Labels:
alpha- Work in Alpha Circlebeta- Work in Beta Circleproduction- Work in Production Circleblocked- Waiting on dependencyready-for-review- Ready for PR review
We use GitHub Projects (board view) to visualize workflow:
Project Board Columns:
- Backlog - New issues, not yet prioritized
- Alpha (In Progress) - Active development in
develop - Beta (Testing) - Issues in
release/*branches - Production (Deployed) - Issues merged to
main - Done - Completed and verified
Benefits:
- Automatic linking between Issues, PRs, and commits
- Filter by labels, assignees, milestones
- Multiple views (board, table, roadmap)
- All tracking in one place (GitHub)
When creating branches and PRs, link to Issues:
Branch Naming with Issue Numbers:
feature/0045--add-sidebar-builder (GitHub Issue #45)
hotfix/0067--connection-retry (GitHub Issue #67)
PR Descriptions:
Fixes #67
Implements #45
Related to release v2.2.0| Severity | Description | Impact | Response Time |
|---|---|---|---|
| 1 | System crash, complete loss of major system component | Lost units or loss of integrity | Immediate (Hours/Days) |
| 2 | Function fails, no work-around possible | Lost units or loss of integrity | Immediate (Hours/Days) |
| 3 | Function fails, work-around available | Loss of integrity | Days/Weeks |
| 4 | Function fails, no production impact | Local support required | Next Minor Release (Weeks/Months) |
| 5 | Display/Report/Tool problem | Possible future time loss | Next Minor Release (Weeks/Months) |
| 6 | Annoyances | Resource time loss | Business Case required |
- Location: Alpha Circle (
feature/*branches) - Responsibility: Developers
- Scope: Application code level, standalone programs
- Location: Alpha Circle (
feature/*branches) - Responsibility: Devs
- Scope: System component interactions, functional requirements
- Location: Alpha Circle (
developbranch) - Responsibility: Devs and Testers
- Scope: Complete integrated software product validation
- Location: Beta Circle (
release/*branches) - Responsibility: Testers and Support Team
- Scope: Business requirements compliance, delivery acceptance
The further out you go in the Circles, the greater the:
- Risk associated with defects
- Expense of defect correction
- Urgency of response required
Conversely, the further into the Circles you go, the greater the:
- Time available for changes
- Flexibility in implementation
- Options for solutions
Protect these branches in GitHub:
main- Require PR, require approvals, require status checksdevelop- Require PR, require status checksrelease/*- Require PR (optional, for long-lived branches)
- Required for: All merges to
main,develop, andrelease/* - Title Format:
[vM.F.H] Description(e.g.,[v2.1.1] Fix connection retry) - Description: Link to related Issues, describe changes
- Review: At least one approval required for
main
- Format:
vM.F.H(e.g.,v2.1.1) - Production Tags:
vM.F.Htags are onmainbranch - Alpha Tags:
aM.F.Htags are ondevelopbranch - Beta Tags:
bM.F.Htags are onrelease/*branches - Purpose: Mark releases and builds in each Circle
- Release Notes: Use GitHub Releases feature to document changes
This process combines:
- The Circles Model - Your proven experience since 1983, representing parallel development activities
- GitFlow - Industry-standard Git branching model
- GitHub Issues/Projects - Modern, integrated tracking system
- Semantic Versioning - Clear, predictable version numbering
The workflow ensures:
- Clean branch states at any moment
- Systematic naming conventions
- Protection of production code
- Dedicated channels for hotfixes
- Support for long-lived release testing
- All tracking in one integrated system (GitHub)
For detailed Git commands and examples, see: DEVELOPER-GIT.md