<HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1252"> <META NAME="Generator" CONTENT="Microsoft Word 97"> <TITLE>SCM Tool Evaluation</TITLE> <META NAME="subject" CONTENT="Project Proposal"> <META NAME="keywords" CONTENT="Project Proposal Intranet"> <META NAME="DocTitle" CONTENT="SCM Toolset Evaluation"> <META NAME="SoftVer" CONTENT=" "> <META NAME="ReleaseDate" CONTENT="8/4/99"> <META NAME="RevisionADate" CONTENT="8/4/99"> <META NAME="Document Type" CONTENT="Project Proposal"> <META NAME="ClientName" CONTENT="Internal"> <META NAME="SoftName" CONTENT="Software Name"> <META NAME="Template" CONTENT="C:\Program Files\Microsoft Office\Office\html.dot"> </HEAD> <BODY LINK="#0000ff" VLINK="#800080"> <FONT FACE="Arial Black" SIZE=4><P><A NAME="_Toc458486266">Current Scenario</A></P> </FONT><FONT SIZE=2><P>ECD has reached a point where it must evaluate its current SCM needs. I have identified the following problems with the current SCM, Microsoft Visual SourceSafe (VSS): </P> <UL> <LI>VSS does not allow cross-platform development currently, developers who are developing in Linux have to reboot in Windows NT in order to access VSS to check in and out their changes. This is a big productivity hit and a major source of frustration. </LI> <LI>VSS does not handle branching or merging of files. This has required the manual creation and maintenance of multiple "versioned" source trees, which are essentially snapshots of the source tree at different points in time. This creates a lot of redundancy and defeats the purpose of a source code control system. If a fix is made in one branch but also needs to be propagated to other branches, it is up to the developer to remember to do so, which is error prone. VSS also does not provide an automated merge tool. There is also no good way to track branch and merge points. </LI> <LI>Currently there are a lot of inefficiencies because of the lack of communication, process and build automation. VSS does not facilitate build automation or the streamlining of processes. </LI> <LI>VSS does not provide the ability to dial up from home. </LI> <LI>VSS is known to corrupt archives from time to time. Dev just reported that if you edit a file with java extension in VSS, it actually corrupts some of the string values.</LI> <LI>VSS does not support atomic change transactions (i.e. submitting a group of files as a single logical transaction).</LI> <LI>VSS does not allow parallel development (for example, if a developer has one file locked, no one else can check that file out until he/she checks it back in). This is another big productivity hit. </LI> <LI>VSS has no web interface and has very limited reporting abilities. </LI> <LI>VSS is not true client/server (for example, the server does not know what files are on your client). </LI> <LI>VSS is just plain slow. Yet another hit to productivity.</LI></UL> <P> </P> <P> </P><DIR> </FONT><FONT FACE="Arial Black" SIZE=4><P><A NAME="_Toc458486267">Requirements</A></P> </FONT><FONT SIZE=2><P>The criteria listed below result from input by development, QA, production, and my impression to date of the development process at ECD. </P></DIR> <UL> <UL> <LI>Support for NT and Unix clients </LI> <LI>Ease of use </LI> <LI>Works out of a box </LI> <LI>Easy installation and short learning curve </LI> <LI>Client / server </LI> <LI>Fast transactions across a thin network </LI> <LI>Group work focused </LI> <LI>Dial-up from home </LI> <LI>Affordable </LI> <LI>Lightweight </LI> <LI>Integrated subcomponents </LI> <LI>Minimal maintenance overhead </LI> <LI>Minimal administration </LI> <LI>Reliability </LI> <LI>Flexibility</LI></UL> </UL> <DIR> <DIR> </FONT><B><DL> <DT>Source Code Control component</B> </DT></DIR> </DIR> <UL> <UL> <FONT SIZE=2><DT><LI>Ability to make temporal and contextual snapshots </LI></DT> <DT><LI>Ability to return to a snapshot </LI></DT> <DT><LI>Strong branching and merging support </LI></DT> <DT><LI>Visualization of structure & history </LI></DT> </DL> <LI>Atomic change transactions support, that is, submitting a group of files as a single logical transaction</LI></UL> </UL> </FONT><P> </P><DIR> <DIR> <B><DL> <DT>Build Management component</B> </DT></DIR> </DIR> <UL> <UL> <FONT SIZE=2><DT><LI>Cross-platform compilation support</LI></DT> <DT><LI>Customizable </LI></DT> <DT><LI>Compatible with our various development tools & third-party software </LI></DT> <DT><LI>Change notification via e-mail</LI></DT> </DL> <LI>Support for build automation </LI> <LI>Support for triggers and review daemons</LI></UL> </UL> <P> </P><DIR> </FONT><FONT FACE="Arial Black" SIZE=4><P><A NAME="_Toc458486269"><A NAME="_Toc417129524"><A NAME="_Toc417129456"><A NAME="_Toc417129427"><A NAME="_Toc417129398"><A NAME="_Toc417129352"><A NAME="_Toc416861246"><A NAME="_Toc416861220"><A NAME="_Toc416861178"><A NAME="_Toc415627278"><A NAME="_Toc415627244"><A NAME="_Toc415627175"><A NAME="_Toc415627135"><A NAME="_Toc415627082"><A NAME="_Toc415626827"><A NAME="_Toc415626797"><A NAME="_Toc415626770"><A NAME="_Toc415626745"><A NAME="_Toc414429511"><A NAME="_Toc414428872"><A NAME="_Toc414428846"><A NAME="_Toc414428666"><A NAME="_Toc414428162"><A NAME="_Toc414428121"><A NAME="_Toc414427991"><A NAME="_Toc414427249"><A NAME="_Toc414427210"><A NAME="_Toc414426773"><A NAME="_Toc414426711"><A NAME="_Toc414426655"><A NAME="_Toc414422772"><A NAME="_Toc414422654"><A NAME="_Toc414364315"><A NAME="_Toc414341647"><A NAME="_Toc414340102"><A NAME="_Toc414339139"><A NAME="_Toc414338988"><A NAME="_Toc414338475"><A NAME="_Toc414337224"><A NAME="_Toc414336431"><A NAME="_Toc414336233"><A NAME="_Toc414331006"><A NAME="_Toc414330640"><A NAME="_Toc406575482">Candidates</A></P> <P> </P> </FONT><FONT FACE="Arial Black"><P><A NAME="_Toc458486270">Microsoft Visual SourceSafe</A></P> </FONT><FONT SIZE=2><P>Visual SourceSafe is included as a baseline comparison from which to analyze the other candidates.</P><DIR> </FONT><B><P>Pro</P></DIR> </DIR> <UL> <UL> </B><FONT SIZE=2><LI>Already in use. No conversion costs.</LI></UL> </UL> <DIR> <DIR> </FONT><B><P>Con</P></DIR> </DIR> <UL> <UL> </B><FONT SIZE=2><LI>See "Current Scenario".</LI></UL> </UL> <DIR> <DIR> </FONT><H4>Costs</H4></DIR> </DIR> <P ALIGN="CENTER"><CENTER><TABLE BORDER CELLSPACING=2 CELLPADDING=7 WIDTH=451> <TR><TD WIDTH="37%" VALIGN="TOP" HEIGHT=34> <P ALIGN="CENTER"><B><FONT SIZE=2>Description</B></FONT></TD> <TD WIDTH="18%" VALIGN="TOP" HEIGHT=34> <B><FONT SIZE=2><P ALIGN="CENTER">Quantity</B></FONT></TD> <TD WIDTH="20%" VALIGN="TOP" HEIGHT=34> <B><FONT SIZE=2><P ALIGN="CENTER">License Unit Price</B></FONT></TD> <TD WIDTH="25%" VALIGN="TOP" HEIGHT=34> <B><FONT SIZE=2><P ALIGN="CENTER">Total Price</B></FONT></TD> </TR> <TR><TD WIDTH="37%" VALIGN="TOP"> <FONT SIZE=2><P>Visual SourceSafe License</FONT></TD> <TD WIDTH="18%" VALIGN="TOP"> <FONT SIZE=2><P ALIGN="RIGHT">50</FONT></TD> <TD WIDTH="20%" VALIGN="TOP"> <FONT SIZE=2><P ALIGN="RIGHT">$549</FONT></TD> <TD WIDTH="25%" VALIGN="TOP"> <FONT SIZE=2><P ALIGN="RIGHT">$27,450</FONT></TD> </TR> </TABLE> </CENTER></P> <B><FONT SIZE=2><P ALIGN="CENTER">Support:</B> Phone - $245 per incident or $1,225 per 5-pack</P><DIR> <DIR> <DIR> <DIR> <DIR> <DIR> <B><P>		 </B>Web - $195 per incident or $975 per 5-pack</P><DIR> <DIR> <B><P> Training:	</B>Not available</P></DIR> </DIR> </DIR> </DIR> </DIR> <P> </P></DIR> </DIR> </DIR> </FONT><FONT FACE="Arial Black"><P><A NAME="_Toc458486271"> CVS</A></P><DIR> <DIR> </FONT><B><P>Pro</P></DIR> </DIR> <UL> <UL> </B><FONT SIZE=2><LI>Its free </LI> <LI>Provides source</LI></UL> </UL> <DIR> <DIR> </FONT><B><P>Con</P></DIR> </DIR> <UL> <UL> </B><FONT SIZE=2><LI>Not targeted at a distributed environment </LI> <LI>Supports only a few platforms </LI> <LI>Requires a lot of customization, and therefore resources. Does not work out of a box. </LI> <LI>Limited functionality </LI> <LI>Does not support atomic changes</LI></UL> </UL> <DIR> <DIR> <DIR> </FONT><FONT FACE="Arial Black"><P><A NAME="_Toc458486272"></P></DIR> </DIR> </DIR> <P>Rational</A> ClearCase</A></P><DIR> <DIR> </FONT><H4>Pro</H4></DIR> </DIR> <UL> <UL> <FONT SIZE=2><LI>Powerful </LI> <LI>Decent GUI </LI> <LI>Strongly integrated revision/build system </LI></UL> </UL> </FONT><H4> </H4><DIR> <DIR> <H4>Con</H4></DIR> </DIR> <UL> <UL> <FONT SIZE=2><LI>Tied to OS version </LI> <LI>Very expensive </LI> <LI>Does not support atomic changes </LI> <LI>Supports only a few platforms </LI> <LI>Requires fast, low-latency NFS implementation </LI> <LI>Requires users to be connected to network to do any work. If network goes down, all builds stop. </LI> <LI>Requires a lot of resources: full-time administrator, dedicated server, 1 full-time source management person for every 8-9 developers, lots of customization required</LI></UL> </UL> </FONT><H4> </H4><DIR> <DIR> <H4>Costs</H4><DIR> <FONT SIZE=2><P>Talked to sales rep Drake Dunlap. Got these prices: </P></DIR> </DIR> </DIR> </FONT> <P ALIGN="RIGHT"><TABLE BORDER CELLSPACING=2 CELLPADDING=7 WIDTH=540> <TR><TD WIDTH="23%" VALIGN="TOP"> <P ALIGN="CENTER"><B><FONT SIZE=2>Description</B></FONT></TD> <TD WIDTH="12%" VALIGN="TOP"> <B><FONT SIZE=2><P ALIGN="CENTER">Quantity</B></FONT></TD> <TD WIDTH="16%" VALIGN="TOP"> <B><FONT SIZE=2><P ALIGN="CENTER">License Unit Price</B></FONT></TD> <TD WIDTH="17%" VALIGN="TOP"> <B><FONT SIZE=2><P ALIGN="CENTER">Support Unit Price</B></FONT></TD> <TD WIDTH="16%" VALIGN="TOP"> <B><FONT SIZE=2><P ALIGN="CENTER">Total Unit Price</B></FONT></TD> <TD WIDTH="16%" VALIGN="TOP"> <B><FONT SIZE=2><P ALIGN="CENTER">Total <BR> Price</B></FONT></TD> </TR> <TR><TD WIDTH="23%" VALIGN="TOP"> <FONT SIZE=2><P>ClearCase Floating License</FONT></TD> <TD WIDTH="12%" VALIGN="TOP"> <FONT SIZE=2><P ALIGN="RIGHT">50</FONT></TD> <TD WIDTH="16%" VALIGN="TOP"> <FONT SIZE=2><P ALIGN="RIGHT">$3000</FONT></TD> <TD WIDTH="17%" VALIGN="TOP"> <FONT SIZE=2><P ALIGN="RIGHT">$600</FONT></TD> <TD WIDTH="16%" VALIGN="TOP"> <FONT SIZE=2><P ALIGN="RIGHT">$3600</FONT></TD> <TD WIDTH="16%" VALIGN="TOP"> <FONT SIZE=2><P ALIGN="RIGHT">$180,000</FONT></TD> </TR> <TR><TD WIDTH="23%" VALIGN="TOP"> <P> </TD> <TD WIDTH="12%" VALIGN="TOP"> <P> </TD> <TD WIDTH="16%" VALIGN="TOP"> <P> </TD> <TD WIDTH="17%" VALIGN="TOP"> <P> </TD> <TD WIDTH="16%" VALIGN="TOP"> <B><FONT SIZE=2><P ALIGN="RIGHT">*Discount:</B></FONT></TD> <TD WIDTH="16%" VALIGN="TOP"> <FONT SIZE=2><P ALIGN="RIGHT">($21,000)</FONT></TD> </TR> <TR><TD WIDTH="23%" VALIGN="TOP"> <P> </TD> <TD WIDTH="12%" VALIGN="TOP"> <P> </TD> <TD WIDTH="16%" VALIGN="TOP"> <P> </TD> <TD WIDTH="17%" VALIGN="TOP"> <P> </TD> <TD WIDTH="16%" VALIGN="TOP"> <B><FONT SIZE=2><P ALIGN="RIGHT">Total:</B></FONT></TD> <TD WIDTH="16%" VALIGN="TOP"> <FONT SIZE=2><P ALIGN="RIGHT">$159,000</FONT></TD> </TR> <TR><TD WIDTH="23%" VALIGN="TOP"> <FONT SIZE=2><P>Yearly support after first year</FONT></TD> <TD WIDTH="12%" VALIGN="TOP"> <FONT SIZE=2><P ALIGN="RIGHT">50</FONT></TD> <TD WIDTH="16%" VALIGN="TOP"> <P> </TD> <TD WIDTH="17%" VALIGN="TOP"> <FONT SIZE=2><P ALIGN="RIGHT">$600</FONT></TD> <TD WIDTH="16%" VALIGN="TOP"> <P> </TD> <TD WIDTH="16%" VALIGN="TOP"> <FONT SIZE=2><P ALIGN="RIGHT">$30,000</FONT></TD> </TR> </TABLE> </P> <DIR> <DIR> <DIR> <FONT SIZE=2><P ALIGN="RIGHT">* Drake explained that we get discounts of 5%, 10% then 14% at license totals of $20,000, $50,000 and $100,000 respectively. In our case our license total would be $150,000, so our discount would be $21,000. </P> </FONT><H5>Rational Training</H5> <FONT SIZE=2><P>"Rational University" is Rational's training solution. They appear to have a </FONT><A HREF="http://www.rational.com/university/schedule/index.jtmpl"><FONT SIZE=2>complete set of courses</FONT></A><FONT SIZE=2>. The pricing is $995 per student.</P> </FONT><FONT FACE="Arial Black"><P><A NAME="_Toc458486273"></P></DIR> </DIR> </DIR> <P>Perforce</A></P><DIR> <DIR> </FONT><H4>Pro</H4></DIR> </DIR> <UL> <UL> <FONT SIZE=2><LI>Powerful </LI> <LI>Fast </LI> <LI>Supports a multitude of platforms (see: </FONT><A HREF="http://www.perforce.com/perforce/loadprog.html"><FONT SIZE=2>http://www.perforce.com/perforce/loadprog.html#plats</FONT></A><FONT SIZE=2>) </LI> <LI>Short learning curve </LI> <LI>Easy to use </LI> <LI>Easy installation </LI> <LI>Minimal administration and maintenance </LI> <LI>Integrated defect-tracking system </LI> <LI>Joan is an experienced user </LI> <LI>Decent GUI </LI> <LI>Atomic changes </LI> <LI>Good branching model </LI></UL> </UL> </FONT><H4> </H4><DIR> <DIR> <H4>Con</H4></DIR> </DIR> <UL> <UL> <FONT SIZE=2><LI>Build system is not integrated </LI></UL> </UL> </FONT><H4> </H4><DIR> <DIR> <H4>Costs</H4></DIR> </DIR> <P ALIGN="RIGHT"><TABLE BORDER CELLSPACING=2 CELLPADDING=7 WIDTH=516> <TR><TD WIDTH="26%" VALIGN="TOP"> <P ALIGN="CENTER"><B><FONT SIZE=2>Description</B></FONT></TD> <TD WIDTH="13%" VALIGN="TOP"> <B><FONT SIZE=2><P ALIGN="CENTER">Quantity</B></FONT></TD> <TD WIDTH="17%" VALIGN="TOP"> <B><FONT SIZE=2><P ALIGN="CENTER">License Unit Price</B></FONT></TD> <TD WIDTH="21%" VALIGN="TOP"> <B><FONT SIZE=2><P ALIGN="CENTER">Support Unit Price</B></FONT></TD> <TD WIDTH="23%" VALIGN="TOP"> <B><FONT SIZE=2><P ALIGN="CENTER">Total <BR> Price</B></FONT></TD> </TR> <TR><TD WIDTH="26%" VALIGN="TOP"> <FONT SIZE=2><P>Perforce per-user license </FONT></TD> <TD WIDTH="13%" VALIGN="TOP"> <FONT SIZE=2><P ALIGN="RIGHT">50</FONT></TD> <TD WIDTH="17%" VALIGN="TOP"> <FONT SIZE=2><P ALIGN="RIGHT">$550</FONT></TD> <TD WIDTH="21%" VALIGN="TOP"> <FONT SIZE=2><P ALIGN="RIGHT">First year free</FONT></TD> <TD WIDTH="23%" VALIGN="TOP"> <FONT SIZE=2><P ALIGN="RIGHT">$27,500</FONT></TD> </TR> <TR><TD WIDTH="26%" VALIGN="TOP"> <FONT SIZE=2><P>Support/Upgrades Per Subsequent Year </FONT></TD> <TD WIDTH="13%" VALIGN="TOP"> <FONT SIZE=2><P ALIGN="RIGHT">50</FONT></TD> <TD WIDTH="17%" VALIGN="TOP"> <P> </TD> <TD WIDTH="21%" VALIGN="TOP"> <FONT SIZE=2><P ALIGN="RIGHT">$120</FONT></TD> <TD WIDTH="23%" VALIGN="TOP"> <FONT SIZE=2><P ALIGN="RIGHT">$6,000</FONT></TD> </TR> </TABLE> </P> <FONT SIZE=2><P ALIGN="RIGHT"> </P><DIR> <DIR> <DIR> <DIR> <DIR> <DIR> <DIR> <DIR> <DIR> <DIR> </FONT><H5>Perforce Training</H5> <FONT SIZE=2><P>Perforce offers an 'in-depth' three-day training class at a site in San Francisco or at our site for $1200, limited to 10 attendees. I can do a basic training class in half a day to get folks up to speed.</P></DIR> </DIR> </DIR> </DIR> </DIR> </DIR> </DIR> <P> </P></DIR> </DIR> </FONT><FONT FACE="Arial Black" SIZE=4><P><A NAME="_Toc458486274">Budget and Risk Analysis</A></P><DIR> </FONT><FONT FACE="Arial"><H4>Money</H4> </FONT><FONT SIZE=2><P>These are the price breakdown of each of the four toolsets. ClearCase will require extra hardware (servers, disks etc.). Perforce is already set up on an existing Linux machine, Madre, which is sufficient to get us started, but we should have an independent server when we go live (see Section 6). CVS will require a lot of customization and hence resources.</P></DIR> </DIR> </FONT> <P ALIGN="CENTER"><CENTER><TABLE BORDER CELLSPACING=2 CELLPADDING=7 WIDTH=336> <TR><TD WIDTH="50%" VALIGN="TOP"> <P ALIGN="CENTER"><B><FONT SIZE=2>Vendor</B></FONT></TD> <TD WIDTH="50%" VALIGN="TOP"> <B><FONT SIZE=2><P ALIGN="CENTER">Cost</B></FONT></TD> </TR> <TR><TD WIDTH="50%" VALIGN="TOP"> <FONT SIZE=2><P>Rational ClearCase</FONT></TD> <TD WIDTH="50%" VALIGN="TOP"> <FONT SIZE=2><P ALIGN="RIGHT">$159,000 + server cost</FONT></TD> </TR> <TR><TD WIDTH="50%" VALIGN="TOP"> <FONT SIZE=2><P>Perforce</FONT></TD> <TD WIDTH="50%" VALIGN="TOP"> <FONT SIZE=2><P ALIGN="RIGHT">$27,500 + server cost</FONT></TD> </TR> <TR><TD WIDTH="50%" VALIGN="TOP"> <FONT SIZE=2><P>Visual SourceSafe</FONT></TD> <TD WIDTH="50%" VALIGN="TOP"> <FONT SIZE=2><P ALIGN="RIGHT">$27,450</FONT></TD> </TR> <TR><TD WIDTH="50%" VALIGN="TOP"> <FONT SIZE=2><P>CVS</FONT></TD> <TD WIDTH="50%" VALIGN="TOP"> <FONT SIZE=2><P ALIGN="RIGHT">$?? customization required</FONT></TD> </TR> </TABLE> </CENTER></P> <DIR> <DIR> <FONT SIZE=2><P ALIGN="CENTER"> </P> </FONT><FONT FACE="Arial"><H4>Risk</H4> </FONT><FONT SIZE=2><P>The risks of staying with the status quo are described in "Current Scenario". The main risk of going to a new SCM tool is the initial learning curve, which may initially affect productivity, but will reap long-term gains in productivity and efficiency.</P> </FONT><FONT FACE="Arial"><H4> </H4> <H4>Conversion</H4> </FONT><FONT SIZE=2><P>Perforce provides a set of Perl scripts (available as a </FONT><A HREF="ftp://ftp.perforce.com/pub/perforce/r99.1/tools/convert/vss/vsstop4.zip"><FONT SIZE=2>ZIP file</FONT></A><FONT SIZE=2>) for converting VSS archives to Perforce, preserving the original times and authors. Branches are translated verbatim; individual file revisions are grouped as much as possible into Perforce's notion of atomic changes. </P> <P> </P></DIR> </FONT><FONT FACE="Arial Black" SIZE=4><P><A NAME="_Toc458486275">Recommendation</A></P> </FONT><FONT SIZE=2><P>I propose that we standardize on Perforce as our new SCM tool. The main reasons are speed - both across a thin network and operationally, price, ease of use and quality of implementation. </P> <P>Training with Perforce will cost less, because I will do internal training as needed.</P> <P>The SCM server should be independent, so that it operates as fast as possible and is exposed to as little risk of failure as possible. Running Madre (a Linux box) with a mirrored disk system and nightly backups would be highly reliable and fault-tolerant.</P> <P></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></A></P></DIR> </FONT></BODY> </HTML>