Reading 08: say fork 10 times fast

john
3 min readApr 11, 2021

I want to start by saying that I personally haven’t contributed to open-source communities, so my ideas aren’t based in experience.

Forking

The open-source community’s dislike for forks really surprised me when I first read about it. In theory, it doesn’t make sense, especially with licenses that allow modification and distribution. Why wouldn’t a community geared towards an almost evolutionary approach to writing software not appreciate evolutionary branches?

Raymond brought up a lot of differing reasons why this is viewed so poorly, and several stuck with me.

Forking as judgement makes sense to me. When somebody forks a project, they are signaling they want to make a change that the current state of the project gets in the way of. Maybe the change would move slower through official channels, maybe the maintainer thinks the changes are bad, maybe the user wants to take the project in a totally different direction. Whatever the reason, if they make that fork public, they are signaling disapproval with the project or the project’s evolution. Not forking is the default to show respect.

In theory this sounds good, but I could easily see this falling apart if the maintainer is hostile or has a poor eye for quality. Ideally, these are the rare cases.

Thinking in economic terms of sunk cost and expected reward, and in evolutionary terms of the survival of normally only one child, also helps clarify forking. If a programmer is trying to optimize for their work paying dividends of respect in the future, they would tend to shy away from projects that have been forked often in the understanding that they could wind up on the wrong side of a future split. Forks also seem to slowly erode ownership away from the prior owner, even if their name is still on the project.

This has an interesting comparison with stability in economics. Argentina has a notoriously unstable government. Leaders with sharply differing philosophies come and go, and the country’s policies swing wildly and often as a result. Even despite their economic might in the early 1900s, investments from corporations or other have slowly been pulled, partially due to the country’s instability. In the same way, I predict programmers would be less likely to contribute to highly unstable projects.

Main Question

The social structure of an open-source project is mainly dictatorial, with the maintainer filling the role of dictator. If the project does well, the maintainer reaps the respect. Other active contributors within that project reap respect from their peers in proportion to their contributions.

I’m not fully convinced on this respect stuff, but the maintainer as dictator implies that how the maintainer acts and sets up the project dictates the quality of the community. A healthy community needs first to be led healthily. This manifests as letting contributors take ownership and do good work (not getting in their way too much), not being overly hostile to new/learning members, and attacking poor quality but never individuals.

I would guess that most initial contributions to open-source come out of curiosity or pride of work, but quickly changes to a desire for love, status, and camaraderie within the community. I would guess most contributors leave because the project is not heading in a direction they want, they don’t feel appreciated, or simply that collaboration with others is not their cup of tea.

Notes

  • ideology doesn’t match with actions
  • “adaptive and cooperative behaviors”
  • pragmatists mainly want good practice widely adopted by industry, don’t really hate software “hoarding”
  • “The pragmatist values having good tools and toys more than he dislikes commercialism”
  • unspoken rules → why is forking frowned upon?
  • official patches: “approved and integrated into the evolving software by the publicly recognized maintainers”
  • process of open-source project ownership very respectful (deferential) to current owner
  • all changes moving in direction of “preserving the credits and change histories of projects in ways that (among other things) establish the legitimacy of the present owners” → preserving legitimacy
  • land ownership analogy
  • customs correlate with expected return on effort
  • “In gift cultures, social status is determined not by what you control but by what you give away
  • “It appears that any craftsmanship culture ultimately must structure itself through a reputation game”
  • ah disliking forking makes more sense in a context of working together to maintain market share and ensure reward
  • quality is being protected
  • maintainers need an eye for quality
  • category killers
  • animal territoriality as a mechanism to avoid violence
  • a home page should be a map of a project

--

--