1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns=
"http://www.w3.org/1999/xhtml">
5 <style type=
"text/css"> /* <![CDATA[ */
6 @import
"branding/css/tigris.css";
7 @import
"branding/css/inst.css";
9 <link rel=
"stylesheet" type=
"text/css" media=
"print"
10 href=
"branding/css/print.css"/>
11 <script type=
"text/javascript" src=
"branding/scripts/tigris.js"></script>
12 <title>Debunking BitMover's Subversion Comparison
</title>
18 <h2>Debunking BitMover's Subversion Comparison
</h2>
22 <p>BitMover, Inc. offers a comparison between BitKeeper (their main
23 product) and Subversion, at
</p>
26 <p><a href=
"http://www.bitkeeper.com/Comparisons.Subversion.html"
27 >http://www.bitkeeper.com/Comparisons.Subversion.html
</a></p>
30 <p>BitMover's comparison contains various false statements about
31 Subversion, and some misleading statements. Below, we analyze
32 BitMover's page and set the record straight about Subversion. The
33 entire relevant content of the BitMover page is quoted below, as it
34 looked on
2 July
2004. We've omitted only extraneous things like
35 navigation links and the endorsement quote at the top of the
38 <p>Please note that this response is strictly about Subversion. We
39 have no complaints about BitKeeper as a piece of software; we've heard
40 mainly good things about it, though we can't try it ourselves because
41 of its
<a href=
"#licensing">license situation
</a>.
</p>
43 <p>BitMover's text below is quoted in red italics where we feel it's
44 in error, and green italics otherwise. Our annotations are in regular
50 <p style=
"color: red"><i>Subversion is a new system
51 which is supposed to replace CVS. Unfortunately, Subversion shares
52 many of CVS' problems and introduced some of its own
56 <!-- Commenting out this minor complaint for now:
58 <p>I like how they subtly imply that Subversion <i>only</i> adds new
59 problems on top of CVS's, without solving any problems. It solved
60 many, of course, and while this quote doesn't explicitly deny that,
61 it's worded in a very misleading way.</p>
63 <p>Moving on to more substantive stuff:</p>
68 <p style=
"color: red"><i>Subversion uses a binary file format for
69 your revision control data and metadata and if that format gets
70 corrupted you are out of luck, your whole team comes to a
74 <p>That bit about the binary format is classic
<a
75 href=
"http://www.catb.org/~esr/jargon/html/F/FUD.html">FUD
</a>. It's
76 quite true that Subversion uses a binary file format, but think about
77 it: BitMover is basically saying that databases are a bad idea, since
78 virtually all modern databases use a binary format. Sure, if anything
79 happens to those files, you're out of luck, assuming you have no
80 backup. So, does this mean no one should ever use a database?
</p>
82 <p>Anyone who runs, say, Oracle, MySQL, Postgres, or another database
83 system should be able to see the silliness here right away.
84 Furthermore, it's clearly the case that if BitKeeper's data storage
85 format got corrupted severely enough, your whole team would come to a
86 halt too, at least for as long as it took to get everything fixed,
87 restored from backup, whatever. Not so different from Subversion,
90 <p>There are database management issues to administering a Subversion
91 repository, of course, issues which CVS does not have. If this is
92 BitMover's complaint, then they should say so, rather than making a
93 meaninglessly broad generalization. (Note that Subversion now offers
94 a non-database back end, for those who don't want the overhead of
95 administering a database. This is a fairly recent development, and
96 it's likely that BitMover simply hadn't heard about it yet when they
97 wrote their page.)
</p>
100 <p style=
"color: green"><i>Subversion has a single repository model,
101 i.e., client/server. Each work area is clear text only which means
102 no revision control in the work area during
106 <p>This is basically true, though note that this way seems to work
107 fine for a lot of people. Strictly speaking, Subversion has exactly
108 one level of revision control in the working copy, since there are
109 pristine base texts of every file present. One can locally view one's
110 changes, revert them, or save them and then revert, all without a
111 network connection.
</p>
114 <p style=
"color: red"><i>No staging areas to protect the main source
115 tree. With Subversion, everyone checks into the same place and if
116 someone breaks the tree, it's broken for everyone. With BitKeeper,
117 you can put a staging area between each group of developers and the
118 main integration tree, thereby protecting the main tree from bad
119 checkins. Anyone who has lived through a change that broke the
120 build can see the value of staging areas.
</i></p>
123 <p>False and FUD.
</p>
125 <p>Having a staging area is a matter of how the project organizes its
126 repository and moderates its commits. The fact that some projects
127 choose to use their main development trunk
<i>as
</i> their staging
128 area, and release from branches, is a matter of policy, not of
129 technical limitations. If you want to insert an extra level of
130 staging area, Subversion supports that just fine.
</p>
132 <p>Now, there might be a kernel of a real complaint here, which is
133 that Subversion doesn't have first-class changeset swapping, and
134 therefore merges from one branch to another (say, from staging to
135 live) don't preserve as much history as they could. However,
136 BitMover's text goes far beyond that simple, circumscribed complaint.
137 And since they make the merge complaint separately later anyway, they
138 either thought they were saying something different here, or they're
139 making the same claim twice, for the sake of inflating their page.
</p>
142 <p style=
"color: green"><i>Subversion loses information every time
143 there is parallel development because you are forced to merge
144 before you check in if someone else checked in first. The state of
145 your workspace before the merge is lost forever. Another way to say
146 this is that if there is N-way parallel development, Subversion
147 loses N-
1 events.
</i></p>
150 <p>As worded, this is not quite true. But probably what they meant to
151 say was
"you are forced to merge before you check in if someone else
152 checked in changes <i>to the same files</i> first." Then it would be
155 <p>So how important is it? It depends whom you ask. BitMover
156 probably has in mind the
"star merge" work style that has developed in
157 the Linux family of OSs, where there is never any expectation that all
158 workspaces will converge onto a single canonical form. It's not about
159 how far behind you are, but about how different you wish to remain;
160 less about merging than about cherry-picking. There are Subversion
161 users who ask for this. We usually point them to
<a
162 href=
"http://svk.elixus.org/">SVK
</a>, which is based on Subversion
163 and supports this style of development, or to
<a
164 href=
"http://www.gnuarch.org/">Arch
</a>, an open-source revision
165 control system unrelated to Subversion. But some others do not find
166 this a compelling feature; see
<a
167 href=
"http://web.mit.edu/ghudson/thoughts/bitkeeper.whynot" >Greg
168 Hudson's explanation
</a> why not.
</p>
171 <p style=
"color: green"><i>Merging in Subversion is no better than
172 CVS, i.e., primitive at best.
</i></p>
175 <p>This is basically true. Subversion's merging
<i>interface
</i> is
176 better than CVS's, but the underlying operation leads to the same
177 result as in CVS. Better merge support is on Subversion's long-term
181 <p style=
"color: red"><i>Branch management in Subversion is a
185 <p>This is false, at least insofar as it means anything at all.
186 Without more technical substance to respond to, it's hard to know what
187 to do with such a claim; they don't say anything more concrete than
188 "nightmare", unfortunately.
</p>
190 <p>Branch management is actually one of Subversion's strengths. In
191 Subversion, branches are first class, versioned objects, just like
192 regular paths. They can be copied, renamed, deleted, and
193 resurrected
— and people do these things all the time.
194 Perhaps BitMover was really talking about merging? But again, they
195 make the merging complaint elsewhere, so this item must presumably be
196 about something else.
</p>
199 <p style=
"color: red"><i>Subversion has no integrity checker which
200 means files can be silently corrupted and you will never know until
201 you try and roll backwards.
</i></p>
204 <p>False. Subversion ships with an integrity checker
205 (
<tt>svnadmin
verify
</tt>). It also attaches a checksum to every
206 revision of every file. It verifies these checksums automatically at
207 every opportunity where it wouldn't have a serious impact on
208 performance; furthermore, it offers you the ability to paranoidly
209 check integrity even
<i>more
</i> often, if you want to, via the
210 abovementioned command. So we really don't know what they're trying
214 <p style=
"color: red"><i>Subversion has only weak rename support,
215 that's something that is inherent in all centralized
219 <p>It's true that Subversion has weak rename support (work is under
220 way to fix this). We don't see any reason why this is inherent in
221 centralized systems, or even why it has anything to do with
222 centralization or lack of same. It sounds as if BitMover is trying to
223 imply that Subversion, due to its design, simply
<i>can't
</i> have
224 good rename support. That's the more serious charge here, and we
225 believe it's totally bogus.
</p>
229 <p>What's really going on is that BitKeeper has just one or two solid
230 complaints to make:
"Subversion has only primitive merge capability",
231 and possibly
"Subversion doesn't do decentralized versioning."</p>
233 <p>While these are true, it seems like BitMover is attempting to say
234 each one multiple times, to have a longer itemized list of
235 deficiencies in Subversion. If we ever write up our own comparison
236 between Subversion and BitKeeper, we'll avoid that sort of inflation.
237 Unfortunately, we can't easily make such a comparison, because
238 BitMover, Inc changed its license to prevent free software developers
239 who work on competing products (such as Subversion) from using
242 <a name=
"licensing"></a>
243 <h3>BitKeeper's Licensing Situation:
</h3>
245 <p>Before they changed their license, anyone could use BitKeeper for a
246 free software project (with a few minor caveats). Although BitKeeper
247 was not
"free" or
"open source" in any important sense, since BitMover
248 still retained strong intellectual property rights over the code, it
249 did mean that free software developers could try it out and learn from
252 <p>Then BitMover added a clause to their license, ending this
253 availability for Subversion developers and others:
</p>
256 (d) Notwithstanding any other terms in this License, this
257 License is not available to You if You and/or your
258 employer develop, produce, sell, and/or resell a
259 product which contains substantially similar capabil-
260 ities of the BitKeeper Software, or, in the reason-
261 able opinion of BitMover, competes with the BitKeeper
265 <p>(We'd include a reference to the full license here, but it appears
266 one must fill out a download form even to get to the license's
267 <i>text
</i>, and that's a little more trouble than we're willing to go
270 <p>Larry McVoy, founder of BitMover,
<a
271 href=
"http://marc.theaimsgroup.com/?l=linux-kernel&m=103384262016750&w=2"
272 >confirmed
</a> that the new clause prohibits Subversion developers
273 from trying BitKeeper at no charge. Of course, Subversion developers
274 are free to purchase a license, but that is not a realistic option for
277 You can read more about the BitKeeper license controversy at these links:
280 <li><a href=
"http://www.oreillynet.com/pub/wlg/2107"
281 >http://www.oreillynet.com/pub/wlg/
2107</a>
283 <li><a href=
"http://better-scm.berlios.de/bk/bk_suitability.html"
284 >http://better-scm.berlios.de/bk/bk_suitability.html
</a>
286 <li><a href=
"http://better-scm.berlios.de/bk/relicensing_bk.html"
287 >http://better-scm.berlios.de/bk/relicensing_bk.html
</a>
291 <p>This is why we cannot make our own page comparing Subversion and
292 BitKeeper. Of course, BitMover employees are free to download and
293 install Subversion any time, and we encourage them to do so.
</p>