summaryrefslogtreecommitdiff
path: root/fa/e2223e901207afbd37865415cd94678754ff51
blob: c6e2d027d8729d0f2a889a6ca85c69a9650eb193 (plain)
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
Return-Path: <aj@erisian.com.au>
Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138])
 by lists.linuxfoundation.org (Postfix) with ESMTP id 528AFC000D
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Wed, 15 Sep 2021 14:35:03 +0000 (UTC)
Received: from localhost (localhost [127.0.0.1])
 by smtp1.osuosl.org (Postfix) with ESMTP id 35FCC81CFE
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Wed, 15 Sep 2021 14:35:03 +0000 (UTC)
X-Virus-Scanned: amavisd-new at osuosl.org
X-Spam-Flag: NO
X-Spam-Score: -1.499
X-Spam-Level: 
X-Spam-Status: No, score=-1.499 tagged_above=-999 required=5
 tests=[BAYES_00=-1.9, KHOP_HELO_FCRDNS=0.398, SPF_HELO_NONE=0.001,
 SPF_NONE=0.001, UNPARSEABLE_RELAY=0.001]
 autolearn=no autolearn_force=no
Received: from smtp1.osuosl.org ([127.0.0.1])
 by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id SIAhMU7Nahkd
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Wed, 15 Sep 2021 14:35:02 +0000 (UTC)
X-Greylist: from auto-whitelisted by SQLgrey-1.8.0
Received: from azure.erisian.com.au (cerulean.erisian.com.au [139.162.42.226])
 by smtp1.osuosl.org (Postfix) with ESMTPS id EB90980CFB
 for <bitcoin-dev@lists.linuxfoundation.org>;
 Wed, 15 Sep 2021 14:35:01 +0000 (UTC)
