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.

closed as off-topic by gnat, Bart van Ingen Schenau, user40980, World Engineer Apr 16 '14 at 14:31

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions asking us to recommend a tool, library or favorite off-site resource are off-topic for Programmers as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it." – gnat, Bart van Ingen Schenau, Community, World Engineer
If this question can be reworded to fit the rules in the help center, please edit the question.

  • 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!

  • 1
    This is an interesting answer, especially since I'm using Mono.Cecil for the bytecode analysis part already! – Arjen Kruithof 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.
  • 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. – Arjen Kruithof Nov 15 '11 at 16:43

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