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年.辉映日月破风浪,十年一剑破九天.百万行代码就像淙淙流淌的数据溪流,终于在十年后汇成不可 ...
随机推荐
- 在Linux中运行Nancy应用程序
最近在研究如何将.NET应用程序移植到非Windows操作系统中运行,逐渐会写一些文章出来.目前还没有太深的研究,所以这些文章大多主要是记录我的一些实验. 这篇文章记录了我如何利用NancyFx编写一 ...
- input(file)按钮美化
<!DOCTYPE HTML> <html> <body> <input type="file" id="upload" ...
- Golang类型转换
类型转换 1.int转string strconv.Itoa(i) 2.string转int i, err = strconv.Atoi(s) 或者 i, err = ParseInt(s, 10, ...
- 如何在ios中集成微信登录功能
在ios中集成微信的登录功能有两种方法 1 用微信原生的api来做,这样做的好处就是轻量级,程序负重小,在Build Settings 中这样设置 然后设置 友盟的设置同上,但是要注意,加入你需要的所 ...
- ZOJ Problem Set - 1251 Box of Bricks
这道题简单的翻译成纯数学语言就是给你n个数字,每次运算只能是加1或者减1,问经过最短几步可以使得n个数字相等 由于题目限定了n个数字一定有平均数,所以求出avg,将所有比其大的数字或者比其小的数字的差 ...
- hibernate笔记--双向一对多映射方法
前两节写了两个例子,分别是单向多对一的映射和单向一对多的映射,这一节继续以这个例子讲一下双向一对多的映射方法,如下图所示: 很多时候,我们既想从一对端获取多对端的信息,又想从多对端获取一对端的数据,这 ...
- DotNet隐藏敏感信息操作方法
在项目中,有时候一些信息不便完全显示,只需要显示部分信息.现在提供一些隐藏敏感信息的操作方法,主要为对信息的截取操作: 1.指定左右字符数量,中间的*的个数和实际长度有关: /// <summa ...
- SQLite关系型数据库
SQLiteOpenHelper的使用: 首先声明一个DatabaseHelper类,这个类继承于SQLiteOpenHelper类,首先得有构造函数,声明DatabaseHelper类如 ...
- iOS多线程技术方案
iOS多线程技术方案 目录 一.多线程简介 1.多线程的由来 2.耗时操作的模拟试验 3.进程和线程 4.多线程的概念及原理 5.多线程的优缺点和一个Tip 6.主线程 7.技术方案 二.Pthrea ...
- [Web API] Web API 2 深入系列(2) 消息管道
目录 HttpMessageHandler Web Host模式处理过程 Self Host模式处理过程 HttpMessageHandler Web API处理管道由一系列HttpMessageHa ...