Received: from aj@azure.erisian.com.au (helo=sapphire.erisian.com.au)
 by azure.erisian.com.au with esmtpsa (Exim 4.92 #3 (Debian))
 id 1mQW01-00029V-8M; Thu, 16 Sep 2021 00:34:58 +1000
Received: by sapphire.erisian.com.au (sSMTP sendmail emulation);
 Thu, 16 Sep 2021 00:34:54 +1000
Date: Thu, 16 Sep 2021 00:34:54 +1000
From: Anthony Towns <aj@erisian.com.au>
To: Karl-Johan Alm <karl@dglab.com>,
 Bitcoin Protocol Discussion <bitcoin-dev@lists.linuxfoundation.org>
Message-ID: <20210915143454.GA27129@erisian.com.au>
References: <CALJw2w7f2JfskLQPwEBsKTqpJBo+qccP-y6oAX5EEzJ3vo0Grw@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <CALJw2w7f2JfskLQPwEBsKTqpJBo+qccP-y6oAX5EEzJ3vo0Grw@mail.gmail.com>
User-Agent: Mutt/1.10.1 (2018-07-13)
X-Spam-Score-int: -18
X-Spam-Bar: -
Subject: Re: [bitcoin-dev] BIP extensions
X-BeenThere: bitcoin-dev@lists.linuxfoundation.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Bitcoin Protocol Discussion <bitcoin-dev.lists.linuxfoundation.org>
List-Unsubscribe: <https://lists.linuxfoundation.org/mailman/options/bitcoin-dev>, 
 <mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=unsubscribe>
List-Archive: <http://lists.linuxfoundation.org/pipermail/bitcoin-dev/>
List-Post: <mailto:bitcoin-dev@lists.linuxfoundation.org>
List-Help: <mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=help>
List-Subscribe: <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>, 
 <mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=subscribe>
X-List-Received-Date: Wed, 15 Sep 2021 14:35:03 -0000

On Wed, Sep 15, 2021 at 03:14:31PM +0900, Karl-Johan Alm via bitcoin-dev wrote:
> BIPs are proposals.

> It is then organically incorporated into the various entities that
> exist in the Bitcoin space. At this point, it is not merely a
> proposal, but a standard.

Thinking of BIPs that have reach "Final" status as a "standard" might
be reasonable, but I'd be pretty careful about even going that far,
let alone further.

But as you said, "BIPs are proposals". If your conclusion is somehow
that a BIP "is not merely a proposal", you're reached a contradiction,
which means you've made a logic error somewhere in between...

> Someone may have
> agreed to the proposal in its original form, but they may disagree
> with it if it is altered from under their feet.

> 2. To improve the proposal in some way, e.g. after discussion or after
> getting feedback on the proposed approach.
> 3. To add missing content, such as activation strategy.

> I propose that changes of the second and third type, unless they are
> absolutely free from contention, are done as BIP extensions.

If you were proposing this just for BIPs that are marked final, then
sure, maybe, I guess -- though why mark them final if you still want
to add missing content or make further improvements? But if you want to
apply it as soon as a BIP number is assigned or text is merged into the
repo, I think that just means requesting number assignment gets delayed
until the end of the development process rather than near the beginning,
which doesn't sound particularly helpful.

That's essentially how the lightning BOLTs are set up -- you only get to
publish a BOLT after you've got support from multiple implementations
[0]; but that has meant they don't have published docs for the various
things individual teams have implemented, making interoperability harder
rather than easier. There's been talk about creating bLIPs [1] to remedy
this lack.

> BIP extensions are separate BIPs that extend on or an existing BIP.

So as an alternative, how about more clearly separating out draft BIPs
from those in Active/Final state? ie:

 * brand new BIP draft comes in from its authors/champions/whatever
 * number xxx gets assigned, it becomes "Draft BIP xxx"
 * authors modify it as they see fit
 * once the authors are happy with the text, they can move it
   to Final status, at which point it is no longer a draft and is
   just "BIP xxx", and doesn't get modified anymore
 * go to step 1

(I'm doubtful that it's very useful to have an "Active" state as distinct
from "Final"; that just gives the editors an excuse to play favourites
by deciding whose objections count and whose don't (or perhaps which
implementations count and which ones don't). It's currently only used for
BIPs about the BIP process, which makes it seem particularly pointless...)

> By making extensions to BIPs, rather than modifying them long after
> review, we are giving the community [...]

As described, I think you would be giving people an easy way to actively
obstruct the BIP process by making it harder to "improve the proposal"
and "add missing content", and encouraging contentiousness as a result.

For adding on to BIPs that have reached Final status, I think just
assigning completely new numbers is fine, as occurred with bech32 and
bech32m (BIPs 173 and 350).

Even beyond that, having BIP maintainers exercising judgement by trying
to reserve/assign "pretty" numbers (like "BIP 3" for the new BIP process)
seems like a mistake to me. If it were up to me, I'd make the setup be
something like:

 * new BIP? make a PR, putting the text into
   "drafts/bip-authorname-description.mediawiki" (with corresponding
   directory for images etc). Have the word "Draft" appear in the "BIP:
   xxx" header as well as in the Status: header.

 * if that passes CI and isn't incoherent, it gets merged

 * only after the draft is already merged is a BIP number assigned.
   the number is chosen by a script, and the BIP maintainers rename it
   to "drafts/bip-xxx.mediawiki" in a followup commit including internal
   links to bip-authorname-description/foo.png and add it to the README
   (automatically at the same time as the merge, ideally)

 * when a BIP becomes Final, it gets moved from drafts/ into
   the main directory [2], and to avoid breaking external links,
   drafts/bip-xxx.mediawiki is changed to just have a link to the
   main doc.

 * likewise when a BIP becomes rejected/deprecated/whatever, it's moved
   into historical/ and drafts/bip-xxx.mediawiki and bip-xxx.mediawiki
   are updated with a link to the new location

 * otherwise, don't allow any modifications to bips outside of
   drafts/, with the possible exception of adding additional info in
   Acknowledgements or See also section or similar, adding Superseded-By:
   links, and updating additional tables that are deliberately designed
   to be updated, eg bip-0009/assignments.mediawiki

It's better to remove incentives to introduce friction rather than
add more.

Cheers,
aj

[0] https://github.com/lightningnetwork/lightning-rfc/blob/master/CONTRIBUTING.md

[1] https://github.com/ryanthegentry/lightning-rfc/blob/blip-0001/blips/blip-0001.md

[2] Maybe moving the files between directories is too much, but I think
    having "drafts/" in the URL is likely to help ensure people referring
    to draft BIPs actually realise they're drafts, and thus subject to
    large changes, cf
    https://twitter.com/BobMcElrath/status/1281606259863629824

    Likewise, people probably might not want to implement/deploy BIPs
    marked "draft", which is a good reason for the authors to mark them
    final, which in turn might help ensure they're actually complete
    and finished before they're deployed, all of which seems like a
    good thing.