3 A web interface where users and developers can store information
4 about bugs. Underlying storage should be in Git, such that anyone
5 can clone the repository, run a tool of ours (such as gotwebd?)
6 and read and modify issues. Ideally, a simple 'got send' of special
7 refs would be enough to update issue data in the main repository.
8 Hence the storage format we use must be merge-conflict-free by design.
10 Blueprint for workflow of a good bug tracker using "user pain":
11 https://lostgarden.com/2008/05/20/improving-bug-triage-with-user-pain/
13 There is an unfortunate practice of overlaying bug tracking with feature
14 requests and milestones. Bugs and feature planning are often mixed, e.g.
15 in platforms like Trac and Redmine.
16 Ideally, bugs and feature milestones should be kept separate in a very
17 clear way, especially if we use the "user pain" approach.
18 We could have a project planning UI that manages TODO items and milestones,
19 separate from the bug tracker.
22 = Pull Requests and Code Review =
26 Storing review comments:
28 https://github.com/google/git-appraise
29 https://github.com/google/git-pull-request-mirror
33 Github uses a trick where forks and pull requests don't actually use
34 separate repositories. Instead, they carve up the reference namespace
35 such that each fork has its own set of refs. But the underlying storage
36 is shared (greatly saving on disk space). We know this by word of mouth
37 and because of bugs like this one, where a tree from the youtube-dl
38 repository appears in the repository of DMCA takedowns:
39 https://github.com/github/dmca/tree/416da574ec0df3388f652e44f7fe71b1e3a4701f
41 We don't want such things to happen on gothub, so pull requests should use
42 dedicated repositories which contain just the branch that is being proposed,
43 including full history prior to this branch. This means PR storage will be
44 costly, but PR repositories can be designed to be temporary.
48 1) alice clones bob.gothub.org/src.git to alice.gothub.org/src.git;
49 alice.gothub.org and bob.gothub.org are project spaces which can have
50 several committers each; however, we can expect some users will be using a
51 project space just for themselves, and in the PR context this can make sense
53 2) alice creates a branch in alice.gothub.org/src.git and does some work.
54 When ready to send a PR, alice creates a dedicated repository at
55 alice.gothub.org/foo.git and either provides anonymous read access or adds
56 read credentials such that bob can access foo.git (recall that gotd doesn't
57 support per-reference access rules, only per-repository rules);
58 alice can also add notification details for bob to be notified of changes
59 to foo.git via email, arbitrary notifications triggered by http/json (the
60 gothub site could provide portals to notification providers, e.g. pushover)
62 3) bob can clone from alice.gothub.org/foo.git to obtain a copy of the changes:
63 bob receives notifications when alice sends changes to foo.git
65 4) in bob.gothub.org/foo.git, bob can use a web UI to leave review comments
66 on diffs and/or the full files, on line-by-line granularity;
67 all data pertaining to code review is stored bob's repo within a dedicated
69 bob can add notification details for alice to be informed of code review
72 5) alices can now react to review comments in two ways: leave comments at the
73 code review UI for bob.gothub.org/foo.git (needs some way of authentication);
74 make changes to code and/or branch history in alice.gothub.org/foo.git which
75 bob can then fetch again to repeat the cycle
77 6) once bob is happy, bob.gothub.org/foo.git can be added as a temporary
78 remote of a clone from bob.gothub.org/src.git; bob fetches from foo.git,
79 rebases/integrates/merges the branch, and sends to bob.gothub.org/src.git;
80 optionally, code review comment history can be fetched from foo.git and
81 retained in src.git ; this step can be done manually by bob following
82 instructions, or it can be automated server-side
84 7) alice.gothub.org/foo.git and bob.gothub.org/foo.git can be deleted