今天看了一下Brian Harry大叔的博客,才发现2016年3月17日,是Team Foundation Server的10岁生日。

Today marks the 10th anniversary of the day we shipped the first version of TFS – TFS 2005. It doesn’t seem that long ago but we sure have come a long way. The other day I recorded a Radio TFS interview with Martin Woodward and Greg Duncan. Check it out if you are interested. I have to admit I haven’t listened to it. I never listen to my own interviews – it just feels creepy I sure had a lot of fun doing it though.

https://blogs.msdn.microsoft.com/bharry/2016/03/17/10th-anniversary-of-team-foundation-server/

会算数的小伙伴可能会奇怪,TFS第一个版本明明是2005,那么今年应该是11岁了。其实这里面有个故事。TFS 的开发工作开始于2002年,那时候布莱恩大叔本来准备离开微软,回到北卡的家里加入其他的创业公司,因为他其实一直都不太喜欢大公司的氛围。这位布莱恩大叔本来其实是一名农民,到现在为止,他在北卡还经营着自己的牧场,养着牛,养着马,不管TFS的时候开着拖拉机在牧场上赶牛。如果要说TFS,还是要从微软那个坑爹的Visual Source Safe(VSS)说起。

布莱恩大叔大学毕业的时候(当然那时候还不是大叔了),曾经加入过2家创业公司,第二家公司的产品后来被微软收购,就是这个Visual Source Safe(VSS)。进入微软后,布莱恩主要负责.NET CLR的开发工作,这个事情一直持续到CLR 1.1的开发完成。这段时候每当有人问其他,他都会跟大家说他在微软只会呆3年的时间。直到2002年,他终于决定离开微软回到北卡和他的家人在一起。但是,这时微软决定开始开发TFS,并且允许布莱恩在北卡设立自己的研发团队,于是Brian大叔就如愿以偿的回答家乡并在他的客厅里开始TFS的开发。这事儿一下子就干了3年,他的团队也从开始的2个人慢慢扩展到将近30人。TFS的第一个版本本来计划在2005年11月发布,所以被命名为TFS 2005,但是直到2006年1月份仍然没有一个稳定版本可以发布,为这事儿布莱恩也被他的老板狠狠的批了一顿,但是老板也告诉他:大家不会记住一个迟到的产品,但是会记住一个满是bug产品。最后,TFS 终于在2006年3月17日正式发布。

说够了野史,我们来说说正史,布莱恩大叔全名Brian Harry是微软院士,也是微软ALM产品线的总经理。微软院士是微软内部技术等级的最高级别。

TFS 2005


TFS2005基本上已经具备了管理软件研发的主要功能,工作项,源代码和构建功能都已经完备,使用上虽然不如现在方便,但是并没有特别严重的问题。唯一严重的问题就是安装,基本上那个时候装个TFS需要2-3天的时间,并不是这个玩意儿有多大,而是里面的坑太多,因为TFS依赖与IIS和SSRS服务,如果这些服务的配置中有一点不对,安装都无法成功,这些前置条件又没有详细的文档,当时坑了很多人。

这是当时的Team Explorer界面,据布莱恩大叔说,这个Team Explorer的代码基本上都是他自己写的。

小编也是从那个时候开始用TFS 2005的。05年刚好回国设立研发中心,VSS服务器在澳洲总部,签入一个文件需要10分钟的时间,非常折磨人。因为TFS的源代码管理是基于HTTP的,这样问题就解决了,效率大幅提升。所以在05年底到06中的一段时间,我的主要工作就是将公司的产品代码从VSS迁移至TFS。

TFS 2008


这个版本中主要改进了一些易用性问题,速度上有所提升,但并没有特备重要的功能性提升,安装配置还是那么坑爹。

不过这个版本对于小编来说很重要,因为使用这个版本我设计并运作了第一次TFS培训:VSTSRealWorld,当时汶川大地震刚刚发生,我们组织了来自20家不同公司的开发人员一起在TFS上开发了一个孤儿领养应用。这也是我第一次采用演讲+动手实验+真实应用的方式进行培训,这种方式一直延续到现在。

TFS 2010


这个版本在TFS的发展上是个里程碑,里面对于安装配置和用户使用体验都进行了大幅改进。第一次引入了管理控制台程序,帮助管理员完成安装和配置工作,装TFS终于不再是个问题了。

