After the last posts about patches, I can write something myself about this 
topic :-) I am far from being an expert of big software projects, but I think I 
am now able to understand some things of the D project.

I like D, it's an alive project, but from what I've seen D so far is not having 
a so significant success. I think lot of people (especially young programmers) 
don't want "a better C++", they want no stinking C++ at all. They want 
something quite different. (On the other hand now I am not so sure Scala will 
have a widespread success, its type system makes it not easy to learn).

A C++-class language compiler is a big project that requires quite different 
skill sets: in the D compiler there is work to do on the vector operations, 
lent/uniqueness, multi-core, 64 bit, work for keep it well updated on 
Mac/Linux/Win and well packaged, development of Phobos and its data structures, 
work on the back-end to use the SSE registers and future CPUs or GPUs, tuning 
of the associative arrays, future improvements of the core language, 
improvements in the unit test system, large improvement in the D web site and 
the documentation, big improvements needed for the GC to turn it into something 
more modern, and so on. Such things have to be refined, debugged, efficient, 
cared of, polished.

So as D develops and grows it will get hard for a single person to write all 
patches to the language and other parts. As D grows this will become a 
bottleneck, and from what I've seen it already is. The disadvantage of allowing 
other people the rights to patch the front-end is some lost control, but Walter 
can review patches after they are already applied & working (in a big project 
having a director is positive). This can speed up the patching process itself. 
The compiler can become more like a patchwork of different programming styles, 
and Walter has to ask to other people how some parts not written by him work. 
This can be doable if the front-end becomes more modular. LLVM shows a more 
modular design that can be copied. This is a lot of refractoring work.

Increasing openess can increase the influx of devs and their willingness to 
help the project. This is quite positive and its importance can't be 
underestimated.

Pyrex (http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/ ) was forked 
in Cython (http://www.cython.org/ ) because Pyrex author was too much slow in 
patching. A fork will not happen in D soon because there are not enough people 
yet that care and work for D enough to make a fork viable. D is not a project 
as alive as Pyrex. Cython is a tiny rib of the Python language circus.

I suggest to give patching rights to Don, it can be one more step forward 
toward Open Sourcing D development style :-) In future such right can be given 
to other few good people that have shown to deserve enough trust.

I am not sure the future of D is in the dmd back-end, llvm looks in better 
shape for this purpose. LLVM is able to support 99.9% of the features of D2 
(and I presume llvm devs are willing to add the few missing things if someone 
gives them patches; from the unladen-swallow project I have seen they are open 
enough), and it supports a large number of good features currently not 
done/present by/in the back-end of dmd. Currently ldc is a compiler much better 
than dmd (try it if you don't believe me!), but its devs are not appreciating 
D2 language yet much. I don't like to see the Walter-locomotive so detached 
from the present nice ldc D1 compiler, and from the future of LDC and llvm. I'd 
still like ldc to become the official D2 compiler, developed and cared of :-)

Bye,
bearophile

Reply via email to