D project management for better growth and longevity

js.mdnq js_adddot+mdng at gmail.com
Thu Feb 21 04:53:21 PST 2013


This is an idea I have that I believe can help D become in time 
one of the most popular, if not the, programming language.

The D language, excluding some of known issues, has many great 
language constructs that set it above the mainstream programming 
languages today. While there are many competitors to D, D seems 
to have stronger fundamentals and IMO a better language syntax 
steaming from it's relation to C/C++.

There are several problems with D as it stands but the main one 
is the userbase. For proper development there must be users or 
are willing to invest the time and energy to create the tools to 
make more users want to use D(which will result in a cycle (or 
rather a spiral)).

D needs a lot of work, more importantly, D development needs a 
structured approach to hardness it's development. I feel D's 
development is sporadic and many user created tools and resources 
are localized, hard to use, etc...

So, what I propose is that D use a sort of integrated project 
development application(web based) that allows users to easily 
help in D's development. It is difficult to explain exactly what 
I'm talking about because I do not know the terms to use or have 
a really clear idea myself.

Therefor, it would be better for me to explain what a user my 
experience:

Suppose I am interested in D. I download the compiler play around 
with it and find some bug. For argument sake, suppose I want to 
improve upon the GC and I have also written a tool that parses D 
code and changes UDA's.

But suppose I could log into to D's web site and access a web 
page that gave an overview of all the develop that D is going 
through. I could see a graphical chart, click on each graphic 
that will take me further into the development of D(more specific 
areas) which allow me to see who is working on what, what has 
been done, and communicate with others on the specifics of that 
topic.

e.g., I want to write a better GC. So I go to the development 
chart find where the GC development area is, and click on it. I 
log in, sign up, and discuss or download what others have done in 
this area. I can sign up to help others in this area, etc...

Hopefully you guys get the picture. The idea is to make it really 
easy to develop for D and the development chart would be massive. 
IDE's, VM's, D lang specifics, tools, documentation, modules, 
etc...

One could also integrate it with GIT so pull's could be 
"visualized" and it would be easier for the project leaders to 
get and send pulls. (for example, there could be several GC 
projects on the GC area)

The goal is to facilitate users to develop D quickly and 
efficiently. It makes it easier to find other users to develop 
"projects", get information(a sort of wiki for each "node" in the 
tree), and pull in the projects into D's main repository.


D
   Language
     Specification
       ...
     Documentation
       ...
     2.x
       ...
     3.x
       ...
   IDE
       ...
   VM
       ...
   Tools
       ...
   Modules
       ...
   etc...

I envision one day when D could be used across many 
platforms(common and not so common) very easily. Say a single 
unified IDE that can be used to develop across multiple platform, 
a great debugger, many integrated tools, build in gui 
development, etc... (basically a one stop shop)

(a script would be used that would do something which also runs a 
script on each child. This allows one to "compile" the hierarchy 
quite easily which would also include builds of the D language, 
modules, and tools. When one installs D a similar hierarchy would 
be presented above allowing them to "install" the modules node(or 
select specifics in the sub node), etc)




Each node in the above tree is backed by a git repository, a wiki 
like helps system, a forum(and each super node's forum includes 
all child forums), and project management stuff.

The owner of D, can, for example, pull in any changes to all it's 
subnodes, and each parent can pull in the immediate children. 
Essentially any modifications work there way up from the leafs to 
the branches but must be verified by allowed by the parent.

Anyways, it's just an idea I came up with. The point is not so 
much that it's new but about combining all the stuff out there in 
a very good way to deal with the extremely large project 
development cycle needed for D to be big(or any project).

It's number one goal is to make it easy for users to contribute 
and to give users to contribute something. Example: someone could 
put in a request for some tool at some node(say you are looking 
for some tool and can't find it then you can make a request) 
which give the ability for someone else to write one and it will 
be added as a node/leaf(which someone could fork).









More information about the Digitalmars-d mailing list