setori88
2018-1-14 11:20:00

@notjack (in response to you side channel msg “it does have tradeoffs - maintaining constant backwards compatibility is both extraordinarily difficult and quite limiting. There’s interest in exploring alternatives for racket.”) Jill, why doesn’t the Racket community explore a form of function annotation whereby exported function have a lifecycle in that the start out as raw (only the library writer uses/develops it at this stage, thenmove onto draft - this stage maybe one consumer might use it, but both raw and draft are susceptible to change, anyone using it knows this is shifty sand. Once happy the library writer puts a stable annotation, signalling this function signature will not change. Only newly named function exports may be used should it be required. After stable the deprecated annotation is used, the function implementation still exists but an evaluation warning is printed. After this the legacy annotation is used, here the entire function implementation is replaced by an assert. This gives the pkg implementor flexibility to evolve the exported function against a wider user base. 2cw


dmitryhertz
2018-1-14 12:58:39

@samth thank you! )


greg
2018-1-14 16:38:07

@setori88 Although I don’t think I’ve seen it formally documented (?), there is a convention about not using things a package provides under a private module path. A related signal is that if a package doesn’t document something yet/ever, maybe I shouldn’t use it. IMHO these are fine, existing ways to handle the “raw” and “draft” stages you mention. (Also, it’s wonderful to share code on GitHub or wherever, even if you’re not yet willing/able to commit making it a package for other people to depend on.)

As for “deprecated”, I think that’s something to signal through documentation. (Not a code warning, because next point…) As for “legacy” a.k.a. 410 Gone, I think the answer is “please just don’t do that; why would you do that to users of your package.”

I’ve seen @jeapostrophe point out that package ecosystems are as much social as technical.


dedbox
2018-1-14 17:30:59

> package ecosystems are as much social as technical The old Perl community is an excellent example of this.


dedbox
2018-1-14 17:33:52

And JavaScript / npm is a good example of the prevailing alternative.


parzival
2018-1-14 19:14:18

@parzival has joined the channel