{"id":13845,"date":"2018-01-30T09:09:01","date_gmt":"2018-01-30T14:09:01","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/bharry\/?p=13835"},"modified":"2019-02-27T03:47:13","modified_gmt":"2019-02-27T03:47:13","slug":"tfs-2018-update-1-rc-is-available","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/bharry\/tfs-2018-update-1-rc-is-available\/","title":{"rendered":"TFS 2018 Update 1 RC is available"},"content":{"rendered":"<p>Today we released the release candidate for Team Foundation Server 2018 Update 1.\u00a0 Here are the important links:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.visualstudio.com\/en-us\/news\/releasenotes\/tfs2018-update1\">TFS 2018.1 RC1 Release notes<\/a><\/li>\n<li><a href=\"https:\/\/go.microsoft.com\/fwlink\/?LinkId=866620\">TFS 2018.1 RC1 Web installer<\/a><\/li>\n<li><a href=\"https:\/\/go.microsoft.com\/fwlink\/?LinkId=866621\">TFS 2018.1 RC1 ISO image<\/a><\/li>\n<li><a href=\"https:\/\/go.microsoft.com\/fwlink\/?LinkId=866618\">TFS 2018.1 RC1 Express edition Web installer<\/a><\/li>\n<li><a href=\"https:\/\/go.microsoft.com\/fwlink\/?LinkId=866619\">TFS 2018.2 RC1 Express edition ISO image<\/a><\/li>\n<\/ul>\n<p>If you look at the release notes, you&#8217;ll notice they are a lot shorter than in previous Update 1s.\u00a0 I want to spend a little time explaining what&#8217;s going on.\nSeveral years ago, for TFS,\u00a0we adopted a cadence of a major release, followed by a couple of significant feature releases, followed by one or two releases which contained mostly bug fixes.\u00a0 The major releases were typically ~18 months apart and the minor releases varied from 3-5 months apart.\u00a0 We made some mistakes along the way but, overall, the cadence has been working reasonably well.<\/p>\n<p>However, over the past year or so, our major release cadence has firmed up to be consistently 12 months apart &#8211; TFS 2017 shipped in Nov 2016, TFS 2018 shipped in Nov 2017 and we anticipate TFS 2019 will ship in Nov 2018.\u00a0 This aligns well with our <a href=\"https:\/\/www.microsoft.com\/en-us\/connectevent\">Connect event<\/a> and provides a predictable schedule for us all to plan around.\u00a0 However, this has also created some problems for us.\u00a0 With Update 1 shipping in the spring and Update 2 shipping in the summer, Update 3 has started to conflict with our efforts in the fall to ship the subsequent major release.\u00a0 This has caused us to have two concurrent on-prem releases in the fall &#8211; TFS V.current Update 3 and TFS v.next RTM.\u00a0 We&#8217;ve found that this creates a level of stress and fog on the team that it isn&#8217;t working well for us.\u00a0 So, this year, we&#8217;ve decided to make some changes to our approach.<\/p>\n<p>The basic model remains the same \u2013 a major release with 3 intervening minor releases. However, the content of Update 1 will change from being a significant feature release to being mostly a bug fix release.\u00a0 This enables us to shorten the intervals and reduce the overlap in the fall.\u00a0 So rather than the TFS 2017 schedule:<\/p>\n<ul>\n<li>TFS 2017 RTM (November 2016) &#8211; <a href=\"https:\/\/www.visualstudio.com\/en-us\/news\/releasenotes\/tfs2017-relnotes\">A major release<\/a><\/li>\n<li>TFS 2017.1 (March 2017) &#8211; <a href=\"https:\/\/www.visualstudio.com\/en-us\/news\/releasenotes\/tfs2017-update1\">A significant feature update<\/a><\/li>\n<li>TFS 2017.2 (July 2017) &#8211; <a href=\"https:\/\/www.visualstudio.com\/en-us\/news\/releasenotes\/tfs2017-update2\">A significant feature update<\/a><\/li>\n<li>TFS 2017.3 (November 2017) &#8211; <a href=\"https:\/\/www.visualstudio.com\/en-us\/news\/releasenotes\/tfs2017-update3\">Mostly bug fixes<\/a><\/li>\n<\/ul>\n<p>We&#8217;re expecting the TFS 2018 schedule to look more like:<\/p>\n<ul>\n<li>TFS 2018 RTM (November 2017) &#8211; <a href=\"https:\/\/www.visualstudio.com\/en-us\/news\/releasenotes\/tfs2018-relnotes\">A major release<\/a><\/li>\n<li>TFS 2018.1 (February 2018) &#8211; Mostly bug fixes<\/li>\n<li>TFS 2018.2 (May 2018) &#8211; A significant feature update<\/li>\n<li>TFS 2018.3 (August 2018) &#8211; Mostly bug fixes<\/li>\n<\/ul>\n<p>Said another way, the bulk of the new features in TFS 2018 updates will come out in May rather than half in March and half in July.\u00a0 To be fair, Update 1 won&#8217;t be *entirely* bug fixes.\u00a0 There will be a few carefully selected new features that don&#8217;t have significant effort\/schedule impact yet we believe are important to get out quickly. A good example in TFS 2018.1 is our support for GVFS caching to enable distributed teams to get better performance when working with large repositories.<\/p>\n<p>Another way to understand this change is to think about it mechanically.\u00a0 In TFS 2017, Update 1 and Update 2 were branched from master, meaning they contained all the sprint work committed in the intervening time.\u00a0 Update 3 was branched from Update 2 so any changes for Update 3 were either directly made in the Update 3 branch or hand ported to the Update 3 branch from master.\u00a0 This gives much more control over how much churn goes into the release.\u00a0 In TFS 2018, Update 1 will branch from the RTM release branch and then, as before, Update 2 will branch from master. Update 3 will branch from Update 2.<\/p>\n<p>Why are we changing this?\u00a0First, this allows us to reduce the overlap between Update 3 and the next major release.\u00a0 Second, preparing an on-premises release for any version which has a lot of churn is expensive.\u00a0 On-prem releases involve much more regression and config matrix testing than our cloud releases.\u00a0 For example, we have to test upgrades from many previous versions of TFS, many OS versions, several SQL server versions, etc.\u00a0 The time spent doing all of that extra testing is less time spent working on improvements.\u00a0 We believe that the aggregate impact here will be good for customers.\u00a0 There will be 2 feature releases per year rather than 3 but they will be more evenly spaced (one every 6 months &#8211; major, then minor) and the aggregate amount of value will be increased due to less time spent in release validation.<\/p>\n<p>These changes only affect our on-premises TFS product.\u00a0 Our Azure-based VSTS service will continue to deploy from master every sprint (every 3 weeks).\nWe&#8217;re still talking about exactly how this will affect our support strategy and are open to your input.\u00a0 Over the past couple of years we&#8217;ve adopted a support strategy that accommodates two classes of customers:<\/p>\n<ol>\n<li>Those who always want to be on the latest version and are willing to install every Update.<\/li>\n<li>Those who want to pick a version to stay on for a year or more.<\/li>\n<\/ol>\n<p>Both classes of customers need a good support story so that they can contact customer support and get help if they have problems.\nTo enable these two different ways of managing updates, our policy has been that we provide long term support for every major release and for the &#8220;latest update&#8221; of each major release.\u00a0 Customers who want to pick a version and stay on it should pick a major release and we will offer support and patches, as necessary, for the major release for the lifetime of the product.\u00a0 \u00a0Customers who want to aggressively update can install any Update they want and, if they need to get a patch, they will be asked to move to the latest Update for the major version they are on as part of getting the patch.<\/p>\n<p>With the change I&#8217;m describing here, I fear, no matter how many assurances I give and no matter how pure my intent is, customers will perceive the .1 release as higher quality and more desirable than the RTM release.\u00a0 And, at some level, I have to agree with them.\u00a0 It is, after all, just RTM plus some bug fixes (and a few small, non-disruptive,\u00a0features).\u00a0 So, we\u2019re considering the option to just embrace that. This would mean that for TFS 2018 going forward we would change our support model to provide long term support for the .1 release rather than the RTM release. In a sense, Update 1 *is* a patch for RTM and hence is on the servicing train for RTM.\u00a0 The guidance to customers who want to stay on the most stable release possible with no changes, would be to either install the .1 or .3 Updates of any major release family.\u00a0I&#8217;m open to thoughts\/discussion on this.<\/p>\n<p>Long post, I know.\u00a0 Sorry.\u00a0 I wanted to try to clearly explain what we are doing and why.\u00a0 As always, we are open to your feedback.\u00a0 At this point, we are committed to this cadence for the TFS 2018 product cycle but, as with everything, we will watch, listen and learn.\u00a0 If this doesn&#8217;t work for people, we can either come up with a 3rd option or go back to what we were doing before with TFS 2019.\u00a0 All options are on the table, but I think people are going to like this better.\u00a0 We&#8217;ll see.<\/p>\n<p>Brian<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today we released the release candidate for Team Foundation Server 2018 Update 1.\u00a0 I&#8217;ve shared some important links in this post. <\/p>\n","protected":false},"author":244,"featured_media":14617,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[5],"class_list":["post-13845","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-tfs"],"acf":[],"blog_post_summary":"<p>Today we released the release candidate for Team Foundation Server 2018 Update 1.\u00a0 I&#8217;ve shared some important links in this post. <\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/posts\/13845","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/users\/244"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/comments?post=13845"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/posts\/13845\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/media\/14617"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/media?parent=13845"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/categories?post=13845"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/tags?post=13845"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}