BranchPolicy
erikarn edited this page 11 years ago

Branching? Why would we even support branching?

Why would there even be branching? Surely development can just happen in master and everyone can just upgrade!

So, to be clear:

  • Active development is going to happen on master - not branches;
  • But over time the firmware API is going to change, requiring ath9k_htc driver changes;
  • Branches exist purely so developers and operating system maintainers who wish to use a given release can use said given release; and
  • If external companies wish to ship a given version of firmware (and thus API) but include basic bugfixes to users, they may wish to backport bug fixes and improvements to a release branch.

Thus - a branch will be tagged for each firmware release. If developers, companies, OS distributions, etc wish to maintain a given version of ath9k_htc and firmware on their project then they're very welcome to - but they'll have to put in the effort to backport fixes/improvements without braking the firmware API.

The branch exists so that these developers/companies/distributions can participate in a centralised way. Hopefully we don't end up with the situation where each OS vendor creates a fork of the firmware and maintains it themselves - hopefully they will push patches into the release branch so everyone can benefit.

The branch rules:

  • The version number won't change in a branch (although it may be time a revision ID was included in the version information pushed back up to the host);
  • The firmware API and behaviour must not change along a branch;
  • A branch update must not require an ath9k_htc driver update to function. It may go hand-in-hand with some vendor patches to ath9k_htc to fix some particular issue, but the firmware must still function on the latest version of ath9k_htc which is paired with the branch version;
  • Any fixes to a branch must first be applied and debugged in master before backported.
  • .. ie, features/fixes must not go into a branch first.

If not - the branches themselves will just stay what they are - indicators of when things were released.