- 12/08/2001. First release of D
- 04/08/2006. Tango was conceived
- 06/2006. First code commit of GDC
- 01/01/2007. Release of Tango, incompatible with Phobos, the standard library
- 01/02/2007. Release of D 1.00
- 03/05/2007. Release of GDC 0.23, probably the first 64-bit release of D1 compilers
- 06/17/2007. First release of D2
- 08/02/2007. First code commit of LDC
- 08/22/2007. Last release of the first generation of GDC
- 01/17/2008. Publication of “Learn to Tango with D“, writen by Kris Bell, Lars Ivar Igesund, Sean Kelly, and Michael Parker
- 02/06/2008. One of the several standard library debates over Phobos/Tango
- 07/2008. The initial developer of GDC left
- 10/2008. Sean Kelly, one of the three Tango organizers, left the Tango SVN
- 09/10/2009. GDC reloaded
- 06/12/2010. Publication of “The D Programming Language”
- 10/2010. The initial developer of LDC left
- 11/2010. Kris Bell, another Tango organizer, left the Tango SVN
- 02/17/2010. DMD2, the official compiler, supported 64-bit Linux
- 12/10/2011. Annoucement of the discontinuation of D1 on 12/31/2012
- 02/01/2012. Tango for D2 was finished, though not by the initial Tango contributors.
According to the TIOBE index, D quickly gained popularity around 2007, coicident with the release of D1, Tango, GDC and LDC. The popularity has receded since 2009, again coicident with the leave of several key D developers from the community. Looking back, I think the biggest mistake was made by the Tango developers who chose not to be compatible with the official standard library at the runtime level. I understand that the Tango runtime is probably more efficient, but asking developers to drop the official library is rare, unreasonable and a little impolite. In my view, the incompatibility also made it much harder to port Tango to D2, which further frustrated D developers. On the other hand, my feeling is that Tango indeed played a key role in attracting C++ and Java programmers. D was probably flourishing with Tango. When Tango stopped evolving, the ranking of D according to the TIOBE index was back to the pre-Tango days. In addition, the tension between Tango and Phobos/DMD did not come without reasons. The closeness of Phobos and DMD at the beginning, the slow adoption of 64-bit platforms and the transition of D1 to D2 all led to complaints among developers. While I believe the D1 to D2 transition is unfortunately the right direction overall, the other interfering factors should and could be avoided. If these other factors could be resolved well, I am sure the D1 to D2 transition would have been made smoother as well, in the belief that we are more likely to find solutions in a friendly atmosphere.
Looking forward, I see D2 has got over some major obstacles but may also be faced with new challenges. On the up side, D2 and Phobos are more open. D2 is in many ways a better language than D1. The official 64-bit support has been finished (at least on Linux). Phobos is much more powerful. Tango has been just ported to D2 without the incompatibility with Phobos. On the down side, however, D2/Phobos is still fast moving. I do not know if a D program written today can still be compiled a year later. The Tango development team has shrunk considerably. D has probably frustrated quite a few early adopters. It is not easy to win them back.
As an outsider, I think the first priority for D is to quickly stabilize the compiler and the standard library to convince everyone that programs written now will still be compiled years later. Without this guarantee, D2 will remain as a niche/hobby language. As a rant, I think the core development team should at least make D2+Phobos easier to compile and to install. I am not bad at installing software, but it took me a couple of hours to figure out the relationship between source codes and how to install and configure without the root permission. Many newcomers will just leave without looking back.
I always think D is the most promising modern programming language, successfully combining extreme efficiency and expressiveness. I continue to hope D can take flight – I have been hoping so for 5 years. No matter whether D flourishes again or gradually fades away, its past history will become a worthy case to the open source community.
D2 is not mature yet, and by trying to appeal to everyone it’s turning massive like C++, which is not a good sign IMO.
I prefer something simple like Clay, (In a nutshell, C with generics and polymorphism through varinats.) it’s far from ready but in my experience it’s way more stable than D2 already…
(I wrote quite a bit of code in D2 over a couple years and suffered numerous bugs, some which are yet to be fixed.)
I entirely agree the biggest problem with D2 is its immaturity. As to clay, generics and polymorphism are really great, but not to me. When I do not use C, I mostly need built-in hash table, convenient strings, regular expression and a garbage collector, which are non-existing in Clay.
what’s the obsession with a garbage collector? reference counting, esp that provided by c++11 (similar to what we use) does everything necessary. Frankly if you think you need an automated GC you are clearly doing it wrong.
clay seems to be pretty focused and has clear design choices that seem to work. Frankly ‘D’ is more like a what you got stew hack of fad programming. The vast number of keywords is not encouraging. It really smacks of algol in the later days. And taking such a young language, breaking it for an incompatible version 2 release? More warnings signs. Run from ‘D’
I think you have a quite narrow view on why Tango was born and why it was incompatible with phobos. Back in that time, it was almost impossible to contribute to the project. Phobos had an infinite amount of bugs, and nodobody could fix them. Forking was not an option, but the only way to get something more open where bugs could actually be fixed by anyone else. At the same time, Tango gave no option to Walter but to start opening the development, because it practically replaced phobos as the de-facto standard library, and more importantly, runtime (which is the real reason for the incompatibility). Even more, Tango’s runtime became druntime, the current D2 runtime, which also was splat from Phobos (before that, all was the same spagetti).
So I think that, even when unfortunate, the existence of Tango did more good than harm to D, if Tango didn’t existed, probably D will still be a one man effort.
As Luca said, Tango was created because of a huge problem with the development model — it was virtually impossible to contribute to Phobos1. The development model has now been changed completely, and even the compiler has a dozen prolific contributers now.
Tango was formed by the joining of two pre-existing projects, Ares + Mango. Three of the top ten Tango contributors (Sean, me, and schveiguy) didn’t leave the community, we switched our focus to D2/Phobos. I had been helping Sean with Ares since before Tango existed. Ares has since become druntime. This makes the timeline highly misleading.
The Tiobe data for 2007-2009 is clearly garbage, though I believe it is true that half of the community left. This happened primarily because of some personal issues involving a couple of senior members of the Tango team, which they did not explain to anybody else. The personal issues had a hugely destructive impact because of the horrifically bad development model in use at the time.
Here’s a timeline of the development model:
http://prowiki.org/wiki4d/wiki.cgi?HistoryOfDevelopmentModelForDMD