File Annotation
Not logged in
cbc8983685 2008-10-06       drh: <nowiki>
cbc8983685 2008-10-06       drh: <h1 align="center">Questions And Criticisms</h1>
cbc8983685 2008-10-06       drh: 
cbc8983685 2008-10-06       drh: <p>This page is a collection of real questions and criticisms that have been
cbc8983685 2008-10-06       drh: raised against fossil together with responses from the program's author.</p>
cbc8983685 2008-10-06       drh: 
627de3bf16 2009-01-25       drh: <p>Note: See also the <a href="faq.wiki">Frequently Asked Questions</a>.</p>
7083eb1a1c 2008-11-20       drh: 
cbc8983685 2008-10-06       drh: <b>Fossil sounds like a lot of reinvention of the wheel.
cbc8983685 2008-10-06       drh: Why create your own DVCS when you could have reused mercurial?</b>
cbc8983685 2008-10-06       drh: 
cbc8983685 2008-10-06       drh: <blockquote>
5cbfe0cde2 2008-10-06       drh:   <p>I wrote fossil because none of the
cbc8983685 2008-10-06       drh:   other available DVCSes met my needs.  If the other DVCSes do
5cbfe0cde2 2008-10-06       drh:   meet your needs, then you might not need fossil.  But they
5cbfe0cde2 2008-10-06       drh:   don't meet mine, and so fossil is necessary for me.</p>
5cbfe0cde2 2008-10-06       drh: 
d0e8e88d54 2008-10-09       aku:   <p>Features provided by fossil that one does not get with other
5cbfe0cde2 2008-10-06       drh:   DVCSes include:</p>
cbc8983685 2008-10-06       drh: 
cbc8983685 2008-10-06       drh:   <ol>
cbc8983685 2008-10-06       drh:   <li> Integrated <a href="wikitheory.wiki">wiki</a>. </li>
cbc8983685 2008-10-06       drh:   <li> Integrated <a href="bugtheory.wiki">bug tracking</a> </li>
cbc8983685 2008-10-06       drh:   <li> Immutable artifacts </li>
7083eb1a1c 2008-11-20       drh:   <li> Self-contained, stand-alone executable that can be run in
7083eb1a1c 2008-11-20       drh:        a <a href="http://en.wikipedia.org/wiki/Chroot">chroot jail</a> </li>
d0e8e88d54 2008-10-09       aku:   <li> Simple, well-defined,
cbc8983685 2008-10-06       drh:        <a href="fileformat.wiki">enduring file format</a> </li>
cbc8983685 2008-10-06       drh:   </ol>
cbc8983685 2008-10-06       drh: </blockquote>
cbc8983685 2008-10-06       drh: 
cbc8983685 2008-10-06       drh: <b>Why should I use this rather than Trac?</b>
cbc8983685 2008-10-06       drh: 
cbc8983685 2008-10-06       drh: <blockquote>
cbc8983685 2008-10-06       drh:   <ol>
cbc8983685 2008-10-06       drh:   <li> Fossil is distributed.  You can view and/or edit tickets, wiki, and
cbc8983685 2008-10-06       drh:        code while off network, then sync your changes later.  With Trac, you
cbc8983685 2008-10-06       drh:        can only view and edit tickets and wiki while you are connected to
cbc8983685 2008-10-06       drh:        the server. </li>
cbc8983685 2008-10-06       drh:   <li> Fossil is lightweight and fully self-contained.  It is very easy
cbc8983685 2008-10-06       drh:        to setup on a low-resource machine. Fossil does not require an
cbc8983685 2008-10-06       drh:        administator.</li>
cbc8983685 2008-10-06       drh:   <li> Fossil integrates code versioning into the same repository with
cbc8983685 2008-10-06       drh:        wiki and tickets.  There is nothing extra to add or install.
cbc8983685 2008-10-06       drh:        Fossil is an all-in-one turnkey solution. </li>
cbc8983685 2008-10-06       drh:   </ol>
cbc8983685 2008-10-06       drh: </blockquote>
cbc8983685 2008-10-06       drh: 
cbc8983685 2008-10-06       drh: <b>Love the concept here. Anyone using this for real work yet?</b>
cbc8983685 2008-10-06       drh: 
cbc8983685 2008-10-06       drh: <blockquote>
cbc8983685 2008-10-06       drh: Fossil is <a href="http://www.fossil-scm.org/">self-hosting</a>.
cbc8983685 2008-10-06       drh: In fact, this page was probably delivered
cbc8983685 2008-10-06       drh: to your web-browser via a working fossil instance.  The same virtual
cbc8983685 2008-10-06       drh: machine that hosts http://www.fossil-scm.org/
cbc8983685 2008-10-06       drh: (a <a href="http://www.linode.com/">Linode 720</a>)
cbc8983685 2008-10-06       drh: also hosts 24 other fossil repositories for various small projects.
cbc8983685 2008-10-06       drh: The documentation files for
cbc8983685 2008-10-06       drh: <a href="http://www.sqlite.org/">SQLite</a> are hosted in a
cbc8983685 2008-10-06       drh: fossil repository <a href="http://www.sqlite.org/docsrc/">here</a>,
cbc8983685 2008-10-06       drh: for example.
cbc8983685 2008-10-06       drh: Other projects are also adopting fossil.  But fossil does not yet have
d0e8e88d54 2008-10-09       aku: the massive user base of git or mercurial.
cbc8983685 2008-10-06       drh: </blockquote>
cbc8983685 2008-10-06       drh: 
cbc8983685 2008-10-06       drh: <b>Fossil looks like the bug tracker that would be in your
cbc8983685 2008-10-06       drh: Linksys Router's administration screen.</p>
cbc8983685 2008-10-06       drh: 
cbc8983685 2008-10-06       drh: <blockquote>
4ef19b554a 2008-10-11       drh: <p>I take a pragmatic approach to software: form follows function.
4ef19b554a 2008-10-11       drh: To me, it is more important to have a reliable, fast, efficient,
cbc8983685 2008-10-06       drh: enduring, and simple DVCS than one that looks pretty.</p>
cbc8983685 2008-10-06       drh: 
cbc8983685 2008-10-06       drh: <p>On the other hand, if you have patches that improve the apparance
cbc8983685 2008-10-06       drh: of Fossil without seriously compromising its reliablity, performance,
4ef19b554a 2008-10-11       drh: and/or maintainability, I will be happy to accept them.  Fossil is
4ef19b554a 2008-10-11       drh: self-hosting.  Send email to request a password that will let
cbc8983685 2008-10-06       drh: you push to the main fossil repository.</p>
cbc8983685 2008-10-06       drh: </blockquote>
cbc8983685 2008-10-06       drh: 
cbc8983685 2008-10-06       drh: <b>It would be useful to have a separate application that
d0e8e88d54 2008-10-09       aku: keeps the bug-tracking database in a versioned file. That file can
cbc8983685 2008-10-06       drh: then be pushed and pulled along with the rest repository.</b>
cbc8983685 2008-10-06       drh: 
cbc8983685 2008-10-06       drh: <blockquote>
7083eb1a1c 2008-11-20       drh: <p>Fossil already <u>does</u> push and pull bugs along with the files
7083eb1a1c 2008-11-20       drh: in your repository.
7083eb1a1c 2008-11-20       drh: But fossil does <u>not</u> track bugs as files in the source tree.
7083eb1a1c 2008-11-20       drh: That approach to bug tracking was rejected for three reasons:</p>
7083eb1a1c 2008-11-20       drh: 
7083eb1a1c 2008-11-20       drh: <ol>
7083eb1a1c 2008-11-20       drh: <li>  Check-ins in fossil are immutable.  So if
7083eb1a1c 2008-11-20       drh:       tickets were part of the check-in, then there would be no way to add
7083eb1a1c 2008-11-20       drh:       new tickets to a check-in as new bugs are discovered.
7083eb1a1c 2008-11-20       drh: 
7083eb1a1c 2008-11-20       drh: <li>  Any project of reasonable size and complexity will generate thousands
7083eb1a1c 2008-11-20       drh:       and thousands of tickets, and we do not want all those ticket files
7083eb1a1c 2008-11-20       drh:       cluttering the source tree.
7083eb1a1c 2008-11-20       drh: 
7083eb1a1c 2008-11-20       drh: <li>  We want tickets to be managed from the web interface and to have a
7083eb1a1c 2008-11-20       drh:       permission system that is distinct from check-in permissions.
7083eb1a1c 2008-11-20       drh:       In other words, we do not want to restrict the creation and editing
7083eb1a1c 2008-11-20       drh:       of tickets to developers with check-in privileges and an installed
7083eb1a1c 2008-11-20       drh:       copy of the fossil executable.  Casual passers-by on the internet should
7083eb1a1c 2008-11-20       drh:       be permitted to create tickets.
7083eb1a1c 2008-11-20       drh: </ol>
7083eb1a1c 2008-11-20       drh: 
7083eb1a1c 2008-11-20       drh: <p>These points are reiterated in the opening paragraphs of
7083eb1a1c 2008-11-20       drh: the <a href="bugtheory.wiki">Bug-Tracking In Fossil</a> document.</p>
cbc8983685 2008-10-06       drh: </blockquote>
cbc8983685 2008-10-06       drh: 
cbc8983685 2008-10-06       drh: <b>Fossil is already the name of a plan9 versioned
cbc8983685 2008-10-06       drh: append-only filesystem.</b>
cbc8983685 2008-10-06       drh: 
cbc8983685 2008-10-06       drh: <blockquote>
5cbfe0cde2 2008-10-06       drh: I did not know that.  Perhaps they selected the name for the same reason that
cbc8983685 2008-10-06       drh: I did: because a repository with immutable artifacts preserves
d0e8e88d54 2008-10-09       aku: an excellent fossil record of a long-running project.
cbc8983685 2008-10-06       drh: </blockquote>
cbc8983685 2008-10-06       drh: 
cbc8983685 2008-10-06       drh: <b>The idea of storing a repository in a binary blob like an
cbc8983685 2008-10-06       drh: SQLite database terrifies me.</b>
cbc8983685 2008-10-06       drh: 
cbc8983685 2008-10-06       drh: <blockquote>
cbc8983685 2008-10-06       drh: The use of SQLite to store the database is likely more stable and secure
cbc8983685 2008-10-06       drh: than any other approach, due to the fact that SQLite is transactional.
cbc8983685 2008-10-06       drh: Fossil also implements several internal
cbc8983685 2008-10-06       drh: <a href="selfcheck.wiki">self-checks</a> to insure that no information
4ef19b554a 2008-10-11       drh: is ever lost.
cbc8983685 2008-10-06       drh: </blockquote>
cbc8983685 2008-10-06       drh: 
cbc8983685 2008-10-06       drh: 
cbc8983685 2008-10-06       drh: <b>I am dubious of the benefits of including wikis and bug trackers
cbc8983685 2008-10-06       drh: directly in the VCS - either they are under-featured compared to full
cbc8983685 2008-10-06       drh: software like Trac, or the VCS is massively bloated compared to
cbc8983685 2008-10-06       drh: Subversion or Bazaar.</b>
cbc8983685 2008-10-06       drh: 
cbc8983685 2008-10-06       drh: <blockquote>
cbc8983685 2008-10-06       drh: <p>I have no doubt that Trac has many features that fossil lacks.  But that
cbc8983685 2008-10-06       drh: is not the point.  Fossil has several key features that Trac lacks and that
4ef19b554a 2008-10-11       drh: I need:  most notably the fact that
cbc8983685 2008-10-06       drh: fossil supports disconnected operation.</p>
cbc8983685 2008-10-06       drh: 
5cbfe0cde2 2008-10-06       drh: <p>As for bloat:  Fossil is a single self-contained executable.
5cbfe0cde2 2008-10-06       drh: You do not need any other packages
5cbfe0cde2 2008-10-06       drh: (diff, patch, merge, cvs, svn, rcs, git, python, perl, tcl, apache,
5cbfe0cde2 2008-10-06       drh: sqlite, and so forth)
5cbfe0cde2 2008-10-06       drh: in order to run fossil.  Fossil runs just fine in a chroot jail all
5cbfe0cde2 2008-10-06       drh: by itself.  And the self-contained fossil
5cbfe0cde2 2008-10-06       drh: executable is much less than 1MB in size.
cbc8983685 2008-10-06       drh: Fossil is the very opposite of bloat.</p>
cbc8983685 2008-10-06       drh: </blockquote>
cbc8983685 2008-10-06       drh: 
cbc8983685 2008-10-06       drh: 
cbc8983685 2008-10-06       drh: </nowiki>