DevCreek 2006 - 2007

DevCreek was a metrics gathering, analytics, and sharing platform that I worked on at Intelliware for a few years starting in 2006.

It all started with a sketch from Kent Beck for real-time feedback during a test-driven development session for developers. As an instrument it would reveal their development patterns and provide feedback to guide their personal development process. To this end we first created a simple Eclipse plugin to show test executions and whether the test passed or failed. This stream of testing data could then by sent to a server as XML to provide a longer term perspective on an individuals testing and to share that amongst all the members of a team.

Over time this grew into TestCreek and then DevCreek. The server supported an extensible XML representation of events, and this grew to support more types of events over time, such as deployments and builds, and so on. The number of clients, or agents, increased from Eclipse to collecting test executions from maven and and other Java sources, to tests written in ruby, to other software analytics libraries.

API Agent Notes
Bugzilla Issue Tracking Bugzilla
Code Coverage DevCreek Eclipse plug-in Java/JUnit, Ruby
Code Metrics Eclipse Code Metrics Eclipse based Java code metrics
Code Metrics Maven Maven based Java code metrics
Community DevCreek Eclipse plug-in
Dependency Maven Maven component and Java dependencies
Performance Performance Java and Spring based framework for collecting runtime performance data
Unit Test DevCreek Eclipse plug-in Java/JUnit with EclEmma
Unit Test Maven Java build tests
Unit Test Ruby Native Ruby

The system was implemented from a basic record that could be extended by any agent without needing to update the server code. Here is an example sharing the current task with a team.

<record>
    <community.message>Working on Documentation</community.message>
    <core.principal>DGJ</core.principal>
    <core.project>Example</core.project>
    <core.sessionId>75bb3da-72cd13e1-6045e566-60f4f98b-d0ecebdc</core.sessionId>
    <core.timeStamp>1173661254518</core.timeStamp>
    <core.timeZoneOffset>-14400000</core.timeZoneOffset>
    <core.type>community.SendMessage</core.type>
</record>