A couple months ago, Microsoft released the MSDN Code Gallery which is a repository of samples, snippets and documentation.

If CodePlex is Microsoft's response to SourceForge then the Code Gallery might be their response the Code Project or DZone Snippets - although it takes a very different approach than both. 

Compared to CodePlex, the Code Gallery offers less project management, collaboration and source control features and, in concept, is more optimized for quickly publishing code snippets that may be useful to the larger community.

Unfortunately, however, I don't think they distanced themselves enough from CodePlex.  CodePlex is an effective tool for what it was designed for; it does a good job tracking releases, bugs, contributors, discussions, etc.  This is overkill for publishing a simple code snippet, though - and yet many of these features are carried over to Code Gallery.  When creating a "Resource" on the Code Gallery, for example, developers are required to provide a title, description, tags, unique URL, release(s), file type, etc via a multi-step process (create project, create release, add file, publish).  While this all quite useful, this is a lot of steps to go through for a small code snippet. 

As a result of this you see two scenarios.  The first scenario is for large code snippets which include their own samples, documentation, versions and potentially involve multiple contributors.  These are well suited for the Code Gallery.  However, Code Gallery offers minimal benefit for these projects over CodePlex. 

The second scenario is you have developers with a handful of small code snippets - each potentially quite useful, but too small to justify the overhead of creating a new "resource" for each.  In these cases, you see a lot of resources being created that are a compilation of various snippets, such that each release is a different snippet as opposed to a different version.  The problem with this approach, of course, is that the description, title, tags, etc are now ambiguous if not overly general; this makes finding resources a tedious process.  Half of the "Most Popular Resources" highlighted on the site's home page fall into this category (for example); the other half seem to be uploaded by Microsoft. 

In my opinion, a better solution to this would be to make uploading code snippets a one-step process that includes title, description (optional), tags, language, a textbox for code, and a textbox for an example.  Once this is created, a user could update the snippet (optionally versioning it), add attachments or, possibly, add contributors - but these wouldn't be part of the standard workflow.  In this regard, posting a resource would be essentially identical to (and just as easy as) posting to a blog.  The resource would still have a discussion (e.g., blog comments) and issue tracking (possibly just a special type of comment). 

Ultimately, this isn't that different than what Microsoft's put together - the basic data model is identical and almost all of the features are the same.  It's really just a streamlined workflow to eliminate the overhead of creating a resource and thus encouraging a 1:1 relationship between resources and snippets.  The only feature I think should be removed is the unique URL - while this is a great feature for projects, it doesn't work as well for snippets; like blog posts, these may not have an intuitive unique identifier and are better references using tags.

A Developer's Life blog has also reviewed the project and brings up some additional points, although I think oversimplifies the ease of creating resources with regards to the data model.  While I don't agree with all of their points, I did want to credit the post for referencing Krugle.  I wasn't familiar with Krugle previously, but after playing around with it think I'm really impressed, enough that I've installed their browser plugin.

That said, despite my criticisms, I am happy to see Microsoft providing tools like this for the developer community.  This is an area that other programming platforms (Java, Ruby) excel at.  Microsoft has put together quite a few websites over the past decade to try to fuel this type of sharing and collaboration (starting with the old Site Builder Network, which was really ahead of its time in many ways) but to date it's never taken flight.  It's unclear how much of this is the tools and how much is a cultural aspect of the community - but I'll leave that topic for a future post.

Thursday, April 03, 2008 1:27 PM
Filed Under [ Tools, ]

Comments

No comments posted yet.

Post Comment






 

Please add 1 and 1 and type the answer here:
*