Mars Drafting Library - Official community driven library

Zach the Mystic via Digitalmars-d digitalmars-d at puremagic.com
Mon Feb 2 18:38:56 PST 2015


On Monday, 2 February 2015 at 22:18:59 UTC, Piotrek wrote:
> On Monday, 2 February 2015 at 21:19:01 UTC, Zach the Mystic 
> wrote:
>
>> I think std.experimental should essentially be its own 
>> library, with its own slot next to phobos on the github repo. 
>> I'm open to changing the name or something... but if we have 
>> both std.experimental *and* your new mars, what do you think 
>> is the real difference? How can std.experimental be "sort of" 
>> experimental, but really not, whereas mars is "really 
>> actually" experimental? Where is the cutoff line? How would 
>> anyone know whether they reached it or not?
>
> Hard to admit but I thought about removal of std.experimental 
> ;), then I tried to find a better solution (not sure I did). 
> After all I don't want to make more enemies than I have.
>
> So I got an idea that std.experimental can be adopted for the 
> piloting new modules into Phobos when approved to be a standard.

I'm arguing from the perspective that the approval must come 
first, and the piloting second. Who would want to develop a 
module in the "pre-pilot" phase, without having any idea of 
whether they were developing it finally for phobos or just 
3rd-party use, then wait months or years to find out if the 
leadership is even *interested* in what they're doing? Why would 
people try to meet high standards without knowing if those 
standards are actually going to be required or not? It's like an 
unpaid internship: "Work for us for free, and we'll let you know 
at the end whether we want your work or not."

>> I'd even make one more point, that all current phobos modules 
>> known to be in need of revamping be copied wholesale in their 
>> current forms to std.experimental, with the top documentation 
>> saying, "This is the experimental version of the old std.xxx, 
>> which needs *your* help with its redesign and implementation. 
>> Feel free to break the current API by improving it. This is 
>> *not* currently considered a stable module."
>
> Haha, let's not lose our nerves :) It's not that bad. Moreover. 
> I can barely find  the equivalent level of code awesomeness as 
> it is in D libraries. We just need to speed up the progress and 
> reduce work fragmentation.

It occurred to me that when copying a module to std.experimental, 
the documentation at the top of the original std module should 
say, "This module has been feature frozen while work on the new 
one continues at std.experimental.xxxx. The API for this module 
will not break, nor will it be improved. Please consider using 
std.experimental.xxxx and giving feedback for its design, since 
eventually this module will be replaced with that one."

I do realize that this is kind of what happened with D1 and D2, 
of course. Now you're going to have competing modules, and some 
people won't want to give up on the old one. So you will have to 
deprecate every change that breaks the old API first before 
finally replacing it with the new one. Well, it's a hard problem, 
and yet, "Most D code has yet to be written." But then again, I'm 
not the one who has to take fire for breaking people's old code, 
and I don't know if my attitude would change if I were.




More information about the Digitalmars-d mailing list