Making the Big Switch from Team Foundation Server
We have been going through a couple rounds of re-evaluation over what SCM solution we should be using lately. As we are a BizSpark partner, it’s natural to want to utilize their tools; it’s free, it’s low maintenance and quick setup. The realization came quickly that this is really not the case the first time you need to step outside the box of the Microsoft world.
Continuous Integration and Delivery is Important
First let me just say if you do not have a continuous integration and/or delivery process implemented please do yourself a favor and ready this article from Martin Fowler on the topic. You should not be deploying software out to production in 2012 without it going through a rigorous and thorough process.
Team Foundation 2012
Microsoft has made some great strides over the past year regarding the migrating to support the open source community. But with that being said, their flagship SCM and build solution hasn’t made much progress over the years. When TFS 2012 was recently released I was hoping for some really cool shiny new features. But there weren’t that many, or the ones they did release other solutions have been doing it for years. The biggest new features to me were:
- Local workspaces
- Enhancements to the SDLC process including a Scrum dashboard
- Testing improvements
- Code reviews
- Hosted TFS solution using TFSpreview.com
TFS Preview is a Step, But Still Lacking
When TFS 2012 was released I immediately jumped on it and implemented these features. The big one to me was the new scrum dashboard. Finally we get a real agile dashboard! But the biggest thing was the new hosted TFS solution located at TFSpreview.com. A hosted integration server in the cloud, sweet! No quite. After using TFSpreview we have found many limitations:
- You can only have one build controller which limits the amount of concurrent builds
- TFS still has not made any strides to support other languages out of the box
- You are locked down to using MSBuild for all of your custom tasks
- Adding new build steps in your build configuration is a Windows Workflow nightmare
- The new Scrum tool works well, but it’s not true scrum and lacking features
- TFSpreview has went down already a few times in the past month
So what then? There are many options. At my last employer, we had implemented a solution by ThoughtWorks Studios called Go. I recommend to go check it out, I won’t go into it in detail. But overall, it’s really overkill for what I need but might be an option later down the road. I decided to go with TeamCity by JetBrains.
Be Open, Be Flexible
Part of my decision was to utilize a tool that’s reliable, open and flexible. As the Microsoft code base is only a small subset of our code, we need a solution that will scale, allow for cross-functional development and be flexible to our needs. This is why TeamCity works well.
For the free version, you can have up to 10 users, unlimited projects, 20 builds and 3 agents. This will be more than enough to support most small teams. It supports a variety of runners such as Ant, nAnt, MSBuild, Command Line, Powershell, nUnit, Rake and even Xcode.