也是在这个时候,TFS开始在微软内部大幅度的推广使用。从2005版本开始,布莱恩大叔就要求自己的团队使用自己的TFS来管理TFS的开发工作,他管这个叫做吃狗粮(dogfooding)。到2010版发布,微软内部的TFS用户已经从最初布莱恩团队的30来个人,扩展到整个开发工具事业部(DevDiv)的将近3000人规模,这个过程中,TFS经历了多次大手术,特别是TFVC源代码控制的核心代码,很多都是被完全重写的。这也造成了2010版本在数据库结构上的大幅修改,开始出现了项目集合数据库的概念(Project Collection Database)。

在2010上的另外一个重大改动是,增加了浏览器访问的能力。当然,这个TFSWA与现在大家看到的区别仍然很大,这是当时微软所收购的一个叫TeamPrise的产品,直接集成进去了。

TFS 2012


在TFS的发展史上,这是一个里程碑式的版本。从2012版本开始,TFS中开始出现了非常明显的敏捷开发流程,同时版本的发布节奏也从2年缩短到3个月。

这其实就是2010那个TFSWA的改进版,不仅仅漂亮了很多,而且里面出现了如backlog,sprint,burndown等很多敏捷开发,或者说Scrum中的概念。这其实也标志着微软内部的敏捷转型已经取得了很大的进展。

从2012版本开始,TFS的发布周期从2年改为3个月,所以也就出现了Update 1, Update 2, Update 3和Update 4这样4个小版本。小编我也是在这一年,从原先的Windows Networking方向MVP,转而投奔Visual Studio ALM方向。这都是因为那一年遇到了布莱恩大叔,并被满屋子的ALM MVP的开放讨论氛围所吸引。

基本上,国内的TFS业务也在这一年开始爆发,这一年中我就给华为,深圳招商国际信息,京东商城,南京国电南自,上海百威英博等公司实施了TFS项目;也开始接触更多的客户。

以下这两篇博客就是在那个时候写下的:
http://devopshub.cn/2013/07/21/tfs-is-huge-in-china-part1/
http://devopshub.cn/2013/07/21/tfs-is-huge-in-china-part2/

TFS 2013


这个版本的TFS已经相当成熟,用户体验进一步提升,同时对非微软开发平台的支持开始逐步加强,比如:对Java Eclipse,IDEA,XCode的支持。

另外一个重大的实践就是 Visual Studio Online的发布 http://www.visualstudio.com ,现在这个服务叫做Visual Studio Team Service,是微软托管在Azure云裳的在线TFS版本。不仅仅如此,这个在线版本采用更短的发布周期,每3周就会发布新功能。

同时,TFS开始向DevOps的方向拓展,通过收购IN RELEASE提供发布管道支持,这就是现在大家看到的Release Management的前身。

TFS 2015


终于回到500年后了,这就是现在大家看到的版本了,这个版本对于敏捷开发的支持进一步加强,可以看到TFS中的电子看板,支持灵活的栏目定制和泳道。

另外3个值得注意的改进是
– 基于node.js的跨平台持续集成引擎,可以支持在Linux, Mac上的自动化
– 浏览器中的Release Management
– 全新的插件市场,可以对TFS中的任意功能进行灵活的定制

具体的功能说明可以查看以下链接:

http://devopshub.cn/tag/vsts-log/


陪伴了TFS走过了10年,能够看到一个产品的整个发展历程是一件很让人兴奋的事情。

TFS 10周年生日快乐!

