This project is read-only.

Future for CCI and its activity

Topics: Source Model
Apr 23, 2009 at 7:29 PM
I'm curious if anyone at MS can comment on CCI's future and if it has consistent development activity.  Or, has CCI been dumped off into CodePlex with no planned future modifications.
Apr 24, 2009 at 1:24 AM
CCI is the result of many years of part time effort by mainly people from the Rise group at Microsoft Research. Its earlier incarnation has been around for about 8 years now, and although parts of it is used internally by many tools in Microsoft and even ships deep inside some components of VS 2005 and VS 2008, the business case for it is uncertain at best and investment has so far flowed to other areas. There has also been internal competition from efforts such as Phoenix and lately from the VS Languages team.

One aim of releasing CCI to CodePlex is to gauge how much interest there is in such a tool set and whether VS or the CLR should make the considerable further investment to bring it up to the standards expected of Microsoft products.

Another aim is to enable people to build tools for the .NET platform, sooner rather than later. Microsoft Research, in particular, is also trying to make it easier to conduct long running cooperative research projects with people outside of Microsoft.

To put it another way, CCI has not been abandoned to CodePlex (which is against CodePlex policy, by the way). It is under active development, but only as the part time activety of a small number of people, mainly at Microsoft Research. We use it for our own projects and plan to continue doing so.

So far, however, there are no plans for Microsoft to make a product out of CCI. And after 8 years of trying to make that happen, I am not optimistic about that prospect. If CCI catches on like wild fire, however, all bets are off and investment could follow. :-)
Apr 24, 2009 at 12:21 PM
Congratulations on finally getting it out there! I'm glad to see it made it out, and a little sad I never managed to help turn it into a "real project." In many ways, though, this is even better :-)
Apr 24, 2009 at 4:18 PM
Well, for what its worth, the day I opened CCI.dll in Reflector and started digging around to see what it did was one of the happiest days (as a programmer) I've every had.  I've always has a deep interest in code analysis and data mining latent patterns in source code, but never wanted to write a language parser.  So when I saw that CCI could do this for me I was ecstatic.

I've written several analysis tools using CCI, as well as a couple articles that use CCI as the workhorse for assembly parsing to get the code graph.  I got a fair bit of grief for posting an article that uses a "hidden" dll that ships with FxCop, so the fact that you are posting it as open source is awesome!

The only abiguity over I saw over the past few years was the future of CCI vs something else...most notably the Phoenix SDK.  I've sent a few emails internal to MS to ask what directions each API are going in, and if there are plans for future development, or is one being deprecated for the other.  But I never got any info that was definitive.  Since I've got a few ideas for additional tools, I wanted to pick the correct API to avoid any unnecessary future rewrites.  Since I'm most familiar with CCI and it gives me pretty much what I want, I'm very happy to hear that it was put in CodePlex, and that you say its not being "put out to pasture".

Anyway, I've always wanted to talk with the folks responsible for CCI and thank them.  Keep up the good work!
Apr 27, 2009 at 10:19 AM


Please post a link to those articles, I'd be interested and a quick search didn't turn up much. (Or contact me through codeplex if you don't want to post them here)



Apr 27, 2009 at 5:09 PM
Edited Apr 27, 2009 at 5:15 PM
Here is the link to one of the articles.  Its a set of code analysis tools that do different things.  Its gone through a few iterations

I had an article that I was working with MSDN that used CCI to do an NGram analysis on your source code to find "near-duplicate" functions, or sub groups of code in a function for use as refactoring candidates.  But as a first time writer for MSDN they wouldnt give me a word count high enough to give enough contet for the article to make any sense.  So I've never published it.

The other problem with near duplicate analysis is that I wrote it back in .Net 1.1.  Now there is so much template IL code being auto generated by the compilers (LINQ, lambda functions, anonymous *) that you end up getting a ton of false positives.  There are name markers that you can use to identify the auto generated template IL, but its a bit of a pain.
Apr 29, 2009 at 8:56 PM
Interesting; thanks!