Skip to content

M by N Code Explosions

andychu edited this page Mar 9, 2022 · 10 revisions

Back to Perlis-Thompson Principle

Some concrete examples:

  • Linux distros!
    • I know this from Oil. It is annoying to have 10 different distros! You have M applications and N packaging tasks. There are some tools that try to ameliorate this.
  • Shell Completion
    • M applications to write completions for, and N shells.
    • This is what Shellac (Shell Autocompletion) was supposed to solve! However I think most shells including bash are too weak to support it at the "user level"
  • Language package managers (Python, JavaScript, Rust, ...) vs. operating systems. This partly explains the XKCD comic -- Python packaging is messy. (At the very least it's hard to test)
  • Google's cluster management: You're using 3.5 distributed operating systems / cluster managers when you use Kubernetes
  • Google service turnup (Broccoli Man, etc.)
  • Some parts of Windows? Well COM reduces the code explosion, just like Unix pipes do. It's dynamic / runtime software composition, not static / compile time.
  • Docker
    • duplicates push and pull
    • duplicates remote storage -- i.e. with the registry

Non-open source

  • The "Send To" functionality in iOS and Android operating systems.
Clone this wiki locally