3 ms·
If a language is to play the long game, they must be conservative on what they add. Even a minimal runtime like Node is still wounded by the addition of a few b
by yoshuaw 10y ago
If a language is to play the long game, they must be conservative on what they
add. Even a minimal runtime like Node is still wounded by the addition of a few
broken interfaces into the core platform (even emitters, streams, domains to
name a few). These cannot be stripped out of the platform because they're
"blessed" and now everyone will forever have a bad time. I suggest we don't
do that for Rust.
For a language to remain relevant in the long term, a system must be capable of
evolving. Going out there and blessing potentially conceptually incorrect
packages such as Mio is therefore not a good idea. The notion of "platforms"
best resides in userland, where collections can compete and evolve.
By keeping platforms / package collections in userland we can get organic
collections of stuff that make sense to bundle together. Imagine a "server
platform", an "event loop platform", a "calculus platform", a "programming
language platform". It would be detrimental to creativity to have all these
collections live in the shadow of the "rust committee blessed platform".
But so yeah, I'm not opposed to the idea of platforms - I just don't think
blessing userland stuff from the top down is the right play in the long term.
Tl;Dr: package collections sound like a cool idea, but if you care about the
long term, imposing them from the top down is bad
- rcthompson 10y ago> These cannot be stripped out of the platform because they're "blessed" and now everyone will forever have a bad time. I suggest we don't do that for Rust. It sounds like the proposal in the OP avoids this problem by having versioned platforms that are independent of the Rust version. So if something turns out to be a bad idea, it can be stripped out of later platform versions and replaced with something better without disrupting users of the older platforms.
- vvanders 10y agoYeah, I really liked how DirectX did versioning in that respect. Lets you improve the API while preserving backwards API and signature. If you can give Microsoft something it's that they do backwards compatibility well. I don't see why that couldn't be worked into this idea.
- rkangel 10y ago> If you can give Microsoft something it's that they do backwards compatibility well. Completely agree. Don't underestimate the amount of effort it costs them though.
- erickt 10y ago> By keeping platforms / package collections in userland we can get organic collections of stuff that make sense to bundle together. Imagine a "server platform", an "event loop platform", a "calculus platform", a "programming language platform". It would be detrimental to creativity to have all these collections live in the shadow of the "rust committee blessed platform". That's exactly what we want to do. We don't have the domain expertise in many of these areas, but we want to enable those ecosystems to help develop their own platforms. It's one of our goals to make sure any infrastructure we develop for the "Rust Platform" is usable throughout our community.