I have not blogged for a few weeks now because of my left and right projects – running around to places and I just had to do a blogpost today to highlight one of the best tool in my teams arsenal: the TFS Service (http://www.tfspreview.com/)
Disclaimer: Today it is called TFS Preview, Preview, It means its not on its not yet a full product like a beta. So if you are going to try this out, even on a live project like me, please make sure you have a fallback, back-ups and alternatives. I on the other hand, saw the potential early on and I weigh the risks involved in contrast with the benefits that it would give my team – thus I decided to go ahead. But that’s just me.
So what’s Team Foundation ? TFS is a collaboration platform for application development thru its life cycle. It is used to be a stand-alone product that needs a Windows Server Platform and a list of hardware and software requirements for you to take advantage of its capabilities. What Capabilities? If you are a developer or a development project manager, you will love TFS. TFS gives you the ability to manage your team development process. In a nutshell id like to give a simple run-thru. A scenario when you already have the architecture of the application to be built and it just needs to be assigned to each developer.
Assign a work item to a developer and track its progress.
Developer writes code based on those work items. Submits the source codes then if necessary closes a work item when he or she is already finished, informing the project manager real time.
Other developers writes code in parallel, with the ability to merge their work.
Versioning of source codes. Each changes are saved in the server for later review or the eventual rollback just in case.
Automatically translate these source codes to usable software.
Test the software an file a “bug” task to a developer to be fixed.
That 5 above, you can summarize that as in Work, Source Control and Build.
The above screen is the Home dashboard for the TFS Preview and it still reminds me back in the days where I had worked with TFS since the 2005 and that I have always wanted is a secure out-of-office access that enables me to assign work items, check bugs and also contribute on the source codes deliverables. Especially nowadays that I am running around all over places (or working from home and outside :p ).
In the advent of Cloud and the Microsoft Azure Services, why not put TFS in there! Azure is basically a Microsoft Cloud service and platform. These are always-on powerful servers, hosted in the cloud.
For more info about Azure, check this out http://www.windowsazure.com/en-us/home/features/what-is-windows-azure/.
So instead of putting TFS instances in premise servers, we can now use TFS as a pay-per-use service hosted on Windows Azure. Yes, no server set-up needed.
And how did this new service made our lives basically easier and our team productive.
One. Collaboration. It gave us a system that enables us to work on one source. We felt the importance of collaboration thru one source when somebody cannot use TFS at the moment. That each and everytime he /she will give a new source codes, I had to manually merge it and messes up everything. When he joined TFS, we already overcame the manual merge nuisance at last.
Two. We are all over places (ehem our homes, some coffee shop or anywhere where we can sit around and code). Gives us mobility. We can work anywhere as long as we have internet connection (even just for synching) – its like using your email client that you can compose your email replies on the go and just sync when there is an internet connection available.
Three. Service Resiliency. Lets just be realistic, powers go out, internet connections go bad. Server hardware crashes. We have seen a lot of these problems in our sprints and we never had to worry about the main source code and work item repository (TFS).
Four. Branching, Merging, Versioning.
Source code versioning is very important. It gives you a chance to go back in time to look for changes. Each change is group, thus called “Change Sets”. Each change set has a unique number associated with it and all other information like who submitted the change set, when was it done and ofcourse the ability to manage file conflicts – called merging. Sometimes two developer works on a single file, its like two person working on a single excel file or a word document, then merge their work later.
Branching is also a way to version the source code, having copies of the entire source code. Commonly used for back-ups, rollbacks and if different teams are using the code, like one branch is for Production Issues another branch is for Bug fixing then the build administrator merges the changes between the two branch. I
Let me share this scenario that has just happened last last week. Somebody deleted some code on the branch. He accidentally dragged a folder away and was deleted after he “submitted” his change set to the repository. “If we did not have TFS and I hadn’t branched last night, we are doomed”. But for now, I can sing:
“Branching, Merging, Com en-Versioning. Say it ain’t so, I will not go. Turn the lights off, carry me home. Na, na, na, na. Na, na, na, na, na, na, na, na, na, na, na”
Five. Continuous integration or CI. This is automatically “building” or “compiling” the current version of the source code and deploying it to the target system for testing. If the source code is not properly written, it would yield a “Compile or Build error” and cannot be deployed. When there is a compile error, we can file it as a bug and the developers can fix that as a part of their list of work. For it to automatically do CI, TFS needs to listen for a trigger, maybe a new source code submission, scheduled or a manually triggered event. Combination of these in a nutshell are called build definitions. You can even trigger a CI on the web 🙂
I have configured a lot of CI but configuring it on an SUR40 made it to the top of the coolest CI build that I did. Maybe I’ll blog about it later but for now I gotta get back there so TFS Guys at Microsoft, in behalf of our Ninja team thank you tfsservice!