As I prep for my EE talk, I find myself wondering what I would have done differently a year ago. Looking at the huge success of the Ajax Control Toolkit, I wonder if I should have had one “Power Toys for Visual Studio” project on CodePlex, where all the power toys (as possible) fit into the collection. Then, I could have opened up both the individual power toys and the overall collection itself up for contributions.
The thinking last year was to build the community around the individual power toys. Well after we had released our first wave, I started thinking about building the overall community as a collection of power toys. Shawn’s feedback (who runs the toolkit) to me has always been “where’s your critical mass?” I thought I could build the community and the critical mass on the Power Toys Homepage as an eagle eye onto CodePlex, but maybe I was wrong or didn’t try hard enough.
Which brings us to the title of this blog entry. We’ve just shipped Orcas Beta 1. So, here I am again, looking at the lessons learned from the Whidbey Power Toys, trying to plan ahead for Orcas.
Question for the Power Toy Community
If we were to combine all of these power toys, what buckets should they fall into? Or should we leave well enough alone.
My knee-jerk reaction was to bucket based on which Visual Studio version they target. Then I started realizing this should be a job for the pack installer to sort it all out. And, tools are going to grow organically on their own, so it would defeat the entire purpose of codeplex to port these tools to a new codeplex project based on VS versioning (not that we would do this intentionally, but if I separated based on versioning, I would be “retrospectively” doing this, if that makes sense.)
Something else to call out is that the baseline commonality between all these tools (besides us writing them) is that they were picked and implemented based on customer suggestions. In other words, these are all after-market solutions for Visual Studio 2005.
Here are the options I’m considering:
Do nothing. Our current set of power toys are scattered across technologies, including what they target (MSBuild, TFS, VS IDE, ASP.NET, etc) and how they are built (stand-alone exes, add-ins, packages). The only way I could bucket all of them together is as a “Power Toy Solutions for Visual Studio 2005.”
Throw them all together into a single “Power Toy Solutions for Visual Studio 2005” Bucket, including the VS 2003 power toys migrated from GotDotNet. Each power toy will have its own release in the CodePlex project. We’ll utilize the pack installer as the primary means for downloading the power toys.
Bucket based on targeted technology. All MSBuild open source power toys go into a MSBuild CodePlex Project. All TFS open source power toys go into their own TFS bucket, and so forth. Even if we don’t have enough power toys right now for this, consider it planning for any potential Orcas power toys. Then if we need to port a power toy to Orcas, the codebase stays within the same overall codeplex project.
Bucket only the ones that make sense to bucket – have all the power toys that target the VS IDE together in one bucket, and leave the rest as is. For example, we would have Breakpoint Manager, Resource Refactoring, VSCmdShell, and MSBee. Maybe even Managed Stack Explorer.
After having thought about this for weeks now, I favor option #4. It builds a community around the technology, and allows these power toys to get updated to Orcas as needed. And it also allows for us to leave well enough alone.
Combined Power Toy Collection Mockup
CodePlex Project Design
Discussions (same model for work item tracking)
What to do about Orcas Power Toys?
It’s a tough question, but really, should it be? Given what I’ve learned in the past, what’s my recommendation to teams moving forward? Honestly, there isn’t a simple answer. In my perfect world, I would want each product group to have its own set of power toys that they build and allow for customers to add tools to the collection (just like the Ajax Control Toolkit model). Our team would contribute to these projects, rather than creating projects ourselves. Additionally, if a product group had a really cool idea, like a sunset technology or a toolkit collection, they would take it to the open separately from the existing power toys. But that’s just my current thinking and need to shop this around internally to get feedback.