TFS 10周年生日快乐 – TFS与布莱恩大叔的故事
今天看了一下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与布莱恩大叔的故事的更多相关文章
- Windows 10 周年更新正式版下载 + win10 快捷键
Windows 10 周年更新正式版 360云资源总汇(施工中): https://yunpan.cn/c6Svi7Az52XBs (提取码:e5dd)今后提到周年更新版.1607版或RS1版,都是 ...
- 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 ...
- Jetty 9.3庆祝20周年生日快乐,并添加HTTP/2支持
本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2015/06/Building-Distributed-Systems 今年6月12日 ...
- VS访问不到TFS、VS连接TFS报TF30063
=============================================== 20170704_第一次修改 ccb_warlock === ...
- 【TFS】TFS2015链接TFS出现TF31002/TF400324问题解决方案
安装VS2015后链接TFS发现出现TF31002错误,然后用浏览器打开TFS URL能正常访问,在TFS online中点击用vs打开按钮,提示TF400324错误 1. VS2015中打开: 2. ...
- Git 10 周年之际,创始人 Linus Torvalds 访谈
点这里 十年前的这一周,linux 内核社区面临一个根本性的挑战:他们不再能够使用他们的修复控制系统:BitKeeper,同时其他的软件配置管理遇到了对分布式系统的新需求.Linus Torvalds ...
- .NET十五周年生日快乐 (3月7日发布Visual Studio 2017正式版?)
今天 是.NET 对世界首次亮相15 周年.2002 年 2 月 13 日,第一版本的.NET 发布作为 Visual Studio.NET 的一部分.它仿佛就在昨天为微软建设成"下一代 W ...
- 【Hadoop 10周年】我与Hadoop不得不说的故事
什么是Hadoop 今年是2016年,是hadoop十岁的生日,穿越时间和空间,跟她说一声生日快乐,二千零八年一月二十八号,是一个特别的日子,hadoop带着第一声啼哭,来到了这个世界, ...
- TcaplusDB 10周年 风雨兼程破浪行 自研存储见成长
从找不到需求险些被叫停,到支撑亿级DAU的数据库行业标杆,腾讯云数据库TcaplusDB在风雨中走过了整整10年.辉映日月破风浪,十年一剑破九天.百万行代码就像淙淙流淌的数据溪流,终于在十年后汇成不可 ...
随机推荐
- MySQL入门04-MySQL主从配置
1.主节点授权同步用户 2.主节点修改配置文件 3.从节点修改配置文件 4.主节点锁定后查看状态 5.从节点配置并启动同步.查看状态 6.主节点解锁并验证从节点是否正常同步 环境:CentOS 6.7 ...
- Generator库co4.6使用及源码分析
原文链接 http://www.cnblogs.com/ytu2010dt/p/6043947.html co4.x已经抛弃了原来thunk转而结合promise实现. 一:promise proms ...
- 机器学习 1 regression
Linear regerssion 线性回归 回归: stock market forecast f(过去10年股票起伏的资料) = 明天道琼指数点数 self driving car f(获取的道路 ...
- sql server实现自定义分割月功能
本文目录列表: 1.为何出现自定义分割月需求 2.sql server实现自定义分割月功能 3.测试验证效果 4.总结语 5.参考清单列表 1.为何出现自定义分割月的需求 今天梳理一个平台的所 ...
- System.Security.Cryptography.CryptographicException,密钥集不存在
非常感谢,已经解决了.是当前用户没有权限访问证书的私钥文件的问题,之前尝试去解决,但是在对:C:\Documents and Settings\All Users\Application Data\M ...
- xml html entity 列表
Name Character Unicode code point (decimal) Standard Description quot " U+0022 (34) XML 1.0 dou ...
- Unity实现滑页嵌套(解决ScrollRect嵌套冲突问题)
简介 由于项目需要+有网友咨询,所以做了个横向滑页+某一横向滑页中有竖向滑页的demo,实现有点绕弯子,但基本功能还是比较完善,发上来共享一下. 效果 思路 第一步的思路是自己判断触屏拖动位置,然后控 ...
- [WCF编程]10.操作:回调操作
一.回调操作概述 WCF支持服务将调用返回给它的客户端.在回调期间,许多方面都将颠倒过来:服务将成为客户端,客户端将编程服务.回调操作可以用在各种场景和应用程序中,但在涉及事件或者服务发生时间需要通知 ...
- 装饰模式 - Decorator 和 外观模式 - Facade
装饰模式 Decorator,不改变接口但动态给对象加入责任,所需功能按顺序串联起来控制,比生成子类灵活. 外观模式 Facade,让接口更简单.为子系统中的一组接口提供一个一致的界面. 参考:
- C# MVC绑定 List<DapperRow>到bootstrap-table列表
1.Dapper返回List<dynamic>对象 /// <summary> /// 获取候选人推荐的分页数据 /// </summary> /// <pa ...