Hasty Briefsbeta

Bilingual

Package Management Is a Wicked Problem

3 months ago
  • #package-management
  • #wicked-problems
  • #software-development
  • Horst Rittel and Melvin Webber introduced 'wicked problems' in urban planning in 1973, describing them as problems that change when you try to solve them.
  • Package management is a wicked problem due to its complexity, involving millions of packages, versions, and downloads, with small improvements affecting all dependent projects.
  • Rittel and Webber identified ten characteristics of wicked problems, each applicable to package management.
  • 1. No definitive formulation: The problem and solution are intertwined, with different interpretations of terms like 'package management'.
  • 2. No stopping rule: Package managers evolve continuously without a definitive endpoint.
  • 3. Good-or-bad rather than true-or-false: Solutions are subjective, based on stakeholder perspectives.
  • 4. No immediate or ultimate test: Consequences of decisions emerge over time, making it hard to evaluate alternatives.
  • 5. Irreversible consequences: Decisions leave lasting impacts, like typosquatting in PyPI or version ranges in npm.
  • 6. No well-described set of solutions: Conflicting stakeholder goals make it impossible to enumerate all solutions.
  • 7. Essential uniqueness: Solutions are context-specific, as seen in npm, Cargo, and Python's different approaches.
  • 8. Symptoms of other problems: Issues like supply chain security are entangled with broader systemic problems.
  • 9. Multiple causal explanations: Different stakeholders propose competing theories for problems and remedies.
  • 10. No right to be wrong: Package manager designers face high stakes, with no room for errors.
  • The wicked problem framework explains why progress in package management is slow and solutions create new problems.
  • Rittel and Webber advocated participatory planning, emphasizing stakeholder collaboration and continuous iteration.
  • The article suggests shifting focus from perfect tools to better communication and interfaces, like a shared protocol for package management.