Badger release process

I had a discussion with @mrjn and @vvbalaji on Friday about badger release and here’s what we decided

  • We released badger with v20.07.0 tag which will cause issues with go mod. The tag should’ve been v200.07.0 (but we’re not fixing it. Read below.).
  • Badger needs calendar versioning because dgraph needs it. But badger needs to be mindful of other projects (jaegar tracing, ipfs, etc) using badger which will need these patches.
  • Using v200.x.x will require us to maintain old v1x and v2x along with these versions.
  • A better idea is to keep badger major versions at v1x and v2x and do minor releases based on dgraph versions.
  • Dgraph v20.07.x will use badger v2.2007.y .
    • Dgraph v20.07.x will use only badger v2.2007.y versions and release/v2.2007 branch gets only patch fixes.
    • Dgraph v20.11.x will use badger v2.2011.x and so on.
  • Badger major version will change only on data format change as mentioned on badger/VERSIONING.md at master · dgraph-io/badger · GitHub
  • Badger v1x will get only absolutely-necessary bug fixes. We will maintain only the badger versions that dgraph is using.

Action items

  • Ibrahim - Create a new v2.2007 branch from badger release/v20.07 and create a new v2.2007.0 tag.
  • Ibrahim - Cherry-pick the bug fixes that are needed for dgraph v20.07.1 and do a badger v2.2007.1 release.

@mrjn’s notes from the call

# Badger
Problem:
- 20.07.0 -> Current Badger.
- 20.11.0 -> Breaking change.
Go mod requires Semantic Versioning (as per Manish understanding)

-> If this is true.
20 -> 200, to allow to use the MAJOR number to indicate breaking changes.
20.11.0 -> 200.11.0 (with a different MAJOR number from 20.07.x)
20.11.0 -> 21.11.0 (perhaps)
Have a MAJOR number, like say 3.
3.20.07

How do we release 20.11.0?
3.20.11 -> patch release as per SemVer. But, has a whole bunch of features as per us.
That has a problem.
We add an extra number to the MAJOR number in CalVer.
20.07.0 -> 200.07.0
20.11.0 -> 200.11.0 or 201.11.0, depending upon breakages.
21.03.0 -> 210.03.0
21.07.0 -> 210.07.0 or 211.07.0

## CalVer in Badger [Decided solution]
We need CalVer in Badger, because Dgraph needs it.
Because we make optimizations which are fine for SerVer patch, but not OK for Dgraph.
We keep our SemVer in Badger, but bring updates to them as and when we can. If we do this frequently enough, then we might be able to get more people testing Badger.
VV Balaji: 2.MINOR.x. MINOR -> Dgraph release. `2.2007.x`, `2.2011.x` 
`X.Dgraph Release.Z` for Badger.
2.2007.z
3.2011.z
3.2103.z
3.2107.