TFS 10周年生日快乐 – TFS与布莱恩大叔的故事的更多相关文章

  1. Windows 10 周年更新正式版下载 + win10 快捷键

    Windows 10 周年更新正式版  360云资源总汇(施工中): https://yunpan.cn/c6Svi7Az52XBs (提取码:e5dd)今后提到周年更新版.1607版或RS1版,都是 ...

  2. In-Place upgrade to Team Foundation Server (TFS) 2015 from TFS 2013Team Foundation Server TFS TFS 2015 TFS upgrade TFS with Sharepoint

    This upgrade document gives detailed step by step procedure for the In-Place upgrade from TFS 2013 t ...

  3. Jetty 9.3庆祝20周年生日快乐,并添加HTTP/2支持

    本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2015/06/Building-Distributed-Systems 今年6月12日 ...

  4. VS访问不到TFS、VS连接TFS报TF30063

    =============================================== 20170704_第一次修改                       ccb_warlock === ...

  5. 【TFS】TFS2015链接TFS出现TF31002/TF400324问题解决方案

    安装VS2015后链接TFS发现出现TF31002错误,然后用浏览器打开TFS URL能正常访问,在TFS online中点击用vs打开按钮,提示TF400324错误 1. VS2015中打开: 2. ...

  6. Git 10 周年之际,创始人 Linus Torvalds 访谈

    点这里 十年前的这一周,linux 内核社区面临一个根本性的挑战:他们不再能够使用他们的修复控制系统:BitKeeper,同时其他的软件配置管理遇到了对分布式系统的新需求.Linus Torvalds ...

  7. .NET十五周年生日快乐 (3月7日发布Visual Studio 2017正式版?)

    今天 是.NET 对世界首次亮相15 周年.2002 年 2 月 13 日,第一版本的.NET 发布作为 Visual Studio.NET 的一部分.它仿佛就在昨天为微软建设成"下一代 W ...

  8. 【Hadoop 10周年】我与Hadoop不得不说的故事

    什么是Hadoop        今年是2016年,是hadoop十岁的生日,穿越时间和空间,跟她说一声生日快乐,二千零八年一月二十八号,是一个特别的日子,hadoop带着第一声啼哭,来到了这个世界, ...

  9. TcaplusDB 10周年 风雨兼程破浪行 自研存储见成长

    从找不到需求险些被叫停,到支撑亿级DAU的数据库行业标杆,腾讯云数据库TcaplusDB在风雨中走过了整整10年.辉映日月破风浪,十年一剑破九天.百万行代码就像淙淙流淌的数据溪流,终于在十年后汇成不可 ...

随机推荐

  1. PHP精选数组函数

    编程怎么能少的了数组呢,以下是学习PHP时常用的数组处理函数.在编程中要遵循一个原则就是DRY(Don`t Repeat Yourself)原则,PHP中有大量的函数,都记住这些函数不太现实,但常用的 ...

  2. Web前端上万字的知识总结

    下面是自己学HTML+DIV+CSS+JS时的学习笔记,给大家分享以下,相互学习.大二时候寒假在家无聊的时候想做点事,总结了一下web前端基础的东西,下面的每个字都是自己手敲的. 1.<html ...

  3. 分享一个 @user 前端插件

    开源地址:https://github.com/yuezhongxin/Mention.js 插件效果:类似于微博或 github 中 @user 列表效果. 这是个二次开发的插件,花了几天时间,对 ...

  4. 【记录】ASP.NET MVC AuthorizeAttribute OnAuthorization 验证跳转

    重写 AuthorizeAttribute 的 OnAuthorization 方法: using System.Web.Mvc; namespace Demo.Web.Common { public ...

  5. mysql表名查询sql

    select table_schema,table_name,engine from information_schema.tables where table_schema not in('info ...

  6. 将Excel文件转换为Html

    将Excel文件转换为HTML 背景 我的工作有时会涉及到财务数据的处理.我们大家都知道,Excel文件在处理数据中很流行并且被广泛使用.Excel让我们可以将存储在里面的数据进行数学计算.我在工作中 ...

  7. Unity调用Android类方法

    Unity调用Android类方法 1.  添加Unity的classes.jar文件 创建一个Android工程AndroidUnityDemo. 由于Unity的版本不同,直接在Unity安装包文 ...

  8. 2014/11/06 Oracle触发器初步 2014-11-06 09:03 49人阅读 评论(0) 收藏

    触发器我就不多解释了,保证数据的完整性的神器,嗯..也是减少程序员工作托管给数据库操作的好帮手.就不讲一些大道理了.通俗点,我们对数据库的操作,无非就是增 删 改 查. 触发器就是在删,改,增的时候( ...

  9. 使用webstom或者idea上传代码到github或coding

    鉴于github网络速度太慢,建议用coding.先介绍github上传方式,因为webstom或idea集成了github,方法简单. git是一个版本控制器,他的作用是管理代码.比如你修改了代码, ...

  10. 从零开始学 Java - 我放弃了 .NET ?

    这不是一篇引起战争的文章 毫无疑问,我之前是一名在微软温暖怀抱下干了近三年的 .NET 开发者,为什么要牛(sha)X一样去搞 Java 呢?因为我喜欢 iOS 阿!哈哈,开个玩笑.其实,开始学 Ja ...