The document discusses open commit policies and pull requests for sharing ideas in code. It argues that an open commit policy allowing all contributors direct commit access may no longer be necessary with tools like GitHub, and that pull requests can be just as effective for collaborating on ideas. However, too many restrictions or processes that create friction for contributors sharing ideas through code can negatively impact an engineering organization's ability to innovate and scale. The document advocates letting people innovate freely and fail fast by getting out of their way and allowing them to share ideas directly in code.
I work on Jenkins / one of the things I managed was scalability of development / that’s something I deeply care about / in this talk I want to explore why it matters
What is OPC? / This is how Jenkins is run
That’s when … / DVCS solves the scalability problem
How can you trust random nobody?Is it like not locking the door?“You owe it to your users to be selective”
Does PR create a wrong incentive and funnel problem?
The real problem is that people have to come to argue with you / justify the change / defend the addition / In either case, they have to convince YOU to let changes in.
There’s positive functions as well / Think of Steve Jobs & iPhone
But it doesn’t really help resolve conflict of interest.Communication is an act of letting people see things that they didn’t. Communication is fundamentally painful
You have incredible advantage of being the gate keeper to control communicationThis is a great tragedy / you are not giving ideas a chance to be tested / you are not letting people “talk in code” to othersIt’s arrogant think that you can correctly judge all the new ideas
You really see that central VCS vs DVCS isn't the point, nor the open commitpolicy vs PR culture is the point.
You do feel drag.“Can your X do Y?”“I need integration with Z to close this deal”“We got another partner and we want integration by Monday”“Let’s build a PoC that combines X and Y”“What if X does Y instead of Z?”
You want to make it so that they can do that on their own, without bothering youTalk is cheap, show me the code.
Divide things up /make composable / let people see what you did, reassemble what they like
Divide things up /make composable / let people see what you did, reassemble what they like
Divide things up /make composable / let people see what you did, reassemble what they like
imaginary modularity vs visible exploitable modularity
Starting VM, preparing the right image, but deploying a different binary.Can I do that on my own, as an experiment, without affecting you?Rewire components. How do you do that? Can that be done uniformly?
Parallel here? We’ve seen this problem before in a big Java app. We solved that with “dependency injection”.(In CB, we want to solve this for ourselves in such a way that solves it for everyone.)These are the friction to express idea
Don’t ask me to turn your ideas into code / These go a long way to create greatness. Thank you.
imaginary modularity vs visible exploitable modularity