David Chisnall (*Now with 50% more sarcasm!*) on Nostr: I don’t object to ‘if you don’t like it, fork it’ as a response as long as ...
I don’t object to ‘if you don’t like it, fork it’ as a response as long as you have structured the project to make it easy for people to maintain downstream forks. Indeed, I consider the existence of downstream forks to be a sign of health in an open-source ecosystem. This means:<li>External interfaces to the rest of your ecosystem need to be 100% stable and to be added slowly. You must have feature-discovery mechanisms that make it easy for things to work with old versions of your project.</li><li>Internal code churns infrequently. Pulling in changes from upstream and reviewing them should be easy.</li><li>Internal structure is well documented and modular.</li>
This leads to small projects with loose coupling that can be *done* (or, at least, ‘maintenance mode’, where they get occasional bug fixes but meet their requirements and don’t need to change).
A lot of projects were like that 20-30 years ago. Reaching the ‘maintenance mode’ state was a badge of honour: you had achieved your goals and no one else needed to reinvent the wheel. New things could be built as external projects. The last few decades have seen a push towards massive too-big-to-fork projects that have external interfaces that the rest of the ecosystem needs to integrate with, which are complex and lead to tight coupling.
Published at
2026-03-22 09:47:48 UTCEvent JSON
{
"id": "7829ec8ecc8e07d2d0283ff31472e00bf2858ab361d491168a55320534263ad7",
"pubkey": "8a30e1f5176e1c530ac88aec455539e3fe2b5d7f5d3ce0b674392bbaac83281b",
"created_at": 1774172868,
"kind": 1,
"tags": [
[
"proxy",
"https://infosec.exchange/@david_chisnall/116272193136749031",
"web"
],
[
"proxy",
"https://infosec.exchange/users/david_chisnall/statuses/116272193136749031",
"activitypub"
],
[
"L",
"pink.momostr"
],
[
"l",
"pink.momostr.activitypub:https://infosec.exchange/users/david_chisnall/statuses/116272193136749031",
"pink.momostr"
],
[
"-"
]
],
"content": "I don’t object to ‘if you don’t like it, fork it’ as a response as long as you have structured the project to make it easy for people to maintain downstream forks. Indeed, I consider the existence of downstream forks to be a sign of health in an open-source ecosystem. This means:\u003cli\u003eExternal interfaces to the rest of your ecosystem need to be 100% stable and to be added slowly. You must have feature-discovery mechanisms that make it easy for things to work with old versions of your project.\u003c/li\u003e\u003cli\u003eInternal code churns infrequently. Pulling in changes from upstream and reviewing them should be easy.\u003c/li\u003e\u003cli\u003eInternal structure is well documented and modular.\u003c/li\u003e\n\nThis leads to small projects with loose coupling that can be *done* (or, at least, ‘maintenance mode’, where they get occasional bug fixes but meet their requirements and don’t need to change).\n\nA lot of projects were like that 20-30 years ago. Reaching the ‘maintenance mode’ state was a badge of honour: you had achieved your goals and no one else needed to reinvent the wheel. New things could be built as external projects. The last few decades have seen a push towards massive too-big-to-fork projects that have external interfaces that the rest of the ecosystem needs to integrate with, which are complex and lead to tight coupling.",
"sig": "2553cc598e40e58258542d58916bd08732bc63b7a7e90b7582b67fa3f57c0c684107aa206012c17f0edd5800f133173a8aaba2a1a50ecd51ea177813317e096b"
}