D versionning

deadalnix deadalnix at gmail.com
Sun Jul 15 16:46:18 PDT 2012


On 16/07/2012 01:06, Walter Bright wrote:
> Frankly, I don't know how to do what you're asking for. D users, every
> single day, clamor for:
>
> 1. more bug fixes
> 2. more new features
> 3. why aren't deprecated features removed more quickly?
> 4. why don't we add this breaking feature?
> 5. why did you add that breaking feature which broke my code?
>
> Often, these are the same people! Sometimes, even in the same post!
>

I understand that this may seems messed up. It isn't as much as it 
seems. It simply show the need for a more elaborate versionning and 
releasing system for D.

Theses needs do all exists. But not all at the same time or all in the 
same situation.

When dealing with code, as in all engineering fields, you always make 
tradeoffs. And changing things in a codebase have a cost. Presumably, 
every feature which are included into D has also a benefit.

The larger your codebase, the more interesting it is to slow down 
inclusion of new feature in your work. The smaller, the quicker you want 
to do it because the cost of doing so isn't the same, and you can 
benefit from the news feature at a very little cost.

Different situations, different needs. The same person can have both 
need at the same time, because it have experienced both situations with 
different codebases.

> And, to reiterate, we did release D1. Since its release, it has only
> received bug fixes. No breaking changes, no regressions. This,
> inevitably, has made many D1 users unhappy - they wanted new features
> folded in.
>
> So that was not satisfactory, either.
>
> Yes, I do feel a bit put upon by this, as I see no way to satisfy all
> these mutually contradictory requests.

As of D1, the problem is different.

I'll use again the example of PHP, because it has proven to manage the 
issue quite well, and because I discussed that quite a lot with Ramsus 
recently, so I know the topic quite well.

PHP release PHP 5.2 . Then it released PHP6 . PHP introduced breaking 
changes, just like D2 does. We can compare D1 as PHP5.2 and D2 as PHP6 .

It happened that some new feature of PHP6 weren't breaking features (GC, 
closures, namespaces) and some other were (introducing unicode into 
source code).

And here is what is done then, and here what we should learn from PHP. 
After PHP6, PHP relased PHP5.3 . PHP5.3 was basically PHP5.2 with all 
new feature of PHP6, except the one that was breaking.

PHP5.2 continued to live for very conservative users, 5.3 for user that 
want to use new features, and 6 for users that feel like beta testers.

(note 6 was then canceled, but for reasons completely unrelated to what 
we are talking here. I may talk about that, but this is really off topic 
here, so let's not epilogue on that).


More information about the Digitalmars-d mailing list