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
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
|
Return-Path: <theandychase@gmail.com>
Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org
[172.17.192.35])
by mail.linuxfoundation.org (Postfix) with ESMTPS id 7BC15FCC
for <bitcoin-dev@lists.linuxfoundation.org>;
Mon, 7 Sep 2015 02:17:36 +0000 (UTC)
X-Greylist: whitelisted by SQLgrey-1.7.6
Received: from mail-pa0-f52.google.com (mail-pa0-f52.google.com
[209.85.220.52])
by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 9FFA7126
for <bitcoin-dev@lists.linuxfoundation.org>;
Mon, 7 Sep 2015 02:17:35 +0000 (UTC)
Received: by padhy16 with SMTP id hy16so78654749pad.1
for <bitcoin-dev@lists.linuxfoundation.org>;
Sun, 06 Sep 2015 19:17:35 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
h=sender:from:content-type:content-transfer-encoding:subject
:message-id:date:to:mime-version;
bh=fIyR7h12xSyUVLBydAyFRIQGAtAitQGU/fkAx9OkIxA=;
b=gfxx398xWG/zt1eml35Eo031K7d0jB4xrp9Vk2BMx3labJFUo/75WBal8LHXz2XZVI
VsR8XXjlScOcNz4QysYP9XZBYnsrPUbTLLAP7w74A9UjJDA7Qg9gj6QMeW5wsqqjX07N
h/hbGdnk28r+7LbVp6+/E2XOWr5xJ6qQtbzRz3bVF9vn2bjrYLNmUGFMv673S7I8tqu+
J4E6pe/2td4cWF0nVpWJdPtSnVM7fsc6NprapTkiZDGITrXByM6PjD72dILIf1iiPOkT
mW53X7GQX2to1YZ/2HU6CpO/lfxhEGsw1riNaefTUEb1K5LDKN2EMY5iYJqD9l97tQHo
5OsQ==
X-Received: by 10.66.140.70 with SMTP id re6mr40426168pab.31.1441592255318;
Sun, 06 Sep 2015 19:17:35 -0700 (PDT)
Received: from [192.168.1.5] (static-50-53-75-109.bvtn.or.frontiernet.net.
[50.53.75.109])
by smtp.gmail.com with ESMTPSA id g4sm2697047pdi.32.2015.09.06.19.17.34
(version=TLS1 cipher=ECDHE-RSA-RC4-SHA bits=128/128);
Sun, 06 Sep 2015 19:17:34 -0700 (PDT)
Sender: Andy Chase <asperous2@gmail.com>
From: Andy Chase <theandychase@gmail.com>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Message-Id: <05FB4991-E8E8-4F04-9D40-9D359B5EF00E@gmail.com>
Date: Sun, 6 Sep 2015 19:17:32 -0700
To: "bitcoin-dev@lists.linuxfoundation.org"
<bitcoin-dev@lists.linuxfoundation.org>, gmaxwell@gmail.com,
luke@dashjr.org, pete@petertodd.org, mike@plan99.net
Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2104\))
X-Mailer: Apple Mail (2.2104)
X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,
DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM,
RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.1
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on
smtp1.linux-foundation.org
Subject: [bitcoin-dev] [BIP/Draft] BIP Realistic Acceptance Process
X-BeenThere: bitcoin-dev@lists.linuxfoundation.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Bitcoin Development 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: Mon, 07 Sep 2015 02:17:36 -0000
Mediawiki formatted documented: =
https://gist.github.com/andychase/dadbfbb145de934d8e1c
=E2=80=94=E2=80=94
Title: BIP Realistic Acceptance Process
Author: Andy Chase=20
Status: Draft=20
Type: Process=20
Created: 2015-09-06
Abstract
=3D=3D=3D=3D=3D=3D=3D=3D
The current process for accepting a BIP is not clearly defined. While
BIP-0001 defines the process for writing and submitting a Bitcoin
improvement proposal to the community it does not specify the precise
method for which BIPs are considered accepted or rejected.
This proposal documents the current method for which BIPs are accepted
or rejected.
Due to the large number of BIPs and the different processes that were
followed, this BIP is specifically based around the acceptance process
of BIP-0064. This was picked because it picks up a lot of the edge cases
that BIPs often have.
Motivation
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
The primary motivation of this document is to allow for a discussion on
a realistic and acceptable BIP acceptance procedure. There has been a
quite few calls for documenting and using the current "realistic" method
for BIP acceptance:
Luke Jr.
> Any such a BIP like this needs to document the natural forces involved
> in real-world acceptance \[...\] it needs to be reasonably accurate so
> as to not change the outcome from its natural/necessary result.
Btc Drak
> I'm rather perplexed about \[another acceptance\] proposal. What
> exactly is wrong with the existing BIPs process?
Peter Todd
> IMO trying to "set up a system" in that kind of environment is silly,
> and likely to be a bureaucratic waste of time.
Adam Back
> The development process is to improve Bitcoin, not to randomly
> redefine it on a whim of one guy's opinion, nor the devs opinion.
Copyright
=3D=3D=3D=3D=3D=3D=3D=3D=3D
This document is placed into the public domain.
Process
=3D=3D=3D=3D=3D=3D=3D
This game works best with at least 3 people and a basic familiarity with
the BIP process.
- Story: You are a confident software superstar who has worked at
Hooli and has taken up a passion for Bitcoin. You've realized that
you need a specific protocol in Bitcoin core for an application you
are working on. You've been funded a lot of money for this project
so you don't really have any option but to try to put it into the
core protocol.
- Rules:
- Each turn counts as a day
- You can prevent anyone from taking a drink at any time by
handing them a buck, looking into their eyes and saying "we are
the future of Bitcoin"
- If you can't remember a word replace it with the word
"consensus"
- If try to take a drink but are out, you must try to explain what
a "fork" is to the person on your left in the most complicated
way possible.
- Start:
- Take a turn drawing up your implementation (draw a picture
of something)
- Hand the "implementation" to the person on your left who writes
down words explaining the picture in the abstract using
big words. Hand it back. This is your BIP Draft.
- Roll die, number rolled is the number of required elements
from BIP-0001 that you included in your BIP draft
- take a drink for each element you included
- If you rolled a 6 oops you didn't include a
copyright declaration. Nothing happens.
- Submit for comments on mailing list
- For three turns, receive criticism. Each turn:
- Someone says your proposal is trash! take a drink and
roll a die:
- If 1-2: Smash your hand on the table with your other
hand and take out the pain on the person to your
right who is criticizing your proposal. Take a drink
to ease the pain.
- If 3-4: Make an ad hominem statement about the
person on the right. Look them in the eye and take a
smug sip.
- If 5-6: Ignore it. Do nothing.
- Finish your drink if you get any positive remarks or
constructive feedback about your BIP (in other words don't
finish your drink).
- Submit draft pull request to bitcoin/bip.
- Story: Congrats! This represents an important milestone in
the BIP process. You put in the effort to get the BIP draft
vetted and you are ready to perform the janitorial task of
publicly submitting your BIP into the official BIP repo for
the world to see and refer to. The road ahead won't be easy,
there's rules to obey and guidelines to follow. Think this
will be quick and painless? Think again, a bit of short
sidedness or a forgotten rebase will cost you time, and time
is money.
- Setup (1 turn):
- Take a drink and roll a 6 sided die. Now self-assign a
BIP number based on that. Say: "I'm not sure what the
process is for picking a number, so I just grabbed one
that's free." Take a drink if the number was taken.
- Flip coin. If tails take a drink and argue about
following procedures: Say: "Seems like a timesink
to me".
- Roll 6 sided die. If you get a 7, BIP editor reads your
BIP and makes editorial suggestions.
- Flip a coin: If heads you will be asked to submit a
change to the index readme as well. If so drown your
misery by finishing your drink.
- Maintainence. Each day:
- Roll die. If 6:
- If you were asked to submit a change to the index
readme: flip a coin. If heads, your merge commit has
conflicts and you will be asked to rebase. If tails
continue:
- Did you receive any sort of comment in the last 2
days?
- If so do nothing
- If not, your BIP draft was merged! Celebrate!
Finish your drink.
- Flip coin. If heads take a drink as you received
comments about implementation-level issues in the high
level draft. Person to your right must say to you: "not
a fixed size type? And why does the signed-ness not
match the BIP?"
- You must now stealth fix issues in the background,
squashing history. Do not answer the question with
an explanation but instead remain positive. Say:
"Good catch, thanks!"
- Roll die. Take a stealth sip for each commit you
squashed
- Repeat until merged.
- Submit pull request with implementation
- Story: Amazing! Not only are you a brilliant writer and
communicator, you happen to be a software engineer as well.
Truely a the right combination of ethics and ethos in
your genetics. Now you get to submit your change to see if
it's a good fit for inclusion into Bitcoin core.
- Setup (1 turn)
- Flip a coin. If you get either heads or tails that means
you didn't include any unit tests. Take a drink.
- Maintenance (3 turns):
- (1 turn) Peter found a DDoS vulnerability in your code.
Take a drink of shame and say: "I don't think the attack
you have in mind works."
- (1 turn) Someone says you haven't tested this patch
enough yet. Take a test drink and say: "I attempted to
write unit tests for this, but Core has no
infrastructure for building test chains"
- (1 turn) Roll a dice. You can either take that many sips
or insult the person on your right that many times. The
person on your left may assist with the insults. Insults
must be one of:
- "that would complicate the implementation
considerably"
- "You are welcome to implement such an upgrade in a
future patch, if you like"
- "You're making assumptions about the design without
understanding it."
- "Your second statement is nonsensical."
- "This patch is what it is. If you'd like it to be
better feel free to contribute code to make it so."
- Roll die. If 1-5 your patch was never merged. If 6 your patch
was merged but then reverted. Finish your drink if
this happened.
- Hard fork
- Story: Fantastic! You've gone through the BIP draft process
and now its time to shift from the PR (pull request) process
to the PR (public relations) process. You goal is now to
convince everyone to join a client with your patch in it. If
you get 70% (the economic supermajority) to join your patch
you win the game. To signify they've joined your client,
take their BIP document.
- You have to get 100% if you are playing with 5 or less
people
- Setup (1 turn)
- Pick a reddit username. Flip a coin. If heads the person
on your left makes up a name for you. If tails use your
real name. Your profile picture is a strange picture you
of a much younger age. Everyone must now refer to you by
your reddit name prefixed but "u/" like so: "u slash
sloppy lizard, it's your turn".
- Controversy (each day):
- Roll a die:
- If 1: Make a blog post about how your client is
the best. Make up a headline and say it. Everyone
must thumbs up or thumbs down. Those who thumbs down
must take a drink. Roll a die and that number from
the left looping around joins your client (only if
their thumb was up, you can join your own client).
- If 2: Announce a new community without censorship.
Anyone can finish their drink to censor this action.
If not censored, roll a die to see who joins (same
rules as 1)
- If 3: You make a silly beer joke on twitter. Take
a drink. No one joins.
- If 4: Point to the roof! Last one to point mined one
of your blocks and has to join your client. They
must also take a drink and say (begrudgingly): "to
the moon".
- If 5: Someone incites Fear, Uncertainty, & Doubt
about your client. Everyone is now scared of you.
First one to look you in the eyes has to join your
client and take a drink. Lasts only until your
next turn.
- If 6: Ask someone to join your client. They
must accept. Both take a drink of friendship.
|