“Daring ideas are like chessmen moved forward. They may be beaten, but they may start a winning game.”
Johann Wolfgang von Goethe.
At the top of the following web link, I talk about the chess-board analogy.
In a regular game of chess, each of the pieces are isolated from one another, meaning that if one piece moves, no others are impacted (except when an opponent’s piece is taken). Each has a pre-defined set of rules. The knight moves in an L-shape (of two squares / one square) in any direction. The rook moves horizontally or vertically, through any number of unoccupied squares. etc.
But in an OSS, many modules have integrations, much like entwining strings, pulleys, etc between one piece and others. So in the game of OSS chess, when a player wishes to move their knight it also drags any dependent pieces indiscriminately. In large OSS with significant inter-dependencies the game quickly devolves into chaos even with exquisite planning.
One trick is to remove as many strings and pulleys before undertaking a change in your OSS if possible. Simplify before transforming rather than vice versa.