On 12/25/17, Shekhar Reddy <shekharreddy.k...@gmail.com> wrote:
>
> Is there any particular reason that the source is not moved to GitHub? I
> think that would reach more number of people there.
>

There is a mirror of the SQLite repository on GitHub at
https://github.com/mackyle/sqlite (maintained by GitHub user "mackyle"
whom I do not know, but whose efforts I do appreciate).

SQLite uses a different version control system called Fossil.  See
https://www.fossil-scm.org/ for more information about Fossil.  Fossil
is superior to Git+GitHub in many respects.  You can easily see this
by doing a side-by-side comparison of the SQLite Fossil repository
against the GitHub mirror.

For example, here is the GitHub view of the "dbpage" branch of SQLite:

     https://github.com/mackyle/sqlite/commits/dbpage

Compare the above against the equivalent Fossil view:

     https://www.sqlite.org/src/timeline?p=dfdebd12bfc80b91

The Fossil view clearly shows that the head of "dbpage" is the merger
of two other branches, and Fossil shows clearly where the branch
diverged from trunk.  That information is very difficult to discern
from the GitHub view.

Fossil also has the ability to show the complete context of an
individual branch.  For the "dbpage" branch, the context is shown
here:

     https://www.sqlite.org/src/timeline?r=dbpage

Note in particular that Fossil clearly shows that the "dbpage" branch
was ultimately merged back into trunk.  GitHub does not provide that
information, as far as I can tell.

The basic problem with Git (apart from its notoriously convoluted user
interface) is that it is based on a (bespoke) key/value database - the
"packfile".  Fossil, on the other hand, is based on the most widely
used relational database in the world.  This make information much
easier to extract from Fossil than from Git.  For example, given a
commit in Git (perhaps one reported by a customer or one found via
bisect) there is no easy way in Git to find out what comes next - what
commits were entered using your commit as a baseline.  Git shows
ancestors, but not descendants.  Fossil, on the other hand, easily
shows both descendants and ancestors of a check-in. You see this in
the "Context" section of any Fossil commit page, such as
https://www.sqlite.org/src/info/dfdebd12bfc80b91

The fact that Git/GitHub does not show the descendants of a commit is
a show-stopper for me.

Finally, the use of GitHub would create a reliance on an outside
company over which we have no influence.  The people who run GitHub
today seem like great folks.  But the company might be sold or fall
under new management tomorrow, and the friendly and open policies that
govern GitHub today might change in an instant.  Fossil, on the other
hand, is very simple to self-host on a $5/month VPS. (SQLite uses
https://www.linode.com/ for its main servers and
https://www.digitalocean.com for the https://www3.sqlite.org/ backup.
There are lots of others.)

So, given that Fossil is freer than Git (BSD vs. GPL), that Fossil
embodies all of the functionality of both Git and GitHub, that Fossil
is more capable than Git/GitHub, that Fossil has a friendly user
interface than Git, and that Fossil is very easy to self-host and thus
frees you of any dependencies on third-party companies, the question
becomes:

Why aren't you moving all of your GitHub projects over to Fossil!

-- 
D. Richard Hipp
d...@sqlite.org
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to