I'm doing research into software evolution and C#/.NET, specifically on identifying refactorings from changesets, so I'm looking for a suitable (XP-like) project that may serve as a test subject for extracting refactorings from version control history.

Which open source C# projects have undergone large (number of) refactorings?

Criteria A suitable project has its change history publicly available, has compilable code at most commits and at least several refactorings applied in the past. It does not have to be well-known, and the code quality or number of bugs is irrelevant. Preferably the code is in a Git or SVN repository.

The result of this research will be a tool that automatically creates informative, concise comments for a changeset. This should improve on the common development practice of just not leaving any comments at all.

  • 5
    The intent sounds interesting (so +1 from me), however I have my doubts. My gut feeling is that the perfect changeset comment should include precisely the information which can not be automatically deduced from the related changes themselves. Such as the purpose of the change (usually including an identifier/reference to the associated task as represented in some task management tool). Still, I fully agree that having some relevant comment is better than nothing. – Péter Török Nov 15 '11 at 15:18

Mono.cecil was heavily refactored in the 0.9 version if I am not mistaken. Up to that point it was in .net 1.1

Cecil is an open source project that you can use as an alternative to System.Reflection. As you can tell from the link the project's history is publicly available at github.

Since the project doesn't yet have a stable api chances are you'll get to see the changes happening in the future.

Good luck with the tool!

| improve this answer | |
  • 1
    This is an interesting answer, especially since I'm using Mono.Cecil for the bytecode analysis part already! – Joseph Tanenbaum Nov 15 '11 at 16:45

The Subtext blogging engine is a pretty good example – started life as a very classic ASP.NET app with zero testability and tight data coupling and grew up alot over the course of several years and more than a bit of refactoring all while not breaking legacy access and data models. It is a lot more like many line of business apps .NET developers work on professionally than many of the other examples.

Comparison to criteria:

  1. Publicly available change history: check, see google code SVN.
  2. Several refactorings in the past: yes, most definitely. You can read about the efforts and logic involved in these refactoring effrots on Phil Haack's blog.
  3. Compilable commits: generally yes, they haven't broken the product and jumped on the continuous integration bandwagon relatively early.
| improve this answer | |
  • A 'compilable commit' means that a changeset does not break the build, i.e. 'compiles'. The input is read from bytecode (MSIL), and bytecode can only be generated by a successful compile. – Joseph Tanenbaum Nov 15 '11 at 16:43

Not the answer you're looking for? Browse other questions tagged or ask your own question.