Application Analytics and Browsing Forks

[Do you tweet? Follow me on Twitter @matthawley]

We deployed the latest version of the CodePlex software today.

Application Analytics

clip_image001With today’s release, CodePlex users now have the ability to instrument their applications to get analytics on their runtime usage. CodePlex has long offered reports on what user activity occurs on the project website, but what happened after the user downloaded the software was unknown. Now, using this new application analytics capability, CodePlex users can see information such as how many people are using the application.

This capability is provided by the new Runtime Intelligence Service from PreEmptive Solutions. The Runtime Intelligence Service allows for developers to inject usage instrumentation directly into application binaries. When the application is run by an end user, the instrumentation will collect analytics data from the application. No personally identifiable information is ever collected and applications can include opt-out dialogues.

CodePlex users instrument their .NET applications via the latest release of Dotfuscator Software Services Community Edition included in Visual Studio 2010. Application analytic reports will then be available on CodePlex from the project statistics page with the ability to view more advanced statistics through a portal hosted by PreEmptive Solutions.clip_image003

Getting started with instrumenting your application is easy. PreEmptive Solutions has created a sample application and a very thorough walkthrough that demonstrates this process. Once you have instrumented your application, you will need to link your CodePlex project to your Runtime Intelligence Service Application ID (which was created in the first step in the walkthrough). As a project coordinator, edit the project details and enter the value as shown below.


Should your startup / shutdown instrumentation mean something different, you can change the display name, which will be used instead of “Application Runs” when viewing the statistics in CodePlex. After you save these settings, CodePlex will begin importing the application runtime usage on a daily basis.

Browsing Forks

Also with today’s release, you now have the ability to browse a fork’s source code similarly to browsing a project’s source code. When you view the listing of forks, each fork name is now clickable.


Upon clicking the fork name, you’ll be taken to a familiar change set listing page. From there, you can view change set details, browse the fork’s source code, and download the individual change sets just as you would for a project.

Comments (7)
  1. CuttingEdge says:

    You’rebit late for April fools don’t you think? I think this is a very bad idea and you should make it very explicit on the project’s homepage that the project’s binaries are calling home. I am a project owner, but would never add such a scary feature to my projects.

  2. Tim Reynolds says:

    CuttingEdge –  

    The instrumentation platform has built-in functionality to support end-user ‘opt-in.’ We at PreEmptive Solutions are strongly encouraging the developers of participating projects to include a clear opt-in dialog to end-users.

    Many commercial applications ask users if they would like to send usage data back to the company so they have the opportunity to improve the product. We are just offering this functionality to open source projects.

    If you or anyone else has further concerns we would very much like to hear from you. You can contact me at



  3. Greg Duncan says:

    Awesome! Thank you for adding this…

    Man I love CodePlex. 🙂

  4. CuttingEdge seems to imply that CodePlex projects are all going to start emitting signals automatically – nothing could be further from the facts.

    First, I would like to bring some clarity to what is happening here. CodePlex is NOT introducing instrumentation into any projects nor is it even providing technology to do so. The injection of instrumentation is accomplished via a utility included with Visual Studio 2010, the Community Edition (CE) of Dotfuscator. A project owner must take explicit steps to introduce the instrumentation into their assemblies and this cannot happen by accident. You can see the tutorial at

    In point of fact, project owners (along with every other Visual Studio 2010 user) have had the ability to inject instrumentation into any .NET assembly in this fashion since the first CTP release of Visual Studio 2010 in October of 2008. See the Microsoft press release at

    This begs the question then, what exactly is CodePlex offering with this latest version of the site?  Here is how I would describe it – If (and only if) a project manager decides that usage data would be of value to his/her development efforts and/or would be of value to potential users, he/she can now choose to stream that usage data back to the CodePlex site where it will be surfaced in context for both developers and end users to view. The alternative would be to build or license your own. BTW, if you want to build your own, check out this pre-existing CodePlex project to do just that…

    In my view, CutingEdge’s posting does not consider the following:

    –              It should be clear that this feature requires two levels of opt-in. One from the project owner and again from each application user. There can be no accidental or unauthorized “phone home.”

    –              Unlike web analytics (or traditional application experience improvement technologies), end users themselves have equal access to all of the runtime data. It is “open analytics” (like open source?)and is not proprietary to the development team. Instability issues? Poor adoption? Everything is available to everyone.

    –              Web analytics track clicks and usage patterns grabbing both usage AND personal data without any opt-out option. The instrumentation data collected with CE contains no personally identifiable information whatsoever and has a built-in opt-in/opt-out switch allowing users of applications to opt-in or out on a session by session basis (assuming the project manager wanted to activate any of this in the first place). In short, to go on the Internet is to give away more information than will ever be collected with this approach.

    Having the facts of actual usage (rather than subjective reports based on blogs or other anecdotal sources) yields more usable, higher quality, and more valuable applications. That’s what user-centered design is all about right?

    I guess it is human nature to fear what we do not understand, but there is nothing scary, invasive, or mysterious here. This is just one more tool to help build better software more efficiently and with more confidence.

    Up until this release of the CodePlex site, this kind of "runtime intelligence" has really only been available to those "deep pocketed" development organizations with the time, resources, and funds to build/buy their own. See Microsoft’s own customer experience improvement program at

    I think that the CodePlex team should be applauded for choosing to democratize this kind of capability and to make "open analytics" available to the 14k+ CodePlex project owners and the many many 1000’s of their respective users(but maybe that’s just me).

  5. Jack says:

    "First, I would like to bring some clarity to what is happening here. CodePlex is NOT introducing instrumentation into any projects nor is it even providing technology to do so. The injection of instrumentation is accomplished via a utility included with Visual Studio 2010, the Community Edition (CE) of Dotfuscator."

    Fist you say that but then you say this:

    "I think that the CodePlex team should be applauded for choosing to democratize this kind of capability and to make "open analytics" available to the 14k+"

    So much clarity.

    Oh great Microsoft Oracle tell me what’s "open source"?

    Well my dear ignorant soul, "open source" is:

    Code obfuscation

    proprietary modules

    usage tracking

    lack of trust

  6. First, let’s clear away the non sequitur. The two paragraphs that Jack juxtaposes have nothing to do with one another. The first deconstructs the sources of the components that make-up the runtime analytics service. The second paragraph points out that this service is freely available to any CodePlex project owner. To my knowledge, this is the only example of such a service and that’s why I think CodePlex is worthy of praise.


    The underlying premise of this last post raised a question for me. Why would an “open source purist” condemn sharing application usage data on some murky “big brother” grounds when that data is available to all – developers and users?


    Rather than post another lengthy reply – I have posted my answer to this question on my blog at


    Hope to see you there…

  7. radioman says:

    you can use this service without any obfuscation, just manually call the service on startup:

Comments are closed.

Skip to main content