| 1 | = !BluePrint: Releases = |
| 2 | [[TOC]] |
| 3 | |
| 4 | == Introduction == |
| 5 | |
| 6 | Sahana Eden releases: |
| 7 | - ensure stability of core APIs, features and data models as basis for the implementation of custom solutions |
| 8 | - serve as reference points for user documentation |
| 9 | - serve as targets for issue resolution |
| 10 | - provide support tools for database migration |
| 11 | - provide migration pathways for backward-incompatible API changes |
| 12 | |
| 13 | == Stable-Repository == |
| 14 | |
| 15 | Releases will be published in a dedicated "stable" repository on GitHub. |
| 16 | |
| 17 | == Release Numbering == |
| 18 | |
| 19 | Release numbering will use a three-number schema like: |
| 20 | |
| 21 | {{{ |
| 22 | 1.0.0 => Major.Minor.Update |
| 23 | }}} |
| 24 | |
| 25 | === Update === |
| 26 | |
| 27 | A change in the update number indicates a maintenance update of a release: |
| 28 | |
| 29 | - releases critical fixes and enhancements (e.g. security issues, stability/performance issues, bugs) |
| 30 | - can contain minor enhancements, or preview-versions of new features |
| 31 | - can contain visual/UX improvements, but do not generally change behavior |
| 32 | - can add new optional dependencies |
| 33 | - is always API compatible (or backwards-compatible) |
| 34 | - do not require configuration updates |
| 35 | - do not require a database migration (web2py automatic migration sufficient) |
| 36 | |
| 37 | => simple pull+automigrate sufficient |
| 38 | => upgrade can be fully automated/scripted |
| 39 | => no changes in custom templates required |
| 40 | |
| 41 | === Minor === |
| 42 | |
| 43 | A change in the minor release number indicates a new release in a release series: |
| 44 | |
| 45 | - releases regular fixes and improvements, including new feature sets |
| 46 | - is always API compatible (or backwards-compatible) |
| 47 | - can add new mandatory dependencies |
| 48 | - can require configuration updates |
| 49 | - can require scripted database migration |
| 50 | |
| 51 | => upgrade can additionally require a configuration update and/or scripted database migration |
| 52 | => upgrade can be performed manually by sysadmins by following step-by-step instructions |
| 53 | => upgrade of custom templates could in rare cases require intervention by template developer |
| 54 | |
| 55 | === Major === |
| 56 | |
| 57 | A change in the major release number indicates a new release series: |
| 58 | |
| 59 | - releases major framework changes |
| 60 | - can break API backwards-compatibility and require adaption of custom template code and/or concepts |
| 61 | - can change or add dependencies, both optional and mandatory |
| 62 | - can require configuration updates |
| 63 | - can require data migrations both scripted and manual |
| 64 | |
| 65 | => upgrade will most likely require a manual database migration |
| 66 | => upgrade of custom templates will require intervention by template developer and/or professional support |
| 67 | |
| 68 | == Requirements before Release == |
| 69 | |
| 70 | === All Releases === |
| 71 | |
| 72 | - all critical issues, and issues targeting this release, are closed |
| 73 | - change log is complete |
| 74 | - all unit tests pass |
| 75 | - smoke tests pass for all standard templates for all demo accounts of the respective template (minimum admin@example.com and normaluser@example.com) |
| 76 | - template-specific selenium tests pass |
| 77 | - disputed trunk changes resolved |
| 78 | |
| 79 | === Minor or Major Number Release === |
| 80 | |
| 81 | - all API changes documented |
| 82 | - database migration scripts complete |
| 83 | - migration instructions complete |
| 84 | - documentation updates ready for roll-out |
| 85 | |
| 86 | == Requirements for Release == |
| 87 | |
| 88 | - Tagged commit in stable-repository (after non-selective pull from trunk) |
| 89 | - Change log published on GitHub releases |
| 90 | - Deployment tools can roll out dependencies |
| 91 | - Announcement on mailing list |
| 92 | |
| 93 | ---- |
| 94 | BluePrint |