Has D failed? ( unpopular opinion but I think yes )

Nierjerson Nierjerson at somewhere.com
Sat Apr 13 22:12:41 UTC 2019


On Saturday, 13 April 2019 at 20:38:04 UTC, Walter Bright wrote:
> On 4/13/2019 6:08 AM, Nierjerson wrote:
>> I do not think think anyone is criticizing you or Walter 
>> personally or your capabilities in what you do. EXCEPT: You 
>> guys have to figure out how to take D to the next stage of 
>> growth. You guys are the leaders and so only you can do it. No 
>> one else can step in and say "This is how we are going to make 
>> it happen".
>
> Actually, yes they can. There's a lot that goes on that I have 
> no involvement in, people just stepped up and did it. For 
> example,
>
> gdc
> ldc
> bugzilla
> autotester
> dub
> VisualD
> Dfeed (the forum software)
> the website server
>
> What doesn't work is giving Andrei & I long lists of action 
> items. I get them every day.


The problem is you don't understand and you think you do:

1. We are not talking about individuals doing things. We are 
talking about those things being done in a consistent and 
meaningful way rather than ad hock. What happens when Rainer 
Schultz gives up on D? You realize he took over Visual D himself 
from someone that gave up.

What happens when those people decide to move on, die, get 
preoccupied, have less time, etc?

You are always expecting people to do work yet and some do, but 
to pretend that it has any longevity is being naive. Visual D 
development has somewhat stalled. RS still works on it here and 
there but it is pretty much what it is. It has limitations and 
issues. It is not commercial and to pretend that it is the 
solution for the IDE platform on windows is nonsense. It is the 
only one that is usable to any useful degree. It works, 
surprisingly well, but not well enough for most businesses to 
invest in D.

I'm not saying to downplay these things, I'm simply saying 1. 
They are not enough. and 2. They are not coherent enough with D 
as a whole.

2. D needs structure in it's overall design. It's far more than 
just a compiler. A compiler by itself is about useless as a new 
born baby. The tools, libraries, the docs, the community, etc are 
all required for wide acceptance. But there has to be some 
underlying glue that binds it all together. Just having everyone 
create the these things on their own is not enough. It ends up 
with a rats nest of problems. Everyone does their things 
different ways, no one agree's, things don't easily connect up, 
etc.

It is quite amazing D has worked so well with this method, it is 
a testament to the people who contribute to D, not the process 
itself.

Imagine if all these people that have contributed to do did it in 
a structured in unified way. No redundancy, waste, abuse... what 
would D be like?

Your approach is too lackadaisical *if* your goal is wide 
acceptance[I realize that is a trigger word here because people 
think it means acceptance by the mass of moronic programmers]. It 
works well for some things but poorly for others.

All I am talking about is having a plan and project management.  
Something like: "We have these N things we want done 100%, we 
will sort and prioritize these M things and work on them this way 
until they are accomplish. We will do them to the best of our 
abilities." [More than this, but trying to express an idea]


> You want something to happen, step up and take a role and make 
> it happen.


Ok, I'm going to step up and take a role, right here right now:

1. You need to find someone who will create two things:

   a) a method for people to contribute in an easy way. A website 
would work, you have people who can create websites(they have 
done it) so task them with creating a new web sight, say 
dlang.org\ProjectManagement.

The site is designed to be coordinate two things:

       i. People who have a common desire for improvement on some 
part of D. It could be a library, a tool, a patch, etc.
       ii. The core D team's projects for D, such as rewriting 
phobos or D3 or an IDE, or whatever it is you guys decide is to 
be done. You state "We are doing this, here is how you can help".

The site is a meeting place, a way to formally work together. Not 
email, not forums. Sorta like bugzilla, github, forums, etc all 
combined. It doesn't have to be over the top but needs a unified 
and singular place to interact with in evolving D. What does this 
do? It provides a formality for people to take it serious, 
specially those on the outside. It says "We are serious bout 
getting things done around here so much that we take make it 
efficient to get things done". It is the difference from "work at 
home" and having an building where business is done. Just the 
environment itself makes people think differently.

You guys could talk about specifics. I'm just saying that some 
efficient, formal, and meaningful way to coordinate projects and 
people is necessary. Why? Because if it exists it will also 
increase the success rate of good projects. It might require you 
guys to spend a few weeks or months figure out the details. I 
think getting many peoples desires on such a site would be best.

No point in me giving too many of my thoughts because it is a 
task for you to do to get the ball rolling. What I am saying is 
that having a *place* to optimize work, scheduling, and tasking 
will turbo charge D, if it is done right.

I will say this: Suppose I want to contribute to a part of D that 
doesn't exist or up to my standards, say some library. By having 
a site where can go to, sorta like dub for libs, but search for 
the thing, say it is a graphics library, and I can see the 
projects, there should be just a few as these are projects 
sanctioned by D to eventually be official, then I can contribute 
to them.

You can say this is what dub and git hub provide... and in some 
way they do. But it's not the same. It's too fractured and too 
independent/individual. The site could link to github but it has 
to coordinate people(the energy/work) and harness it.

