* [bitcoin-dev] [BIP/Draft] BIP Realistic Acceptance Process
@ 2015-09-07 2:17 Andy Chase
0 siblings, 0 replies; only message in thread
From: Andy Chase @ 2015-09-07 2:17 UTC (permalink / raw)
To: bitcoin-dev, gmaxwell, luke, pete, mike
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.
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2015-09-07 2:17 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-09-07 2:17 [bitcoin-dev] [BIP/Draft] BIP Realistic Acceptance Process Andy Chase
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox