summaryrefslogtreecommitdiff
path: root/e3/73127d72876178f45cf68d9fef49074eff1523
blob: 3fb578374b655acbb8237d5d87a8bffe32a5b9e8 (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
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.