Uri class and parser
Jonathan M Davis
jmdavisProg at gmx.com
Sun Oct 28 04:39:35 PDT 2012
On Sunday, October 28, 2012 11:32:14 Jens Mueller wrote:
> Walter Bright wrote:
> > On 10/26/2012 2:13 AM, Jonathan M Davis wrote:> There's definitely
> > some truth to that, but Walter in particular seems to be
> >
> > > against breaking anything period.
> >
> > We have a number of fed up developers and abandoned, dead projects
> > because of breaking changes.
> >
> > It MUST STOP.
>
> Can you point me to the data that you base you conclusions on?
I don't know everything that he's basing it on, but we've definitely had
complaints in this newsgroup in the past over breaking changes (and it
wouldn't surprise me if the folks in this newsgroup are more willing to put up
with breaking changes than most D users). Even changes which are very popular
can generate complaints about the code breakage that they cause. When the
library is younger, it's not such a big deal, but as it matures, it becomes a
very big deal. And at this point, we seem to be mature enough that we're
moving away from the stage where it's okay to break stuff without a very good
reason. Certainly, if we don't reach there soon, then it's going to be much
harder for D to catch on. We'd like to get to the point that we don't break
anything ever (or at least don't break anything without a major version change
of some kind).
> I wonder whether each breaking change can be considered equal.
I think that you can talk Walter into breaking changes if doing so is very
beneficial (e.g. we're looking at removing opEquals, opCmp, toHash, and
toString from Object because doing so would have huge benefits with regards to
const-correctness among other things), but something as simple as renaming a
function or module definitely isn't going to sit well with him, pretty much
regardless of how much code uses it or how simple a change it is.
> And what's the plan to improve Phobos then? Just have two modules?
In this case, if moving std.curl to std.net.curl isn't deemed worth the
breakage that it would cause (and I'd be very suprised if Walter thought that
it was), then we'd probably just keep std.curl and not move it at all. And
while reorganizing some modules might be desirable, it really doesn't buy us
much. I'd strongly argue that if it's not worth putting a module through the
deprecation process in order to rename it, then it shouldn't be renamed at
all. Having both std.curl and std.net.curl around permanently (even if one is
basically an alias of the other), just seems like a bad idea to me. It creates
clutter in the library. Best case, we could rename std.curl to std.net.curl,
leaving std.curl empty save for the fact that it publicly imports
std.net.curl, undocument std.curl completely, and then leave it around as
undocumented, but that still creates clutter. It's just less visible.
Aside from there being two modules as part of deprecating one and getting code
to use the new one (which we really do want to stop doing), then I would only
expect us to end up with two modules if we completely revamped a module but
didn't want to break code using the old version (e.g. std.xml - > std.xml2).
- Jonathan m Davis
More information about the Digitalmars-d
mailing list