It has been five years since the new CDT project was born, with QNX contributing some C/C++ core technology. The initial team saw contributions from Rational, Red Hat, and MontaVista, and today, the CDT community is about 4 00 000 members strong! Now with the release of CDT 4 RC3 Doug Schaefer, the project lead, takes a retrospective look at why his mantra of "Don't take a .0 version of an open source project and put it in a product" held true in the past releases, and why this changed with CDT 4.
Schaefer says that a lot it had to do with the lack of pressure, and lack of feedback from the community and a young community that was just starting to grow. He shares the "lowlights" of the previous CDT .0 releases:
CDT 2.0.0: First introduction of the new parser-based indexer and search, which was the start of their performance woes, says Schaefer, adding that he rewrote the CDT scanner (tokenizer) in 2.0.1 since it was brutally slow. The team also introduced a new build model that wasn't really ready for prime time and really needed to be exercised with more tool chains.
CDT 2.1.0: This release was to meet one of the contributing vendor's product needs and was done while the other vendors were focused on the next release. Schaefer says that this showed the need to standardize the releases and how the model that had been followed could not scale as the number of contributing, and consuming, vendors increase.
CDT 3.0.0: This was the big DOM release and had massive changes to the indexing and search framework done by one vendor, who later had to withdraw its resources on that massive bulk of code due to business reasons. This brought out the need to have a diverse set of committers working on each component, says Schaefer.
CDT 3.1.0:Yet another new indexing framework. Schaefer took it upon himself to finally throw out failing assumptions and focus on a new strategy to address performance. At the end of the day, this new strategy is the right one and correctness was still pretty good, but in his own admission, he bit off more than he could chew. "It was an absolute necessity to get it done, though, but I did do a lot more work for 3.1.1 to make it product quality," he said.
However, a lot has changed in the last year, and Schaefer says that he is really happy with the CDT 4.0.0 release--thanks to the great bug reports received from the community and the volume of patches from contributors, and the great work of from the committers. "Being in the open, I hope others can learn from it too. At the end of it all, I think the most important aspect of any software platform project, commercial or open source, is that of community. And the most important job of a project is to build that community. And that there is probably nothing harder to do than build a community," he concludes.