Fossil SCM

fossil-scm / www / qandc.wiki
Source Blame History 154 lines
26abbe3… andygoth 1 <title>Questions And Criticisms</title>
cbc8983… drh 2
1fd407f… wyoung 3 This page is a collection of real questions and criticisms that were
07605f3… drh 4 raised against Fossil early in its history (circa 2008).
07605f3… drh 5 This page is old and has not been kept up-to-date. See the
8a1ba49… wyoung 6 [/finfo?name=www/qandc.wiki|change history of this page].
cbc8983… drh 7
cbc8983… drh 8 <b>Fossil sounds like a lot of reinvention of the wheel.
cbc8983… drh 9 Why create your own DVCS when you could have reused mercurial?</b>
cbc8983… drh 10
8a1ba49… wyoung 11 <div class="indent">
1fd407f… wyoung 12 I wrote fossil because none of the
cbc8983… drh 13 other available DVCSes met my needs. If the other DVCSes do
5cbfe0c… drh 14 meet your needs, then you might not need fossil. But they
1fd407f… wyoung 15 don't meet mine, and so fossil is necessary for me.
cbc8983… drh 16
1fd407f… wyoung 17 Features provided by fossil that one does not get with other
1fd407f… wyoung 18 DVCSes include:
cbc8983… drh 19
cbc8983… drh 20 <ol>
cbc8983… drh 21 <li> Integrated <a href="wikitheory.wiki">wiki</a>. </li>
cbc8983… drh 22 <li> Integrated <a href="bugtheory.wiki">bug tracking</a> </li>
cbc8983… drh 23 <li> Immutable artifacts </li>
7083eb1… drh 24 <li> Self-contained, stand-alone executable that can be run in
7083eb1… drh 25 a <a href="http://en.wikipedia.org/wiki/Chroot">chroot jail</a> </li>
f47b705… jan.nijtmans 26 <li> Simple, well-defined,
cbc8983… drh 27 <a href="fileformat.wiki">enduring file format</a> </li>
6ba52ae… drh 28 <li> Integrated <a href="webui.wiki">web interface</a> </li>
cbc8983… drh 29 </ol>
8a1ba49… wyoung 30 </div>
cbc8983… drh 31
cbc8983… drh 32 <b>Why should I use this rather than Trac?</b>
cbc8983… drh 33
8a1ba49… wyoung 34 <div class="indent">
cbc8983… drh 35 <ol>
cbc8983… drh 36 <li> Fossil is distributed. You can view and/or edit tickets, wiki, and
cbc8983… drh 37 code while off network, then sync your changes later. With Trac, you
cbc8983… drh 38 can only view and edit tickets and wiki while you are connected to
cbc8983… drh 39 the server. </li>
f47b705… jan.nijtmans 40 <li> Fossil is lightweight and fully self-contained. It is very easy
cbc8983… drh 41 to setup on a low-resource machine. Fossil does not require an
b16b433… drh 42 administrator.</li>
cbc8983… drh 43 <li> Fossil integrates code versioning into the same repository with
cbc8983… drh 44 wiki and tickets. There is nothing extra to add or install.
cbc8983… drh 45 Fossil is an all-in-one turnkey solution. </li>
cbc8983… drh 46 </ol>
8a1ba49… wyoung 47 </div>
cbc8983… drh 48
cbc8983… drh 49 <b>Love the concept here. Anyone using this for real work yet?</b>
cbc8983… drh 50
8a1ba49… wyoung 51 <div class="indent">
143f1db… wyoung 52 Fossil is <a href="https://fossil-scm.org/">self-hosting</a>.
cbc8983… drh 53 In fact, this page was probably delivered
cbc8983… drh 54 to your web-browser via a working fossil instance. The same virtual
143f1db… wyoung 55 machine that hosts https://fossil-scm.org/
cbc8983… drh 56 (a <a href="http://www.linode.com/">Linode 720</a>)
cbc8983… drh 57 also hosts 24 other fossil repositories for various small projects.
f47b705… jan.nijtmans 58 The documentation files for
cbc8983… drh 59 <a href="http://www.sqlite.org/">SQLite</a> are hosted in a
cbc8983… drh 60 fossil repository <a href="http://www.sqlite.org/docsrc/">here</a>,
cbc8983… drh 61 for example.
cbc8983… drh 62 Other projects are also adopting fossil. But fossil does not yet have
d0e8e88… aku 63 the massive user base of git or mercurial.
8a1ba49… wyoung 64 </div>
4ef19b5… drh 65
f47b705… jan.nijtmans 66 <b>Fossil looks like the bug tracker that would be in your
e6c8df3… drh 67 Linksys Router's administration screen.</b>
4ef19b5… drh 68
8a1ba49… wyoung 69 <div class="indent">
1fd407f… wyoung 70 I take a pragmatic approach to software: form follows function.
4ef19b5… drh 71 To me, it is more important to have a reliable, fast, efficient,
1fd407f… wyoung 72 enduring, and simple DVCS than one that looks pretty.
4ef19b5… drh 73
1fd407f… wyoung 74 On the other hand, if you have patches that improve the appearance
b16b433… drh 75 of Fossil without seriously compromising its reliability, performance,
4ef19b5… drh 76 and/or maintainability, I will be happy to accept them. Fossil is
4ef19b5… drh 77 self-hosting. Send email to request a password that will let
1fd407f… wyoung 78 you push to the main fossil repository.
8a1ba49… wyoung 79 </div>
cbc8983… drh 80
cbc8983… drh 81 <b>It would be useful to have a separate application that
d0e8e88… aku 82 keeps the bug-tracking database in a versioned file. That file can
cbc8983… drh 83 then be pushed and pulled along with the rest repository.</b>
cbc8983… drh 84
8a1ba49… wyoung 85 <div class="indent">
1fd407f… wyoung 86 Fossil already <u>does</u> push and pull bugs along with the files
f47b705… jan.nijtmans 87 in your repository.
7083eb1… drh 88 But fossil does <u>not</u> track bugs as files in the source tree.
1fd407f… wyoung 89 That approach to bug tracking was rejected for three reasons:
7083eb1… drh 90
7083eb1… drh 91 <ol>
7083eb1… drh 92 <li> Check-ins in fossil are immutable. So if
7083eb1… drh 93 tickets were part of the check-in, then there would be no way to add
7083eb1… drh 94 new tickets to a check-in as new bugs are discovered.
7083eb1… drh 95
7083eb1… drh 96 <li> Any project of reasonable size and complexity will generate thousands
7083eb1… drh 97 and thousands of tickets, and we do not want all those ticket files
7083eb1… drh 98 cluttering the source tree.
7083eb1… drh 99
7083eb1… drh 100 <li> We want tickets to be managed from the web interface and to have a
7083eb1… drh 101 permission system that is distinct from check-in permissions.
7083eb1… drh 102 In other words, we do not want to restrict the creation and editing
7083eb1… drh 103 of tickets to developers with check-in privileges and an installed
7083eb1… drh 104 copy of the fossil executable. Casual passers-by on the internet should
7083eb1… drh 105 be permitted to create tickets.
7083eb1… drh 106 </ol>
7083eb1… drh 107
1fd407f… wyoung 108 These points are reiterated in the opening paragraphs of
1fd407f… wyoung 109 the <a href="bugtheory.wiki">Bug-Tracking In Fossil</a> document.
8a1ba49… wyoung 110 </div>
cbc8983… drh 111
f47b705… jan.nijtmans 112 <b>Fossil is already the name of a plan9 versioned
cbc8983… drh 113 append-only filesystem.</b>
cbc8983… drh 114
8a1ba49… wyoung 115 <div class="indent">
5cbfe0c… drh 116 I did not know that. Perhaps they selected the name for the same reason that
cbc8983… drh 117 I did: because a repository with immutable artifacts preserves
d0e8e88… aku 118 an excellent fossil record of a long-running project.
8a1ba49… wyoung 119 </div>
cbc8983… drh 120
cbc8983… drh 121 <b>The idea of storing a repository in a binary blob like an
cbc8983… drh 122 SQLite database terrifies me.</b>
cbc8983… drh 123
8a1ba49… wyoung 124 <div class="indent">
cbc8983… drh 125 The use of SQLite to store the database is likely more stable and secure
cbc8983… drh 126 than any other approach, due to the fact that SQLite is transactional.
cbc8983… drh 127 Fossil also implements several internal
cbc8983… drh 128 <a href="selfcheck.wiki">self-checks</a> to insure that no information
4ef19b5… drh 129 is ever lost.
8a1ba49… wyoung 130 </div>
cbc8983… drh 131
cbc8983… drh 132
cbc8983… drh 133 <b>I am dubious of the benefits of including wikis and bug trackers
cbc8983… drh 134 directly in the VCS - either they are under-featured compared to full
cbc8983… drh 135 software like Trac, or the VCS is massively bloated compared to
cbc8983… drh 136 Subversion or Bazaar.</b>
cbc8983… drh 137
8a1ba49… wyoung 138 <div class="indent">
1fd407f… wyoung 139 I have no doubt that Trac has many features that fossil lacks. But that
f47b705… jan.nijtmans 140 is not the point. Fossil has several key features that Trac lacks and that
f47b705… jan.nijtmans 141 I need: most notably the fact that
1fd407f… wyoung 142 fossil supports disconnected operation.
f47b705… jan.nijtmans 143
1fd407f… wyoung 144 As for bloat: Fossil is a single self-contained executable.
f47b705… jan.nijtmans 145 You do not need any other packages
f47b705… jan.nijtmans 146 (diff, patch, merge, cvs, svn, rcs, git, python, perl, tcl, apache,
c0654b1… brickviking 147 SQLite, and so forth)
5cbfe0c… drh 148 in order to run fossil. Fossil runs just fine in a chroot jail all
5cbfe0c… drh 149 by itself. And the self-contained fossil
ec1197c… drh 150 executable is much less than 1MB in size. (Update 2015-01-12: Fossil has
f47b705… jan.nijtmans 151 grown in the years since the previous sentence was written but is still
bc04f48… jan.nijtmans 152 much less than 2MB according to "size" when compiled using -Os on x64 Linux.)
1fd407f… wyoung 153 Fossil is the very opposite of bloat.
8a1ba49… wyoung 154 </div>

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button