~abentley/bzr/devnotes

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
*************************************
Bazaar and the Launchpad Code release
*************************************

Launchpad will be released as open source before the end of July 2009,
including all its history.

We want to release the source for download through Bazaar.

We expect there will be considerable interest in downloading and looking
through the source, and then in pushing back branches for integration.


Issues
******

* Bazaar's brisbane-core (aka 2.0) format must be stable and reliable
  before the release is published.  It's been tested on several projects
  but not yet widely used in production.

* The format should be branded '2.0' or '2.0beta' not 'development'.

* Launchpad must cope reliably with large amounts of load.  Much of it will
  be anonymous access over http, which can be served passively from 
  Apache and more efficiently than from Python.

* Stacking must work in bzr brisbane-core
  <https://bugs.launchpad.net/bzr/+bug/373455>
  (It's arguably not strictly required, but without it it'll be hard to
  actually work on the branches, and doing another format change
  afterwards would be bad.)

* "Things don't work the first time."  We may need to land more fixes from
  bzr into Launchpad after initial testing before it's ready to go.

* Clients that can read this format should be available for all important
  formats.
 
* It would be annoying to ask people to upgrade just after downloading all
  the data: large upgrades of Launchpad's repository take hours at least.

* If Launchpad has too many incoming SSH connections, it should fall back
  gracefully.


Plan
****

* Fix stacking in brisbane-core <https://bugs.launchpad.net/bzr/+bug/373455>

* Rename or alias the format to '2.0'.

* Fix other critical bugs targetted to 2.0:
  <https://launchpad.net/bzr/+milestone/2.0>

* If these fixes are reasonably small, target them to a 1.15.1rc1 and
  push it immediately; otherwise merge to 1.16rc1.  Release and test.

* Merge that release into Launchpad's rocketfuel branch.

* Roll out that Launchpad release onto lpnet.

* Upgrade Launchpad branches.

* Test performance of Launchpad under load, over both ssh and http.
  Perhaps recruit Canonical people to pull simultaneously from around the
  world.

* Check performance over dumb http is adequate, both in throughput for the
  user and load on the server.

* Install some load-limiting for ssh, either at the application or the 
  network level.

* Announce the Launchpad open source release.


Not to be done
**************

It would be nice to support nested trees in this release.  If it's ready
we'll merge it, but finishing it is not a higher priority than making
brisbane-core available in a timely 2.0 and a good Launchpad
open source release.