|
1
|
# The History And Purpose Of Fossil |
|
2
|
|
|
3
|
Fossil is a [distributed version control system (DVCS)][100] written |
|
4
|
beginning in [2007][105] by the [architect of SQLite][110] for the |
|
5
|
purpose of managing the [SQLite project][115]. |
|
6
|
|
|
7
|
[100]: https://en.wikipedia.org/wiki/Distributed_version_control |
|
8
|
[105]: /timeline?a=1970-01-01&n1=10 |
|
9
|
[110]: https://sqlite.org/crew.html |
|
10
|
[115]: https://sqlite.org/ |
|
11
|
|
|
12
|
Though Fossil was originally written specifically to support SQLite, |
|
13
|
it is now also used by countless other projects. The SQLite architect (drh) |
|
14
|
is still the top committer to Fossil, but there are also |
|
15
|
[many other contributors][120]. |
|
16
|
|
|
17
|
[120]: /reports?type=ci&view=byuser |
|
18
|
|
|
19
|
## History |
|
20
|
|
|
21
|
The SQLite project started out using [CVS][300], as CVS was the most |
|
22
|
commonly used version control system in thant era (circa 2000). CVS |
|
23
|
was an amazing version control system for its day in that it allowed |
|
24
|
multiple developers to be editing the same file at the same time. |
|
25
|
|
|
26
|
[300]: https://en.wikipedia.org/wiki/Concurrent_Versions_System |
|
27
|
|
|
28
|
Though innovative and much loved in its time, CVS was not without problems. |
|
29
|
Among those was a lack of visibility into the project history and the |
|
30
|
lack of integrated bug tracking. To address these deficiencies, |
|
31
|
the SQLite author developed the [CVSTrac][305] wrapper for CVS beginning |
|
32
|
in [2002][310]. |
|
33
|
|
|
34
|
[305]: http://cvstrac.org/ |
|
35
|
[310]: http://cvstrac.org/fossil/timeline?a=19700101&n1=10 |
|
36
|
|
|
37
|
CVSTrac greatly improved the usability of CVS and was adopted by |
|
38
|
other projects. CVSTrac also [inspired the design][315] of [Trac][320], |
|
39
|
which was a similar system that was (and is) far more widely used. |
|
40
|
|
|
41
|
[315]: https://trac.edgewall.org/wiki/TracHistory |
|
42
|
[320]: https://trac.edgewall.org/ |
|
43
|
|
|
44
|
Historians can see the influence of CVSTrac on the development of |
|
45
|
SQLite. [Early SQLite check-ins][325] that happened before CVSTrac |
|
46
|
often had a check-in comment that was just a "smiley". |
|
47
|
That was not an unreasonable check-in comment, as check-in comments |
|
48
|
were scarcely seen and of questionable utility in raw CVS. CVSTrac |
|
49
|
changed that, making check-in comments more visible and more useful. |
|
50
|
The SQLite developers reacted by creating [better check-in comments][330]. |
|
51
|
|
|
52
|
[325]: https://sqlite.org/src/timeline?a=19700101&n1=10 |
|
53
|
[330]: https://sqlite.org/src/timeline?c=20030101&n1=10&nd |
|
54
|
|
|
55
|
At about this same time, the [Monotone][335] system appeared. |
|
56
|
Monotone was one of the first distributed version control systems. As far as |
|
57
|
this author is aware, Monotone was the first VCS to make use of |
|
58
|
SHA1 to identify artifacts. Monotone stored its content in a SQLite |
|
59
|
database, which is what brought it to the |