On 05/12/2016 08:47 PM, Jack Stouffer wrote:

If you're serious about removing auto-decoding, which I think you and
others have shown has merits, you have to the THE SIMPLEST migration
path ever, or you will kill D. I'm talking a simple press of a button.

I'm not exaggerating here. Python, a language which was much more
popular than D at the time, came out with two versions in 2008: Python
2.7 which had numerous unicode problems, and Python 3.0 which fixed
those problems. Almost eight years later, and Python 2 is STILL the more
popular version despite Py3 having five major point releases since and
Python 2 only getting security patches. Think the tango vs phobos
problem, only a little worse.

D is much less popular now than was Python at the time, and Python 2
problems were more straight forward than the auto-decoding problem.
You'll need a very clear migration path, years long deprecations, and
automatic tools in order to make the transition work, or else D's usage
will be permanently damaged.

As much as I agree on the importance of a good smooth migration path, I don't think the "Python 2 vs 3" situation is really all that comparable here. Unlike Python, we wouldn't be maintaining a "with auto-decoding" fork for years and years and years, ensuring nobody ever had a pressing reason to bother migrating. And on top of that, we don't have a culture and design philosophy that promotes "do the lazy thing first and the robust thing never". D users are more likely than dynamic language users to be willing to make a few changes for the sake of improvement.

Heck, we weather breaking fixes enough anyway. There was even one point within the last couple years where something (forget offhand what it was) was removed from std.datetime and its replacement was added *in the very same compiler release*. No transition period. It was an annoying pain (at least to me), but I got through it fine and never even entertained the thought of just sticking with the old compiler. Not sure most people even noticed it. Point is, in D, even when something does need to change, life goes on fine. As long as we don't maintain a long-term fork ;)

Naturally, minimizing breakage is important here, but I really don't think Python's UTF migration situation is all that comparable.

Reply via email to