Trust and confidence #
One of the main principles at Apache (as in The Apache Software Foundation) is
“Community over Code” - having the goal to build projects that survive
single community members loosing interest or time to contribute.
In his book “Producing Open Source Software” Karl Fogel describes this model of
development as Consensus-based
Democracy (in contrast to benevolent dictatorship):
“Consensus simply means an agreement that everyone is willing to live with. It
is not an ambiguous state: a group has reached consensus on a given question
when someone proposes that consensus has been reached and no one contradicts the
assertion. The person proposing consensus should, of course, state specifically
what the consensus is, and what actions would be taken in consequence of it, if
those are not obvious.”
What that means is that not only one person can take decisions but pretty much
anyone can declare a final decision was made. It also means decisions can be
stopped by individuals on the project.
This model of development works well if what you want for your project is
resilience to people, in particular those high up in the ranks, leaving
at the cost of nobody having complete control. It means you are moving slower,
at the benefit of getting more people on board and carrying on with your mission
after you leave.
There are a couple implications to this goal: If for whatever reason one single
entity needs to retain control over the project, you better not enter the
incubator like suggested
here. Balancing control and longevity is particularly tricky if you or your
company believes they need to own the roadmap of the project. It’s also tricky
if your intuitive reaction to hiring a new engineer is to give them
committership to the project on their first day - think again keeping in mind
that Money
can’t buy love. If you’re still convinced they should be made committer,
Apache probably isn’t the right place for your project.
Once you go through the process of giving up control with the help from your
mentors you will learn to trust others - trust others to pick up tasks you leave
open, trust others they are taking the right decision even if you would have
done things otherwise, trust others to come up with solutions where you are
lost. Essentially like Sharan Foga said to Trust the water.
Even coming to the project at a later stage as an individual contributor you’ll
go through the same learning experience: You’ll learn to trust others with the
patch you wrote. You’ll have to learn to trust others to take your bug report
seriously. If the project is well run, people will treat you as an equal peer,
with respect and with appreciation. They’ll likely treat you as part of the
development team with as many decisions as possible - after all that’s what
these people want to recruit you for: For a position as volunteer in their
project. Doing that means starting to Delegate like a Pro as
Deb Nicholson once explained at ApacheCon. It also means training your
capability for Empathy like Leslie
Hawthorn explained at FOSDEM. It also means treating all contributions alike.
There’s one pre-requesite to all of this working out though: Working in the open
(as in “will be crawled, indexed and made visible by the major search engine of
the day”), giving control to others over your baby project and potentially over
what earns your daily living means you need a lot of trust not onnly in others
but also in yourself. If you’re in a position where you’re afraid that missteps
will have negative repercussions on your daily life you won’t become comfortable
with all of that. For projects coming to the incubator as well as companies
paying contributors to become open source developers in their projects in my
personal view that’s an important lesson: Unless committers already feel self
confident and independent enough of your organisation as well as the team they are part
of to take decisions on their own, you will run into trouble walking towards
at least Apache.