<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>vincem's WebLog : Build Topics</title><link>http://blogs.msdn.com/vincem/archive/tags/Build+Topics/default.aspx</link><description>Tags: Build Topics</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>The Build Master book has shipped!!</title><link>http://blogs.msdn.com/vincem/archive/2005/10/08/478525.aspx</link><pubDate>Sat, 08 Oct 2005 11:13:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:478525</guid><dc:creator>vincem</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/vincem/comments/478525.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vincem/commentrss.aspx?PostID=478525</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Hello, it’s been a long while.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;The two major reasons for my absence is the amount of time needed to get &lt;EM&gt;The Build Master&lt;/EM&gt; book completed and the birth of my son! I am happy to say that both events have gone well and now I hope to have more time to blog and spend time with my baby boy and his older sister!&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Since the book has officially shipped, I would like to say that it was an honor and privilege to work with an amazingly great and truly professional group of people at Addison-Wesley. The delay in getting this book published was entirely my fault. Sorry if I kept some of you waiting – it was necessary to get everything right (and all of the appropriate permissions). If anyone reading this blog is considering writing a book, I could not give a higher recommendation than going with A-W. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;(to get more info or order&amp;nbsp;click &lt;A href="http://www.amazon.com/exec/obidos/ASIN/0321332059/cmcrossroads-20/002-2796297-3603218"&gt;here&lt;/A&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=478525" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vincem/archive/tags/Build+Topics/default.aspx">Build Topics</category></item><item><title>versioning part 2 (breaking down a windows file version)</title><link>http://blogs.msdn.com/vincem/archive/2005/04/01/404441.aspx</link><pubDate>Fri, 01 Apr 2005 07:02:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:404441</guid><dc:creator>vincem</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/vincem/comments/404441.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vincem/commentrss.aspx?PostID=404441</wfw:commentRss><description>&lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;span style="FONT-SIZE: 12pt"&gt;I have had a couple of good questions from my &lt;A href="http://blogs.msdn.com/vincem/archive/2005/02/27/381267.aspx"&gt;previous blog entry on versioning&lt;/a&gt; of which I will address the first one here and the other one in another entry.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;span style="FONT-SIZE: 12pt"&gt;1) What should be used for a build number? &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;span style="FONT-SIZE: 12pt"&gt;Well I think as a rule-of-thumb a codeline in a source tree should have it's own build number and that number should start at zero when the branch is first created. If it is a build off of the main trunk then the build number should go into the &amp;lt;revision&amp;gt; field. You should keep your mainline incrementing with each build as long as it is still the tip of your source tree. I just right-clicked on kernel32.dll on my machine and went to properties, then clicked on the version tab and found 5.1.2600.2180 listed as the file version.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;span style="FONT-SIZE: 12pt"&gt;Let’s break this down in more detail – &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;span style="FONT-SIZE: 12pt"&gt;5.1 is the internal version number of Windows XP which is always used in our bugtracker, if this was a Win 2k3 kernel this number would be 5.2. If it was Longhorn it would be 6.0.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;span style="FONT-SIZE: 12pt"&gt;2600 is the RTM(Released To Manufacturing) &lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-STYLE: italic; mso-bidi-font-style: normal"&gt;build number&lt;/span&gt;&lt;/i&gt; of Windows XP&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;span style="FONT-SIZE: 12pt"&gt;2180 is the RTM &lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-STYLE: italic; mso-bidi-font-style: normal"&gt;build number&lt;/span&gt;&lt;/i&gt; of Windows XP &lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-WEIGHT: bold; mso-bidi-font-weight: normal"&gt;SP2 – &lt;/span&gt;&lt;/b&gt;SO how could this build be earlier than the original XP RTM (2600)?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;span style="FONT-SIZE: 12pt"&gt;The reason why XP &lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-WEIGHT: bold; mso-bidi-font-weight: normal"&gt;SP2&lt;/span&gt;&lt;/b&gt; has a lower build number is because the &lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-WEIGHT: bold; mso-bidi-font-weight: normal"&gt;SP2&lt;/span&gt;&lt;/b&gt; codeline is a branch off of the XP mainline (the 2600 codeline) and when the branch was made the build number was reset to 0. The large number of builds is due to the fact that SP2 contains all of the SP1(I think the RTM &lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;build number was 1086 for SP1 – same branch) changes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;span style="FONT-SIZE: 12pt"&gt;Confused yet? It is if you do not try to visualize what our source trees look like.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;span style="FONT-SIZE: 12pt"&gt;This version format is consistent with my previous post of the 4 part file version number.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;span style="FONT-SIZE: 12pt"&gt;For the .NET folks, remember, do not confuse or try to use this number for your assembly versions. Keep the two properties separate but make sure each assembly has both an assembly version and a file version when you ‘right-click’ on it. I got a few questions about that.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;span style="FONT-SIZE: 12pt"&gt;Furthermore, I do not like to see dates mixed into a version number simply because there are so many date formats out there that it can be difficult to standardize on one. Also, what if you have more than one build on a given date? How do you handle that scenario?&lt;/span&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;span style="FONT-SIZE: 12pt"&gt;This leads into how to label your source tree. For the short, simple answer, use the file version that is described above. Use more than just a build number for a label. Of course this is very dependent on the source control tool you use but I have seen at several customer sites (and MS) people just using the build number when you get more value using the complete version string. This will really help you when you need to do a ‘one-off’ hotfix or a SP yourself.&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;span style="FONT-SIZE: 12pt"&gt; &lt;p&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;span style="FONT-SIZE: 12pt"&gt;I guess there is also one more point, the build number should be set before the build is fired off not when it is done. I’ll let you think about why.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=404441" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vincem/archive/tags/Build+Topics/default.aspx">Build Topics</category></item><item><title>some Versioning ideas</title><link>http://blogs.msdn.com/vincem/archive/2005/02/27/381267.aspx</link><pubDate>Sun, 27 Feb 2005 19:33:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:381267</guid><dc:creator>vincem</dc:creator><slash:comments>12</slash:comments><comments>http://blogs.msdn.com/vincem/comments/381267.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vincem/commentrss.aspx?PostID=381267</wfw:commentRss><description>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Times New Roman'"&gt;When people talk about versioning this can be a very broad subject so let’s narrow this down a little bit…&lt;/span&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Times New Roman'"&gt;&amp;nbsp;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Times New Roman'"&gt;There really is only one version number that anyone should care about and that is the ‘file version’ of the files that you ship. I think this topic gets easily confused and convoluted since there are so many different ways of how this file version number (usually a four part number – explained in detail later) gets generated. Furthermore, with the introduction of the Microsoft .Net Framework and .Net assembly versions, this topic gets very confusing as people move from unmanaged to managed code. &lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Times New Roman'"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Times New Roman'"&gt;Now if you are doing some .Net programming you will have to worry about .Net assembly versions but you should Not confuse this with the actual file version.&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Times New Roman'"&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; mso-layout-grid-align: none"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-font-size: 10.0pt"&gt;The two versions should not be linked together. You can use the same format described&amp;nbsp;below for file versioning as for&amp;nbsp;your assembly version (as this is what is recommended with the last field being a little different). Assembly versions are meant for binding purposes only.&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/span&gt;They are not meant to keep track of different daily versions – use the file version for that instead. It is recommended to keep the assembly version the same from build to build and only change it after each external release. For more details on how .Net works with these versions I will refer you to the link below:&lt;/span&gt;&lt;/p&gt;&lt;/span&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Times New Roman'"&gt;&amp;nbsp;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Times New Roman'"&gt;For Assembly versioning info on MSDN look&lt;/span&gt;&lt;font face="Arial" size="2"&gt; &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconassemblyversioning.asp"&gt;&lt;font face="Arial" size="2"&gt;here&lt;/font&gt;&lt;/a&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Times New Roman'"&gt;. &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Times New Roman'"&gt;For general win32 versioning info on MSDN look&lt;/span&gt;&lt;font face="Arial" size="2"&gt; &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/Resources/VersionInformation.asp"&gt;&lt;font face="Arial" size="2"&gt;here&lt;/font&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;font face="Arial"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3.75pt"&gt;&lt;font face="Arial"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 14pt"&gt;Why worry about file versioning&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3.75pt"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Times New Roman'"&gt;I think there are several reasons why having a good version scheme for your software is very important. Of all of the good reasons I think the top five are (in random order):&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3.75pt"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Times New Roman'"&gt;1) To be able to track product binaries back to the original source files.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3.75pt"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Times New Roman'"&gt;2) To recreate a past build.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3.75pt"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Times New Roman'"&gt;3) To avoid DLL hell – multiple versions of the same file (library in this case) on a machine.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3.75pt"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Times New Roman'"&gt;4) To help your setup program handle upgrades and service packs.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3.75pt"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Times New Roman'"&gt;5) So your Product Support and Q/A teams can easily identify the bits they are working with.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3.75pt"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Times New Roman'"&gt;So how do we keep track of files in a product and link them back to the owner? How can you tell that you are testing or using the latest version of a released file? &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3.75pt"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Times New Roman'"&gt;This is a recommendation (taken from “The Build Master” book) of how to best setup the way you apply versioning to your software. There are a lot of different schemes out there and you should feel free to create your own versioning method. What is described here is what I have found to be the most effective and easiest way to do this to satisfy the top five reasons above.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3.75pt"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Times New Roman'"&gt;Ultimately, like most of the other topics in the book, the versioning responsibility of the files in a build tends to fall into hands of the build team. The reason why may be because it is usually the build team that has to deal with the headaches that come from having a poor versioning scheme. Therefore it is in their best interest to publish, promote and enforce a good versioning scheme. If the build team does not own this then someone who does not understand the full implications of versioning will make the rules. Needless to say, this would not be very desirable for anybody involved with the product.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;font face="Arial"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;font face="Arial"&gt;&lt;b&gt;&lt;i&gt;Microsoft Sidenote: “I’ve been slimed….”&lt;/i&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="Body0" style="MARGIN: 0in 0in 3pt; TEXT-INDENT: 0in"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: windowtext; FONT-FAMILY: Arial"&gt;In the old days (early nineties) in the Windows and Small Business Server group we used a very primitive source code control (SCC) tool called Source Library Manager (SLM, affectionately&lt;/span&gt;&lt;/i&gt;&lt;/b&gt; &lt;b&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: windowtext; FONT-FAMILY: Arial"&gt;pronounced ‘slime’) and the labeling function was so unreliable (and poor when it did work) that we would not even bother labeling the sources after each build. But how did the developers, testers, and build team look up previous check-ins to previous builds? Well fortunately back then the projects were not as complicated or as large as they are today so this was all manageable through our release and build process. As mentioned in an earlier chapter we kept all of the sources and binaries of each build on a release server and we kept about two weeks worth of those releases. This allowed the developers, testers, and builders quick access to the previous builds without having to rely on the labeling function of the SCC tool. If someone needed files from a build other than what was on our release server we had custom tools that we wrote that would scan the sources on the source trees by date stamp and file version, copy the sources to a share, then we would rebuild those sources on that share.&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;i style="mso-bidi-font-style: normal"&gt; &lt;/i&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: windowtext; FONT-FAMILY: Arial; mso-bidi-font-family: 'Times New Roman'"&gt;Since we had weekly tape backups of the release servers we could always restore past shares on the rare occasion we had reason to do this.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="body" style="MARGIN: 0in 0in 3pt; TEXT-INDENT: 0in"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="body" style="MARGIN: 0in 0in 3pt; TEXT-INDENT: 0in"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: windowtext; FONT-FAMILY: Arial"&gt;Bringing this forward to today&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"&gt; &lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: windowtext; FONT-FAMILY: Arial"&gt;(2005), Microsoft uses a very powerful SCC tool that was developed internally that handles labeling and branching extremely well – this was probably the most compelling reason to move to the new tool several years ago. If you want to adopt this tool take a look at the &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvsent/html/vsts-team.asp"&gt;SCC tool&lt;/a&gt; in the Visual Studio Team System. This tool has all of the features of Microsoft’s in-house tool and more.&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3.75pt"&gt;&lt;font face="Arial"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 14pt"&gt;File versioning&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3.75pt"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Times New Roman'"&gt;Every file in a product should have a version number. A four part number separated by periods such as the one below seems to be the established best practice. There are a lot of variations of what each part represents so I will explain what I have found to be the best way of defining these parts.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;pre&gt;&lt;font size="2"&gt;&lt;font style="BACKGROUND-COLOR: #eeeeee"&gt;&amp;lt;major version&amp;gt;.&amp;lt;minor version&amp;gt;.&amp;lt;build number&amp;gt;.&amp;lt;revision&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt; &lt;p class="body" style="MARGIN: 0in 0in 3pt; TEXT-INDENT: 0in"&gt;&amp;lt;major version&amp;gt; – usually assigned by the component owner, should be the internal version of the product, rarely changes during the development cycle of a product release&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="body" style="MARGIN: 0in 0in 3pt; TEXT-INDENT: 0in"&gt;&amp;lt;minor version&amp;gt; – usually assigned by the component owner, this is normally used when an incremental release of the product is planned rather than a full feature upgrade, rarely changes during the development cycle of a product release&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="body" style="MARGIN: 0in 0in 3pt; TEXT-INDENT: 0in"&gt;&amp;lt;build number&amp;gt; - usually assigned by the build team based on the build that the file was generated with, changes with every build of the code&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="body" style="MARGIN: 0in 0in 3pt; TEXT-INDENT: 0in"&gt;&amp;lt;revision&amp;gt; - usually assigned by the build team and can have several meanings: bug number, build number of older file being replaced, or service pack number, rarely changes most of the time and mostly used when servicing the file for an external release&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="body" style="MARGIN: 0in 0in 3pt; TEXT-INDENT: 0in"&gt;NOTE: These numbers range between 0 and 64k and can be enforced by a pre-build test tool or a build verification test.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3.75pt"&gt;&lt;font face="Arial"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 14pt"&gt;For example&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3.75pt"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: 'Times New Roman'"&gt;“5.1.2600.2180” is a typical file version for a Windows XP SP2 binary. Where 5.1 is the major.minor (5.0 was the version for Windows 2000) version of the product and 2600 is the build that this binary was built in and finally 2180 is the build number of the file it is replacing. Now if this was a one-off hotfix rather than a service pack release the &amp;lt;revision=2180&amp;gt; field may have the number of the bug that is being fixed such as 1000 (if this was the bug number).&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 3.75pt"&gt;&lt;font face="Arial"&gt;&lt;b&gt;&lt;i&gt;&lt;span style="FONT-SIZE: 14pt"&gt;Product Marketing numbers such as Windows NT 4.0.&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/p&gt;&lt;pre&gt;&lt;font style="BACKGROUND-COLOR: #eeeeee"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: windowtext; FONT-FAMILY: 'Times New Roman'"&gt;WARNING: There seems to be a common misuse of product marketing version numbers for the major and minor numbers in the version string.&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font style="BACKGROUND-COLOR: #eeeeee"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: windowtext; FONT-FAMILY: 'Times New Roman'"&gt;Do not use the product marketing version in the file version string since many components can be used by different products. &lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font style="BACKGROUND-COLOR: #eeeeee"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: windowtext; FONT-FAMILY: 'Times New Roman'"&gt;Furthermore, sometimes marketing numbers do not follow a sequential order or tend to be random. Now if on the occasional circumstance, the marketing people &lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font style="BACKGROUND-COLOR: #eeeeee"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: windowtext; FONT-FAMILY: 'Times New Roman'"&gt;want to use the internal version number of a product, e.g. NT 4.0 for their marketing version, then this would be ok just do not link the two numbers together in a permanent way.&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;&lt;pre&gt;&lt;font style="BACKGROUND-COLOR: #eeeeee"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: windowtext; FONT-FAMILY: 'Times New Roman'"&gt;Instead, for major and minor numbers use whatever numbers you use in your bug tracking database.&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Times New Roman'"&gt;You should also try to avoid tools that inject version numbers into binaries (as a post-build step). Although the tools may seem reliable, they introduce an instability factor into your released binaries by hacking hexadecimal code. Most Q/A teams would have a cow if this was happening to the binaries they were testing – and justifiably so. The build number should be built into the binary or document files.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;font face="Arial"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Times New Roman'"&gt;Comments, insults, or better ideas?&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Times New Roman'"&gt;&amp;nbsp;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Times New Roman'"&gt;PS&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: 'Times New Roman'"&gt;More details and info in “The Build Master” book that will be out in July by Addison-Wesley. &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;font face="Arial"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;font face="Arial"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=381267" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vincem/archive/tags/Build+Topics/default.aspx">Build Topics</category></item><item><title>What bug tracking software does MS use?</title><link>http://blogs.msdn.com/vincem/archive/2005/01/22/358769.aspx</link><pubDate>Sat, 22 Jan 2005 22:45:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:358769</guid><dc:creator>vincem</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/vincem/comments/358769.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vincem/commentrss.aspx?PostID=358769</wfw:commentRss><description>&lt;p&gt;&lt;font color="#000080"&gt;I get asked this question a lot when I'm&amp;nbsp;with customers&amp;nbsp;so I wanted to add a link to &lt;/font&gt;&lt;A href="http://blogs.msdn.com/scottgu/archive/2004/11/03/251930.aspx"&gt;&lt;font color="#000080"&gt;ScottGu's explanation&lt;/font&gt;&lt;/a&gt;,&lt;font color="#000080"&gt; and how&amp;nbsp;customers will see this(or similarities to the in-house Microsoft tracker)&amp;nbsp;in VSTS.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=358769" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vincem/archive/tags/Build+Topics/default.aspx">Build Topics</category></item><item><title>ok, notepad is the most popular editor but notepad2 is much cooler</title><link>http://blogs.msdn.com/vincem/archive/2004/11/24/269404.aspx</link><pubDate>Wed, 24 Nov 2004 19:24:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:269404</guid><dc:creator>vincem</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/vincem/comments/269404.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vincem/commentrss.aspx?PostID=269404</wfw:commentRss><description>&lt;p&gt;I think most developers and testers will admit that when they need a 'quick-edit' tool they use notepad. If you want to use a notepad that is on steroids try this one:&lt;/p&gt; &lt;p&gt;Tip of the day: If you save your file using "&amp;lt;filename&amp;gt; " notepad will NOT add the .txt extension to the end of the file. &lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;a href="http://www.flos-freeware.ch/notepad2.html"&gt;http://www.flos-freeware.ch/notepad2.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;I've set this as my default notepad (as should all build teams or add it to your common tools) courtesy of Roland's directions...&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;o:p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;a href="http://weblogs.asp.net/rweigelt/archive/2004/08/12/213085.aspx"&gt;http://weblogs.asp.net/rweigelt/archive/2004/08/12/213085.aspx&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Some (but not all listed)&amp;nbsp;features include....&lt;br /&gt;&lt;br /&gt;&amp;nbsp; - Customizable syntax highlighting:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - HTML, XML, CSS, JavaScript, VBScript, ASP, PHP, CSS, Perl/CGI&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - C/C++, C#, Java, VB, Pascal, Assembler, SQL, Python, NSIS&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - INI, REG, INF, BAT, DIFF&lt;br /&gt;&amp;nbsp; - Drag &amp;amp; drop text editing inside and outside Notepad2&lt;br /&gt;&amp;nbsp; - Basic regular expression search and replace&lt;br /&gt;&amp;nbsp; - Useful word, line and block editing shortcuts&lt;br /&gt;&amp;nbsp; - Rectangular selection (Alt+Mouse)&lt;br /&gt;&amp;nbsp; - Brace matching, auto indent, long line marker, zoom functions&lt;br /&gt;&amp;nbsp; - Support for Unicode, UTF-8, Unix and Mac text files&lt;br /&gt;&amp;nbsp; - Open shell links&lt;br /&gt;&amp;nbsp; - Mostly adjustable&lt;br /&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=269404" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vincem/archive/tags/Build+Topics/default.aspx">Build Topics</category></item><item><title>Stop the *Nightly Build* madness (but keep Daily Builds)</title><link>http://blogs.msdn.com/vincem/archive/2004/11/19/266527.aspx</link><pubDate>Fri, 19 Nov 2004 08:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:266527</guid><dc:creator>vincem</dc:creator><slash:comments>16</slash:comments><comments>http://blogs.msdn.com/vincem/comments/266527.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vincem/commentrss.aspx?PostID=266527</wfw:commentRss><description>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Arial"&gt;I think&amp;nbsp;it is pretty much common knowledge in the software world today that ‘Daily Builds’ are a good and necessary practice. I do not think that daily builds was that common a practice five years ago. I love this movement to building your product every day.&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Arial"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Arial"&gt;What I do not like is that some people (including some Microsofties) start their &lt;i&gt;daily&lt;/i&gt; builds at *&lt;b&gt;night&lt;/b&gt;* after everyone has gone home. I plead to all Microsoft writers to stop recommending that builds be run at night and instead recommend that automated tests run overnight. Builds should be run during the day – hence the name “Daily Builds’ - The main reason being that build breaks will be fixed a lot faster when people are in the office and not at home asleep. And sorry to break the news to you but build breaks will happen. It is just&amp;nbsp;a fact of life. No matter how good your software or build process is, you will have build breaks - except maybe in the Windows Main Lab builds but then that's another complex story. There are ways to minimize breaks and the impact but that'll have to be another blog entry.&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Arial"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Arial"&gt;Many years ago in the NT Build lab we tried the nightly or overnight builds thinking that we would save a lot of time utilizing the high-power machines at night. The reality was that someone (aka: hero) on the build team ended up coming in very early in the morning to fix a build break that happened at night. Our overnight build success rate was around 15% which is totally unacceptable in any group, especially the NT Group. What we ended up doing was spending the whole morning fixing the build break and then restarting the build. The whole overnight effort actually slowed us down rather than helped us because it promoted bad development behaviors (such as no one took the build serious since it failed most of the time). &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Arial"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Arial"&gt;When I was in the BackOffice team we went through the same mistake; just ask my wife, she loved it when I would get a phone call at 4 or 5 in the morning (from the Build Verification Team) that something was broke in the build and they needed help getting it fixed asap. To put an end to this madness we just switched to building during the day. Sometimes we would be at the office until 11pm getting that daily build out but at least we could sleep in (until 9am) the next day because everyone was able to pick up a solid build (from the day before).&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Arial"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Arial"&gt;Here is roughly how this would look on a Daily basis (and pretty much how many teams build at MS):&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Arial"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Arial"&gt;9-10am&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bug triage meetings (talk about check-ins that will be built today)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Arial"&gt;11-2pm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Check-in window open (only allow check-ins into main source line during this time)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Arial"&gt;2-5pm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Build product (times may vary)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Arial"&gt;5-6pm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Release product to test shares&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Arial"&gt;6pm-9am&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Run automated tests at night&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Arial"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Arial"&gt;As part of the daily build process, a regular build schedule should be published.&amp;nbsp; This should include the last check-in time, the time that the build will be completed, and the time that initial Build Verification Tests (BVT) tests will be completed. When any part of this process is broken, the person and module that broke the build should be published via build intranet page and/or e-mail.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Arial"&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Arial"&gt;If you need more details or examples, wait for my book &amp;lt;grin&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=266527" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vincem/archive/tags/Build+Topics/default.aspx">Build Topics</category></item><item><title>adding Korby's blog to my excellent list (for tons of VSTF info)</title><link>http://blogs.msdn.com/vincem/archive/2004/11/17/259056.aspx</link><pubDate>Wed, 17 Nov 2004 19:44:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:259056</guid><dc:creator>vincem</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/vincem/comments/259056.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vincem/commentrss.aspx?PostID=259056</wfw:commentRss><description>&lt;p&gt;&lt;font style="BACKGROUND-COLOR: #c0c0c0"&gt;&lt;A href="http://blogs.msdn.com/korbyp"&gt;Visual Studio Team Foundation (VSTF and some VSTS info)&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=259056" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vincem/archive/tags/Build+Topics/default.aspx">Build Topics</category></item><item><title>What build tools does Microsoft use?</title><link>http://blogs.msdn.com/vincem/archive/2004/11/16/258677.aspx</link><pubDate>Wed, 17 Nov 2004 05:25:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:258677</guid><dc:creator>vincem</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/vincem/comments/258677.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vincem/commentrss.aspx?PostID=258677</wfw:commentRss><description>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;This is the most common question I get when talking with customers. &lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;I think it is important to point out that Microsoft does not have specific rules that every product development team has to follow. Instead we have a lot of best practices or guidelines on what or how to run a product group. This is flexible by design - some processes or tools may work for some groups but can be a real hindrance to others. My observation has been that the Windows team tends to be the de facto leader when it comes to the best build tools and processes. Since each product is rather unique, there are some information exchanges on what works in the Windows team and then the questioning product team decides on what they can/will adopt to improve their processes. I guess the assumption is when a process works for a group with over 2000 developers (Windows), it is safe to assume that it will scale down just as effectively.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;So to answer the question, currently we use in-house developed tools with a movement of adopting the &lt;a href="http://lab.msdn.microsoft.com/vs2005/teamsystem/"&gt;VSTS tools&lt;/a&gt; (NOTE: some of the VSTS tools that will ship are what we have been using internally for years such as &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvsent/html/vsts-dev.asp"&gt;prefast&lt;/a&gt;)&amp;nbsp;that will be available when Whidbey (Visual Studio 2005)&amp;nbsp;ships (see Soma’s &lt;A href="http://blogs.msdn.com/somasegar/archive/2004/11/11/256210.aspx"&gt;blog&lt;/a&gt;). I do not think we have any statistics on&amp;nbsp;what percentage of developers use Visual Studio for their code editor but it has to be in the very high 90’s (I mean how can you beat VS’s intellisense and debugging!). For the build in the various build labs, &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ddtools/hh/ddtools/Build_Use__DDK_e953a56e-fc28-4166-9c7f-7af5842596ad.xml.asp"&gt;build.exe&lt;/a&gt; is very popular with &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnlong/html/msbuildpart1.asp"&gt;MSBuild.exe&lt;/a&gt; gaining some ground. Some groups use nmake and makefiles and some have developed their own wrappers for devenv (command-line tool for Visual Studio builds).&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;What should you be using?&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;I always tell my customers to adopt MSBuild asap. It is the future of builds at MS and a very powerful tool (see Alex’s &lt;A href="http://blogs.msdn.com/akipman"&gt;blog&lt;/a&gt;). &lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;If you insist on using devenv then you should use &lt;a href="http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=2CB20E79-D706-4706-9EA0-26188257EE7D"&gt;&lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:PersonName w:st="on"&gt;Andy Reeves&lt;/st1:PersonName&gt; wrapper&lt;/a&gt;. He is keeping the xml tags compatible with MSBuild’s so this is a nice transition tool if you are hesitant in using MSBuild. I have got a lot of good feedback on this tool.&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=258677" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vincem/archive/tags/Build+Topics/default.aspx">Build Topics</category></item><item><title>The Build Master Book - Microsoft's SCM Best Practices</title><link>http://blogs.msdn.com/vincem/archive/2004/11/12/256767.aspx</link><pubDate>Fri, 12 Nov 2004 22:27:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:256767</guid><dc:creator>vincem</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/vincem/comments/256767.aspx</comments><wfw:commentRss>http://blogs.msdn.com/vincem/commentrss.aspx?PostID=256767</wfw:commentRss><description>&lt;p&gt;&lt;font face="Arial"&gt;Well I know I've been lame about getting this blog started but I have been very pre-occupied with writing a build book - &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Arial"&gt;"The Build Master" will be complete at the end of January 2005 and be available from Addison-Wesley in March 2005.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Arial" color="#7fffd4"&gt;&lt;strong&gt;(IN MICROSOFT FASHION THE RELEASE HAS&amp;nbsp;SLIPPED TO JULY - edited post Feb 27, sorry)&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;p class="HE" style="MARGIN: 6pt 0in 0pt"&gt;&lt;em&gt;&lt;font face="Arial"&gt;Contents at a Glance:&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/em&gt;&lt;/p&gt; &lt;ul style="MARGIN-TOP: 0in" type="disc"&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; tab-stops: list .5in; mso-list: l0 level1 lfo1"&gt;&lt;span style="FONT-SIZE: 11pt"&gt;&lt;font face="Arial"&gt;Source Code Control – The “Golden” Rule.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt; &lt;ul style="MARGIN-TOP: 0in" type="circle"&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; tab-stops: list 1.0in; mso-list: l0 level2 lfo1"&gt;&lt;span style="FONT-SIZE: 11pt"&gt;&lt;font face="Arial"&gt;Since it seems that the build team on a project tends to live in the source code trees and are usually the administrators of the trees, I spend a chapter talking about the best way to configure your sources.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; tab-stops: list .5in; mso-list: l0 level1 lfo1"&gt;&lt;span style="FONT-SIZE: 11pt"&gt;&lt;font face="Arial"&gt;The Build Process – The Mission Critical Assembly Line.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt; &lt;ul style="MARGIN-TOP: 0in" type="circle"&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; tab-stops: list 1.0in; mso-list: l0 level2 lfo1"&gt;&lt;span style="FONT-SIZE: 11pt"&gt;&lt;font face="Arial"&gt;The heart and soul of this book. Nine chapters dedicated to covering, in detail, how to build your product. For a more in depth overview please read the book’s introduction.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; tab-stops: list .5in; mso-list: l0 level1 lfo1"&gt;&lt;span style="FONT-SIZE: 11pt"&gt;&lt;font face="Arial"&gt;Deployment/Release – Ship It!&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt; &lt;ul style="MARGIN-TOP: 0in" type="circle"&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; tab-stops: list 1.0in; mso-list: l0 level2 lfo1"&gt;&lt;span style="FONT-SIZE: 11pt"&gt;&lt;font face="Arial"&gt;This is another area that tends to spillover to the build team’s responsibilities that is covered in three chapters.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; tab-stops: list .5in; mso-list: l0 level1 lfo1"&gt;&lt;span style="FONT-SIZE: 11pt"&gt;&lt;font face="Arial"&gt;Sustained Engineering – The only sure things in life: “Death, Taxes, and Bugs.”&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt; &lt;ul style="MARGIN-TOP: 0in" type="circle"&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; tab-stops: list 1.0in; mso-list: l0 level2 lfo1"&gt;&lt;span style="FONT-SIZE: 11pt"&gt;&lt;font face="Arial"&gt;If you are struggling with your build process, this usually tends to be the first area that symptoms of a failing project start to show up. Most notably everyone on the project team is in ‘reactive mode’ instead of working on new features.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; tab-stops: list .5in; mso-list: l0 level1 lfo1"&gt;&lt;span style="FONT-SIZE: 11pt"&gt;&lt;font face="Arial"&gt;The Future – How to Get There from Here&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt; &lt;ul style="MARGIN-TOP: 0in" type="circle"&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; tab-stops: list 1.0in; mso-list: l0 level2 lfo1"&gt;&lt;span style="FONT-SIZE: 11pt"&gt;&lt;font face="Arial"&gt;I give some suggestions on how to influence upper management to make the correct tough decisions in your organization that help you do your job easier.&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt; &lt;li class="MsoNormal" style="MARGIN: 0in 0in 0pt; tab-stops: list 1.0in; mso-list: l0 level2 lfo1"&gt;&lt;span style="FONT-SIZE: 11pt"&gt;&lt;font face="Arial"&gt;If you are interested in the new tools that Microsoft will be releasing with the future release of Visual Studio, I touch on how to utilize those tools using the processes described in this book.&lt;/font&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; tab-stops: list 1.0in; mso-list: l0 level2 lfo1"&gt;&lt;span style="FONT-SIZE: 11pt"&gt;&lt;font face="Arial"&gt;This book will be based on the 15 years I've been at Microsoft and the various Software Configuration Management roles I've been in.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; tab-stops: list 1.0in; mso-list: l0 level2 lfo1"&gt;&lt;span style="FONT-SIZE: 11pt"&gt;&lt;font face="Arial"&gt;Although some of the examples in the book are with Microsoft tools and technologies, I have tried to write this book in a tool agnostic way. In other words, irregardless of the tools or platforms that you develop on, you will still be able to use these processes to ship your software very effectively.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; tab-stops: list 1.0in; mso-list: l0 level2 lfo1"&gt;&lt;span style="FONT-SIZE: 11pt"&gt;&lt;font face="Arial"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; tab-stops: list 1.0in; mso-list: l0 level2 lfo1"&gt;&lt;span style="FONT-SIZE: 11pt"&gt;&lt;font face="Arial"&gt;stay tuned for more...&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; tab-stops: list 1.0in; mso-list: l0 level2 lfo1"&gt;&lt;span style="FONT-SIZE: 11pt"&gt;&lt;font face="Arial"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt; &lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; tab-stops: list 1.0in; mso-list: l0 level2 lfo1"&gt;&lt;span style="FONT-SIZE: 11pt"&gt;&lt;font face="Arial"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=256767" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/vincem/archive/tags/Build+Topics/default.aspx">Build Topics</category></item></channel></rss>