Friday, August 15, 2014

The C# Coding Guidelines are now open-source!

The ability for an organisation to request the original Microsoft Word files and adapt them for internal use has always been an important recommendation of the C# Coding Guidelines. Since I first published the PDFs on CodePlex in 2009, I have received numerous requests for that, but the process has always been a bit cumbersome. Hence my decision to convert the guidelines into MarkDown and to push them to a new GitHub repository.

The corresponding license, based on one of the template licenses provided by Creative Commons, allows you to fork, adapt and distribute that modified version within your organization as long as you refer back to the original version on GitHub. It's not required, but you would make me a very happy man if you credit me as the original author. And if you have any great ideas, recommendations or corrections, either submit an issue, or even better, fork the repository and provide me with a pull request.

Notice that I decided to use some of the features provided by Markdown Extra because that allows me a bit more control on the generated PDF that I will ultimately publish back on the current landing page on CodePlex. I know that GitHub will not render everything correctly and page breaking in the generated PDF sucks, but that's the closest I could get to the original version.
Some of the things I'm planning or considering:
  • Splitting the guidelines into two separate documents; one on coding practices and one on design practices.
  • Introducing some of the guidelines proposed by Object Calisthenics.
  • To setup a new landing page through GitHub's pages and drop CodePlex completely.
  • Convert the cheatsheet into a Markdown file.
  • Start evaluating the new C# 6.0 language features.
  • Update the proposed Static Code Analysis rule sets for Visual Studio 2012 and 2013.
  • Verify the ReSharper style sets
  • Evaluate ReSharper's pattern matching expressions to see if they can be used to detect a part of the guidelines. 
So if you have any ideas, go fork my repository and send me some nice pull requests…