Is there an intention to 'finish' D2?
FeepingCreature
feepingcreature at gmail.com
Thu Nov 18 09:38:09 UTC 2021
On Thursday, 18 November 2021 at 08:44:57 UTC, Abdulhaq wrote:
> On Tuesday, 16 November 2021 at 13:18:54 UTC, Imperatorn wrote:
>> On Tuesday, 16 November 2021 at 08:55:27 UTC, Abdulhaq wrote:
>>> Is there a set of features that, when fully working, will
>>> mean that D2 is now finished? Or will it forever be in a
>>> state of ongoing feature development?
>>>
>
>> Time will tell.
>>
>
> I have a feeling that half the people in this forum are
> thinking 'Are you trolling me, D2 was finished a decade ago',
> and the other half are thinking it's a non-question. Allow me
> to elaborate. I'm an occasional user of D since may years ago,
> a D supporter. I'd love to see it become more well known and
> used.
>
> I have now reached a stage in my career where I have a
> significant influence on what languages are being used in a
> commercial environment - and sometimes for large corporates. I
> understand what it takes to make a large commercial application
> succeed, to be maintainable, to have a sustainable future.
>
> With that user base in mind, probably the largest constituency
> of developers that D could hope to reach, there are some
> requirements, that I see D currently falling down on. I've just
> been an observer of D for the last few years but that is the
> case for nearly everyone in my position. I'm waiting for these
> major DIPs and -preview this and that to settle back down to
> Earth. I don't want to be having to work around **any** half
> baked features, I don't have time. E.g. I want it to be clearly
> defined how to implement and use ranges (from an observers POV
> it feels like this question has never been properly answered, I
> asked it many years ago and still it seems to be in motion).
>
> 'Finishing' D2 doesn't mean that feature development stops. It
> means that the community makes a concerted attempt to make
> **everything** work well that is claimed to work well, at least
> make it work to a spec. Pin this fully working feature set to a
> named long term supported version.
>
> It feels to this observer that there is not even a known list
> of features that will one day work fully, and on which
> platforms that will be done for. Until that is the case, I
> cannot base my plans on D in a commercial environment.
>
> I believe that Walter et al. don't think that the user base I
> am talking about, corporate application developers, are their
> target audience. They have some other 'system' developers in
> mind. That's fine with me! This post simply serves to point out
> to the rest of the community why this particular group remain
> waiting in the wings.
Disclaimer: Despite saying 'we' a few times, I do *not* speak for
Funkwerk. All opinions are my own.
Offering a different take, that may be compatible with yours:
At Funkwerk, we use D in production, doing high-throughput
backend work. (By cycle mostly JSON encoding/decoding, to be
honest.) I want to be clear that if we ever switch to another
language, it will almost certainly *not* be because D changes too
fast or is too unstable, but because it changes too *slow* and is
too set in its ways.
Barring breaking issues, we roll out compiler updates maybe every
three major versions or so. This then takes a few months to
propagate through all our services. However, especially in the
last few versions, we've rarely had regression issues from DMD
upgrades. I'd estimate the time spent on reporting or fixing
compiler regressions as one or two developer-weeks in total
across, uh, *checks* ~400kloc just for services that are at DMD
2.09*, ie. reasonably recent and actively maintained. Time to get
rid of deprecations is about that high again. In comparison,
whenever we stumble on a novel compiler bug, that eats away
another half-day or so from dustmiting. And it's not like we
don't use the language to its fullest - as pointed out in
previous dconfs, we use ranges very heavily (almost to the
exclusion of imperative code) to enable a functional style, and
boilerplate/serialized on github demonstrate that we aren't
afraid of templates either. And yet, every time we upgrade, we
maybe get a few instances of deprecations per service, that are
easily fixed (maybe that we even pushed for), a few instances of
regressions across the entire codebase, usually resulting in
compile errors, extremely rarely in code errors, and not much
change otherwise.
However, there is also time taken to work around language
deficiencies. This is mostly not a big issue, and it's hard to
quantify, but purely as a feeling I wouldn't put it as much lower
than the previous issues. And there are things that should work
but that we don't even attempt anymore, or only with great
trepidation, such as marking data structures as immutable, due to
language limitations with reassignment. (At least I got
rebindable deployed internally, fingers crossed.)
I once said to a colleague that the process of learning D
consists almost entirely, by time, of what *not* to do - what
sort of things the language is happy about, what it only lets you
get away with grudgingly, and what it will punish you for. Though
some of the most severe gotchas have gotten fixed, I stand by
this still.
All our issues with the language are documented and well-known in
the community. D is efficient and we're all comfortable with it,
but it's not like we're married to it; our microservice
architecture does allow us to experiment with different
frameworks for service development. As such, if we ever switch
away from D, it will be because we've found something better -
ie. because D was moving too slow to keep up with language
improvements, not because it was moving so fast that it
overwhelmed us. At present, I do not see that as a credible
risk.On Thursday, 18 November 2021 at 08:44:57 UTC, Abdulhaq
wrote:
> On Tuesday, 16 November 2021 at 13:18:54 UTC, Imperatorn wrote:
>> On Tuesday, 16 November 2021 at 08:55:27 UTC, Abdulhaq wrote:
>>> Is there a set of features that, when fully working, will
>>> mean that D2 is now finished? Or will it forever be in a
>>> state of ongoing feature development?
>>>
>
>> Time will tell.
>>
>
> I have a feeling that half the people in this forum are
> thinking 'Are you trolling me, D2 was finished a decade ago',
> and the other half are thinking it's a non-question. Allow me
> to elaborate. I'm an occasional user of D since may years ago,
> a D supporter. I'd love to see it become more well known and
> used.
>
> I have now reached a stage in my career where I have a
> significant influence on what languages are being used in a
> commercial environment - and sometimes for large corporates. I
> understand what it takes to make a large commercial application
> succeed, to be maintainable, to have a sustainable future.
>
> With that user base in mind, probably the largest constituency
> of developers that D could hope to reach, there are some
> requirements, that I see D currently falling down on. I've just
> been an observer of D for the last few years but that is the
> case for nearly everyone in my position. I'm waiting for these
> major DIPs and -preview this and that to settle back down to
> Earth. I don't want to be having to work around **any** half
> baked features, I don't have time. E.g. I want it to be clearly
> defined how to implement and use ranges (from an observers POV
> it feels like this question has never been properly answered, I
> asked it many years ago and still it seems to be in motion).
>
> 'Finishing' D2 doesn't mean that feature development stops. It
> means that the community makes a concerted attempt to make
> **everything** work well that is claimed to work well, at least
> make it work to a spec. Pin this fully working feature set to a
> named long term supported version.
>
> It feels to this observer that there is not even a known list
> of features that will one day work fully, and on which
> platforms that will be done for. Until that is the case, I
> cannot base my plans on D in a commercial environment.
>
> I believe that Walter et al. don't think that the user base I
> am talking about, corporate application developers, are their
> target audience. They have some other 'system' developers in
> mind. That's fine with me! This post simply serves to point out
> to the rest of the community why this particular group remain
> waiting in the wings.
Offering a different take, that may be compatible with yours:
At Funkwerk, we use D in production, doing high-throughput
backend work. (By cycle mostly JSON encoding/decoding, to be
honest.) I want to be clear that if we ever switch to another
language, it will almost certainly *not* be because D changes too
fast or is too unstable, but because it changes too *slow* and is
too set in its ways.
Barring breaking issues, we roll out compiler updates maybe every
three major versions or so. This then takes a few months to
propagate through all our services. However, especially in the
last few versions, we've rarely had regression issues from DMD
upgrades. I'd estimate the time spent on reporting or fixing
compiler regressions as one or two developer-weeks in total
across, uh, *checks* ~400kloc just for services that are at DMD
2.09*, ie. reasonably recent and actively maintained. Time to get
rid of deprecations is about that high again. In comparison,
whenever we stumble on a novel compiler bug, that eats away
another half-day or so from dustmiting. And it's not like we
don't use the language to its fullest - as pointed out in
previous dconfs, we use ranges very heavily (almost to the
exclusion of imperative code) to enable a functional style, and
boilerplate/serialized on github demonstrate that we aren't
afraid of templates either. And yet, every time we upgrade, we
maybe get a few instances of deprecations per service, that are
easily fixed (maybe that we even pushed for), a few instances of
regressions across the entire codebase, usually resulting in
compile errors, extremely rarely in code errors, and not much
change otherwise.
However, there is also time taken to work around language
deficiencies. This is mostly not a big issue, and it's hard to
quantify, but purely as a feeling I wouldn't put it as much lower
than the previous issues. And there are things that should work
but that we don't even attempt anymore, or only with great
trepidation, such as marking data structures as immutable, due to
language limitations with reassignment. (At least I got
rebindable deployed internally, fingers crossed.)
I once said to a colleague that the process of learning D
consists almost entirely, by time, of what *not* to do - what
sort of things the language is happy about, what it only lets you
get away with grudgingly, and what it will punish you for. Though
some of the most severe gotchas have gotten fixed, I stand by
this still.
All our issues with the language are documented and well-known in
the community. D is efficient and we're all comfortable with it,
but it's not like we're married to it; our microservice
architecture does allow us to experiment with different
frameworks for service development. As such, if we ever switch
away from D, it will be because we've found something better -
ie. because D was moving too slow to keep up with language
improvements, not because it was moving so fast that it
overwhelmed us. At present, I do not see that as a credible risk.
*On the other hand,* we also don't really use DIP features. I
think maybe this is a communications problem. In my experience,
the parts of D that are released and have been used for a few
major versions tend to be very stable and hard to change. So
people see all the cool new things, @live, DIP1000, ImportC, and
think that the language is still in flux. But the core
functionality of the language, ranges, templates, constness etc.
is and has been incredibly stable even since D1, so if you just
ignore the rapidly mutating fringe you'll get exactly what you
want - a stable, even too stable, subset.
*On the other hand,* we also don't really use DIP features. I
think maybe this is a communications problem. In my experience,
the parts of D that are released and have been used for a few
major versions tend to be very stable and hard to change. So
people see all the cool new things, @live, DIP1000, ImportC, and
think that the language is still in flux. But the core
functionality of the language, ranges, templates, constness etc.
is and has been incredibly stable even since D1, so if you just
ignore the rapidly mutating fringe you'll get exactly what you
want - a stable, even too stable, subset.
More information about the Digitalmars-d
mailing list