It also lets you guys organize it. If, say some group of guys 
want to write an audio library then you will have to take a look 
at it. This also requires a standardization of coding style which 
is done well. Ideally there would be the top programmers who 
monitor the code to make suggestions about issues such as 
longevity, style, generality, optimizations, etc.

You guys to to control the overall process while the worker bee's 
do the grunt work of writing code. With such a site you should be 
able to see an overall digraph of all the relationships and also 
dig in to the project management side, such as conflicts, time 
spent, who's doing what, etc.

One could could think of this as a sort of D forum on steroids(it 
could have a forum component that is integrated).

Wish such a site too, one could create fiat currency... you know 
how people love their fake gold coins. [I'm not suggesting that 
specifically but there could be a sort of reward system for 
contributing to projects or competitions, etc]


b) An overarching plan for D, say, for the next 10 years. This 
plan is then filled in with details. It should be rather 
exhaustive. It should cover ALL things anyone could want out of 
D. No expense should be spared, meaning there should be no 
worries about going overboard. All the fat can be trimmed. The 
idea here is to provide long term goals that definitely will make 
D better. It doesn't matter if you think it is worthless, it is 
just if magically it existed for D it would be better then it is 
added.

For example,

Let's imagine D should have it's own OS written in D. This is a 
feasible thing, it could potentially be better than any other OS 
out there. Of course, this is not something practical for D to 
focus on, but it is something that if one could magically have 
would be good for D. This is sort of brainstorming for things 
that will help D take over the world.

One then sorts, rehashes, prioritizes, and creates a smaller list 
of things. One builds a hierarchy. All things are relevant but it 
is narrowing down things to a manageable scheme. With the project 
management site, though, if some people want to build an OS for D 
then they could add it to the site, and move in that direction. 
They are busy building such a thing and so, eventually, in 
theory, it will get done. But it's officially part of D and that 
alone provides some cohesion.

Regardless of the specifics, these two options are meant to 
provide two things: An overall plan that people can understand 
and a place where the plan turns in to a reality.

2. You and your team need to sit down and rather than just gab 
about things seriously figure out what needs to be done, not for 
specific D things(e.g., some code, library, language feature, 
etc) but the management side. Each of you needs to have an honest 
conversation with yourself and each other to figure out where 
everyone stands, everyones desires, everyones intentions, and 
what each one is willing to do. If certain gaps in capabilities 
are missing then you need to seek out those people that will fill 
those gaps and fit all together correctly. There has to be 
balance to such a team. If everyone thinks the same then there is 
no dissenting views and this causes problems.

For example, if you have N people and they all think exactly the 
same way(identical copies) then there really is only 1 person. If 
that 1 person can't solve a problem then N of these people can't 
solve the problem no matter how large N is. And this is 
mathematical fact that proves similarity of thinking is not 
effective for difficult problems(it's great for problems that 
they all know how to solve).

Basically you guys need to find some people that fit your team 
but balance it out. Someone  you can trust and will listen to but 
doesn't think just like you do. You have to be able to argue 
about stuff and see who's right or to get a little frustrated. It 
makes everyone grow... but it doesn't have to be hateful. If 
everyone has the same desire then it will actually be effective 
and sort itself out.

3. The overall plan has to have a singular unified purpose. It is 
the focal point of what this is all about. It is something clear 
that everyone has in their mind. If you look at a great painting 
there is almost always a singular concept that presents to ones 
mind the moment one see's it. This concept says "This is what the 
painting is about"(it is true that people will interpret it 
different, but there is always a concept, it may be "ambiguous" 
in some sense but not in the persons mind). It's ultimately what 
ties everything together in a nice package and fills in the 
cracks when they form. Without it one is relying on luck and/or 
passion/determination. These work for small things but rarely for 
large projects involving many people(since most people won't have 
much luck or passion to make it happen and they will also destroy 
that of others).

---

So, you and your team need to sit down and hash these things out. 
You don't have to listen to what I said, maybe when you sit down 
and try to figure all this out you'll find a better solution.  It 
is not about programming, but about management. No real 
programming topics are involved. You might figure out a way to 
make it worth while, could take a vacation for it, or after it. 
Might setup something special to make it happen. I don't know the 
specifics. But what I do know is that if you guys continue your 
approach the same way it is, the same results will occur almost 
surely and it is easily predictable the long term outcome.

Also, keep in mind that it doesn't mean you have to do a lot of 
hard work. It means that you simply have to structure things to 
get other people to do the hard work for you. (this is what all 
business is and it is a form of slavery in that it leverages 
other people's ability to supply energy in to the system for the 
purpose of a cause they generally are not ultimately interested 
in. You are luck that there are so many people willing to 
contribute to D, you might as well maximize their efforts and 
leverage it as much as you can).

I do hope you can figure this out. I do like D and think you did 
a great job in many ways. The thing that is going to make D fail 
though is not the great things you did but the poor things you 
did(= the great things you didn't do).  D is like a candle flame 
in the world and many of us want to see it was a volcano. That 
may not be your desire though but remember, Even though D is your 
child, many others helped raise it.









More information about the Digitalmars-d mailing list