@@ -3,34 +3,39 @@ A brief overview of versioning, branches, and releases
33Facade will follow a three decimal release notation, e.g. v1.0.0
44
55The first decimal is the major number, and it denotes database compatibility. If
6- for any reason a database changes (e.g. adding or removing tables or columns, or
7- changing the way the database is accessed), the major number will be
8- incremented. A migration path must be provided from the previous database schema
9- to the new one in facade-worker.py under the "update_db" function.
6+ for any reason a database changes in a way that breaks backwards compatibility
7+ (e.g. removing tables or columns, or changing the way the database is accessed),
8+ the major number will be incremented. A migration path must be provided from the
9+ previous database schema to the new one in facade-worker.py under the
10+ "update_db" function.
1011
1112The second decimal is the feature number, and it denotes a release which adds
12- new features but where the database structure is unchanged. Examples include
13- changes to the web UI, performance improvements, and refactoring existing
14- functions. These releases must be self contained, meaning that a user has to do
15- no more than pull the new code. Any new feature that requires user intervention
16- before Facade works properly should be done in a major release.
13+ new features but where database compatibility is maintained. Examples include
14+ changes to the web UI, performance improvements, adding new tables or columns,
15+ adding new settings in the database, and refactoring existing functions. These
16+ releases must be self contained, meaning that a user has to do no more than pull
17+ the new code and run facade-worker.py. Any new feature that requires user
18+ intervention before Facade works properly should be done in a major release and
19+ branched as described below.
1720
18- The last decimal is for bug fix releases, which can happen at any time and
19- must apply transparently.
21+ The last decimal is for bug fix releases, which can happen at any time and must
22+ apply transparently.
2023
2124In general, users will run Facade from master. Master should always be stable,
2225with work happening in development branches. At release time, the relevant
23- development branch will be merged into master, and the tagged.
24-
25- When a new major release happens, a branch will be created just prior to merging
26- any patches which break backwards compatibility (e.g. v1-compat, v2-compat,
27- etc). When checked out, this branch must be sufficient to continue running
28- Facade as usual on the prior version of the database. This provides a safety net
29- for users who may be unaware that pulling a new copy of the code could break
30- backwards compatibility and their ability to export config files. In this
31- situation, the user can check out the branch which corresponds with their
32- current major version, export their config files for safekeeping, check out
33- master, and do a migration or start fresh by importing their config files.
26+ development branch will be merged into master, and then tagged.
27+
28+ If a release requires user intervention (new dependencies, for example), a
29+ branch will be created just prior to merging any patches which break backwards
30+ compatibility (e.g. v1-compat, v2-compat, etc). When checked out, this branch
31+ must be sufficient to continue running Facade as usual on the prior version of
32+ the database. This provides a safety net for users who may be unaware that
33+ pulling a new copy of the code could break backwards compatibility and their
34+ ability to export config files. In this situation, the user can check out the
35+ branch which corresponds with their current major version, export their config
36+ files for safekeeping, check out master, and do a migration or start fresh by
37+ importing their config files. A tangible example of this is when Facade migrated
38+ from Python 2 to Python 3.
3439
3540Since Facade is intended to run unattended until you need stats, the goal is to
3641make it easy to recover when unavoidable changes roll through.
0 commit comments