Unofficial wish list status.(Jul 2008)

John Reimer terminal.node at gmail.com
Mon Jun 30 23:17:28 PDT 2008


Hello Sean,

> == Quote from bearophile (bearophileHUGS at lycos.co)'s article
> 
>> 4tuu4k002 at sneakemail.com:
>> 
>>> This is the monthly status for the unofficial d wish list:
>>> 
>> ...
>> It's curious to see that many or most of the top desired things don't
>> seem among the list of the next things
> planned as improvements/changes for the D/DMD. I don't know what this
> means. Are people asking for unimportant things? Are the D designers
> smarter? Are the two groups ignoring each other?
> 
> For better or worse, I don't personally feel that the D designers
> listen to the D community
> at all.  Certainly not since D 2.0 was started at any rate.  Or
> perhaps it's just that my goals
> with D simply diverged beginning with 2.0.
>> When I think about such matters I remember a quote, usually
>> attributed to Henry Ford: "If I'd asked people what
>> 
> they wanted, they would have said a faster horse."
> 
>> So maybe D programmers want faster horses, while D developers are
>> inventing/providing cars :-) I don't know.
>> 
> It's an interesting question, and one I've been mulling over for a few
> years now.  My
> understanding is that C++ was created as a very community-driven
> effort right from the
> start while D was designed based very much on what Walter thought
> would be good in a
> language.  As a result, C++ ended up bogged down with a lot of legacy
> C baggage that the
> community insisted was necessary for them to adopt C++, while D could
> change tracks on
> the designer's whim and no one could say otherwise.  Generally, I
> think the D approach works
> far better so long as the designer's goals match the interests of the
> community, but it's a
> pretty risky path to follow since the designer is basically betting
> the farm on the hope that the
> community will agree with his vision.  In the past I've been pretty
> free with my opinions about
> language features and I do this because I don't want to feel that I
> didn't try to make myself
> heard if I ever give up on D.  At least then I can feel that I did my
> best to communicate to the
> designers what's important to me as a user of the language.
> Sean
> 


Hi Sean,

I agree with much of what you say.  I have a few thoughts too (Dare I? :D).

D design has actually moved into a tightly controlled group, apparently motivated 
by the authors desire to avoid the C++ committe process: there is no way 
to say this is a wrong approach (yet, it's a reactive one), although there 
is often an apparent lack of communication from the D designers to the community 
at large (However, some might argue that the core designers did try to participate 
here only to be "tarred and feathered"  by the community). Whether this is 
better or worse (compared to C++) for the growth of the language is yet to 
be seen.  I don't expect this anti-committee style to work any better in 
the long run than a pro-committee roadmap.  But I could be wrong.  Whether 
benevolent dictatorship, oligarchy, or design-by-committee, the problems 
related to language growth and design probably lie outside any one methodology 
(although there's likely a pinch of truth in the reasonings against certain 
methods).  

The problem doesn't lie in just the language design, but perhaps also in 
the organization and management of develpment -- as others have suggested 
repeatedly -- in additon to various judgement calls on what will most benefit 
the language's advancement in popularity.  Should time be invested in pure 
language design or in updates to aging toolsets (eg let's ditch omf format 
and improve the win32 linker!), or in commitments to bug fixes?  Naturally 
a community is going to be very desirous of quality working toolsets and 
simple installation.  Meanwhile, a designer is going to be strongly tempted 
to "improve" language features.  Does the community know best in this regard?

This however is not the only problem: 

There a quasi effort from the designer(s) to show some magnanimity to alternative 
libraries (eg Tango) without any apparent commitment to what such support 
means for the future of D. The silence is deafening and tends to demotivate 
a community almost as fast as any pro-D article can pump up the language 
perception to the non-community public.  This is a foggy spot for D's future 
before the eyes of the community.  Is it really possible to promote a language 
based on two libraries with no evidence of interest, disinterest, or concern? 
 This has been somewhat of a puzzle to me as I've watched the divergent efforts 
of the two libraries progress with ever more apparent impossible reconciliation. 
 Why does this problem appear to continue to be ignored?  Do the designers 
believe that "what will happen will happen", and therefore, "waiting and 
silence" is the only and inevitable solution?  If so, it would at least be 
nice to have this stated plainly so all could understand the "why" of D's 
direction. 

Another problem is the original effort to make the language appear community 
driven;  whether it is or not really isn't as important as being clear about 
intentions to the community.  I think we would all agree that this language 
is not so community driven as we originally thought. Or, perhaps, it is better 
to say that it once was and now is not.  Some significant elements are community 
driven: like gdc and Tango and various libraries.  But these remain inextricably 
dependent on the D design timeline and bug fixes (as well as vexed by the 
same). And, even at that, Tango remains the most consistant community effort, 
while most other community efforts are prone to lag.

Tango remains a solid example of a community-contributed process.  This library 
was an attempt to turn D into a community project in direct response to a 
general Phobos' apathy (in terms of bug fixes and design progression).  One 
way to look at this is to realize that Tango might not have been here if 
it weren't for Phobos' failure.  On the other hand, perhaps we should consider 
what kind of library D would have engendered if Phobos had been more community 
driven from the start?  From what I can see of Tango, it has amply proved 
itself:  hosts of community contributions and testings with clear directions 
from a committed and talented core development team made Tango what it is 
today.  I think Tango found the right balance of receptiveness vs controls 
for project management.  (Tip of the hat to Kris, Lars, and Sean for managing 
to get it so far)

And then there's Walter... Walter's D language design and compiler are examples 
of incredible contribution and effort via a different style... what appears 
to be an incredibly single-handed, brute-force operative method (with dogged 
determination!).  If only such talents could merge to make a more organizationally 
sound process for D /and/ it's standard library.

But in the end, the design of the language just becomes yet another ideological 
struggle of one's opinion over another's. It's inevitably, mutually political 
and sacred with or without a committee and is made more so as ideas collide 
from our varied experience and perceptions of what feels right.  Walter's 
success with D is in largely due to his appeal to what we sense is wrong 
in other languages;  he has managed to excite us via our dissatisfaction 
over past experiences (eg. Java and C++)... and that's a powerful form of 
influence.  That is where the success of D has come whether or not we've 
agreed with his control structure along the way.  The lead D designer has 
chosen his oligarchy to advance that design, and the community acts as the 
samplers of it; we are the measurement of potential language feature popularity 
and usability.  And so the process continues with the next language that 
comes around.  Indeed, the miracle is that such contributions can somehow 
merge at all and that people /remain/ loyal to it.  

But then... perhaps it's not so surprising after all. ;)

-JJR





More information about the Digitalmars-d mailing list