-
-
Notifications
You must be signed in to change notification settings - Fork 169
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.)
- Unix and Microservice Platforms by Brandom Bloom
- auth/metrics/config/monitoring are M things you have to do for every service.
- 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.