[bitcoin-dev] [BIP/Draft] BIP Realistic Acceptance Process

Andy Chase theandychase at gmail.com
Mon Sep 7 02:17:32 UTC 2015


Mediawiki formatted documented: https://gist.github.com/andychase/dadbfbb145de934d8e1c

——

    Title: BIP Realistic Acceptance Process
    Author: Andy Chase 
    Status: Draft 
    Type: Process 
    Created: 2015-09-06

Abstract
========

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
==========

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
=========

This document is placed into the public domain.

Process
=======

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.



More information about the bitcoin-dev mailing list