Skip to content

Instantly share code, notes, and snippets.

@andychase
Last active September 7, 2015 07:38
Show Gist options
  • Save andychase/dadbfbb145de934d8e1c to your computer and use it in GitHub Desktop.
Save andychase/dadbfbb145de934d8e1c to your computer and use it in GitHub Desktop.
[BIP/Draft] BIP Realistic Acceptance Process Drinking Game

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

Table of Contents

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] 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 you 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 of you in 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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment