Platform features that require coordination often can't be "solved" in userland.
- Platform features that require coordination often can't be "solved" in userland.
- Userland is the region of the platform where platform users can do whatever they want on top of what the platform creators made.
- It's easier to change, and thus is a higher pace layer.
- Subsuming functionality into the platform is expensive and should only be done when there's some benefit to doing it in the platform.
- An overly-large platform gets harder to maintain and reason about, for one thing.
- However, there is a class of problems that can be solved technically in userland, but are actually a coordination problem.
- For example, many years ago Javascript had no notion of Classes.
- You could create class-like things in userland by swizzling prototypes, and lots of different libraries had subtly different conventions.
- This led to less interoperability than was ideal.
- No schelling point could emerge; there was a sea of subtly incompatible options.
- If you used an object from another framework it might have a subtly different lifecycle for no good reason.
- Then Javascript formally ensconced one of the notions of Classes into the language.
- It just added "sugar" for one of the conventions.
- It subsumed that one convention down into the platform layer.
- This instantly solved the schelling point problem in userland.
- Now there was no reason not to simply use the one official way.