Fossil SCM

Added the "Thoughts On The Design Of Fossil" document in answer to recent criticisms and critiques.

drh 2010-01-05 21:28 trunk
Commit a6303982b01929b5c23b38379a7a156774a54ced
--- www/index.wiki
+++ www/index.wiki
@@ -125,10 +125,11 @@
125125
[http://www.sqliteconcepts.org/THManual.pdf | TH1 Script Language] used
126126
to configure the ticketing subsystem.
127127
128128
<h3>Links For Fossil Developer:</h3>
129129
130
+ * [./theory1.wiki | Thoughts On The Design Of Fossil].
130131
* [./pop.wiki | Principles Of Operation]
131132
* The [./fileformat.wiki | file format] used by every content
132133
file stored in the repository.
133134
* The [./delta_format.wiki | format of deltas] used to
134135
efficiently store changes between file revisions.
135136
136137
ADDED www/theory1.wiki
--- www/index.wiki
+++ www/index.wiki
@@ -125,10 +125,11 @@
125 [http://www.sqliteconcepts.org/THManual.pdf | TH1 Script Language] used
126 to configure the ticketing subsystem.
127
128 <h3>Links For Fossil Developer:</h3>
129
 
130 * [./pop.wiki | Principles Of Operation]
131 * The [./fileformat.wiki | file format] used by every content
132 file stored in the repository.
133 * The [./delta_format.wiki | format of deltas] used to
134 efficiently store changes between file revisions.
135
136 DDED www/theory1.wiki
--- www/index.wiki
+++ www/index.wiki
@@ -125,10 +125,11 @@
125 [http://www.sqliteconcepts.org/THManual.pdf | TH1 Script Language] used
126 to configure the ticketing subsystem.
127
128 <h3>Links For Fossil Developer:</h3>
129
130 * [./theory1.wiki | Thoughts On The Design Of Fossil].
131 * [./pop.wiki | Principles Of Operation]
132 * The [./fileformat.wiki | file format] used by every content
133 file stored in the repository.
134 * The [./delta_format.wiki | format of deltas] used to
135 efficiently store changes between file revisions.
136
137 DDED www/theory1.wiki
--- a/www/theory1.wiki
+++ b/www/theory1.wiki
@@ -0,0 +1,122 @@
1
+<title Fossil DVCS</titDesign <h1 align="center">Thoughts On The h1n Of The Fossil DVCS</title>
2
+
3
+Two questions (or criticisms) that arise frequently regarding Fossil
4
+can be summarized as follows:
5
+
6
+ 1. Why is Fossil based on SQLite instead of a distributed NoSQL database?
7
+
8
+ 2. Why is Fossil written in C instead of a modern high-level language?
9
+
10
+Neither question can be answered directly because they are both
11
+based on false assumptions. We claim that Fossil is not based on SQLite
12
+at all and that Fossil is not based on a distributed NoSQL database
13
+because Fossil is a distributed NoSQL database. And, Fossil does use
14
+a modern high-level language for its implementation, namely SQL.
15
+
16
+<h2>Fossil Is A NoSQL Database</h2>
17
+
18
+We begin with the first question: Fossil is not based on a distributed
19
+NoSQL database because Fossil <u><i>is</i></u> a distributed NoSQL database.
20
+Fossil is <u>not</u> based on SQLite.
21
+The current implementation of Fossnil uses
22
+SQLite as a local store for the content of the distributed database and as
23
+a cache for meta-information about the distributed database that is precomputed
24
+for quick and easy presentation. But the use of SQLite in this role is an
25
+implementation detail and is not fundamental to the design. Some future
26
+version of Fossil might do away with SQLite and substitute a pile-of-files or
27
+a key/value database in place of SQLite .
28
+(Actually, that is very unlikely
29
+to happen since SQLite works amazingly well in its current role, but the point
30
+is that omitting SQLite from Fossil is a theoretical possibility.)
31
+
32
+The underlying database that Fossil implements has nothing to do with
33
+SQLite, or SQL, or even relational database theory. The underlying
34
+database is very simple: it is an unordered collection of "artifacts".
35
+An artifact is a list of bytes - a "file" in the usual manner of thinking.
36
+Many artifacts are simply the content of source files that have
37
+been checked into the Fossil repository. Call these "content artifacts".
38
+Other artifacts, known as
39
+"control artifacts", contain ASCII text in a particular format that
40
+defines relationships between other artifacts, such as which
41
+content ar align="center">Thoughts On The h1n Of The Fossil DVCS</title>
42
+
43
+Two questions (or criticisms) that arise frequently regarding Fossil
44
+can be summarized as follows:
45
+
46
+ 1. Why is Fossil based on SQLite instead of a distributed NoSQL database?
47
+
48
+ 2. Why is Fossil written in C instead of a modern high-level language?
49
+
50
+Neither question can be answered directly because they are both
51
+based on false assumptions. We claim that Fossil is not based on SQLite
52
+at all and that Fossil is not based on a distributed NoSQL database
53
+because Fossil is a distributed NoSQL database. And, Fossil does use
54
+a modern high-level language for its implementation, namely SQL.
55
+
56
+<h2>Fossil Is A NoSQL Database</h2>
57
+
58
+We begin with the first question: Fossil is not based on a distributed
59
+NoSQL database because Fossil <u><i>is</i></u> a distributed NoSQL database.
60
+Fossil is <u>not</u> based on SQLite.
61
+The current implementation of Fossnil uses
62
+SQLite as a local store for the content of the distributed database and as
63
+a cache for meta-information about the distributed database that is precomputed
64
+for quick and easy presentation. But the use of SQLite in this role is an
65
+implementation detail and is not fundamental to the design. Some future
66
+version of Fossil might do away with SQLite and substitute a p<l DVCS</title>
67
+
68
+Two questions (or criticisms) that arise frequently regarding Fossil
69
+can be summarized as follows:
70
+
71
+ 1. Why is Fossil based on SQLite instead of a distributed NoSQL database?
72
+
73
+ 2. Why is Fossil written in C instead of a modern high-level language?
74
+
75
+Neither question can be answered directly because they are both
76
+based on false assumptions. We claim that Fossil is not based on SQLite
77
+at all and that Fossil is not based on a distributed NoSQL database
78
+because Fossil is a distributed NoSQL database. And, Fossil does use
79
+a modern high-level language for its implementation, namely SQL.
80
+
81
+<h2>Fossil Is A NoSQL Database</h2>
82
+
83
+We begin with the first question: Fossil is not based on a distributed
84
+NoSQL database because Fossil <u><i>is</i></u> a distributed NoSQL database.
85
+Fossil is <u>not</u> based on SQLite.
86
+The current implementation of Fossnil uses
87
+SQLite as a local store for the content of the distributed database and as
88
+a cache for meta-information about the distributed datadatabase that is precomputed
89
+for quick and easy presentation. But the use of SQLite in this role is an
90
+implementation detail and is not fundamental to the design. Some future
91
+version of Fossil might do away with SQLite and substitute a pile-of-files or
92
+a key/value database in place of SQLite.
93
+(Actually, that is very unlikely
94
+to happen since SQLite works amazingly well in its current role, but the point
95
+is that omitting SQLite from Fossil is a theoretical possibility.)
96
+
97
+The underlying database that Fossil implements has nothing to do with
98
+SQLite, or SQL, or even relational database theory. The underlying
99
+database is very simple: it is an unordered collection of "artifacts".
100
+An artifact is a list of bytes - a "file" in the usual manner of thinking.
101
+Many artifacts are simply the content ofauource files that have
102
+been checked into the Fossil repository. Call these "content artifacts".
103
+Other artifacts, known as
104
+"con<,canrculCS</title>
105
+
106
+Two quesauons (or criticisms) that arise frequently regarding Fossil
107
+can be summarized as follows:
108
+
109
+ 1. Why is Fossil based on SQLite instead of a distributed NoSQL database?
110
+
111
+ 2. Why is Fossil written in C instead of a modern high-level language?
112
+
113
+Neither question can be answered directly because they are both
114
+based on false assumptionr not based on SQLite
115
+at all and that Fossil is not based on a distributed NoSQL database
116
+because Fossil is a distributed NoSQL database. And, Fossil does use
117
+a modern high-level language for its implementation, namely SQL.
118
+
119
+<h2>Fossil Is A NoSQL Database</h2>
120
+
121
+We begin with the first question: Fossil is not based on a distributed
122
+e
--- a/www/theory1.wiki
+++ b/www/theory1.wiki
@@ -0,0 +1,122 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--- a/www/theory1.wiki
+++ b/www/theory1.wiki
@@ -0,0 +1,122 @@
1 <title Fossil DVCS</titDesign <h1 align="center">Thoughts On The h1n Of The Fossil DVCS</title>
2
3 Two questions (or criticisms) that arise frequently regarding Fossil
4 can be summarized as follows:
5
6 1. Why is Fossil based on SQLite instead of a distributed NoSQL database?
7
8 2. Why is Fossil written in C instead of a modern high-level language?
9
10 Neither question can be answered directly because they are both
11 based on false assumptions. We claim that Fossil is not based on SQLite
12 at all and that Fossil is not based on a distributed NoSQL database
13 because Fossil is a distributed NoSQL database. And, Fossil does use
14 a modern high-level language for its implementation, namely SQL.
15
16 <h2>Fossil Is A NoSQL Database</h2>
17
18 We begin with the first question: Fossil is not based on a distributed
19 NoSQL database because Fossil <u><i>is</i></u> a distributed NoSQL database.
20 Fossil is <u>not</u> based on SQLite.
21 The current implementation of Fossnil uses
22 SQLite as a local store for the content of the distributed database and as
23 a cache for meta-information about the distributed database that is precomputed
24 for quick and easy presentation. But the use of SQLite in this role is an
25 implementation detail and is not fundamental to the design. Some future
26 version of Fossil might do away with SQLite and substitute a pile-of-files or
27 a key/value database in place of SQLite .
28 (Actually, that is very unlikely
29 to happen since SQLite works amazingly well in its current role, but the point
30 is that omitting SQLite from Fossil is a theoretical possibility.)
31
32 The underlying database that Fossil implements has nothing to do with
33 SQLite, or SQL, or even relational database theory. The underlying
34 database is very simple: it is an unordered collection of "artifacts".
35 An artifact is a list of bytes - a "file" in the usual manner of thinking.
36 Many artifacts are simply the content of source files that have
37 been checked into the Fossil repository. Call these "content artifacts".
38 Other artifacts, known as
39 "control artifacts", contain ASCII text in a particular format that
40 defines relationships between other artifacts, such as which
41 content ar align="center">Thoughts On The h1n Of The Fossil DVCS</title>
42
43 Two questions (or criticisms) that arise frequently regarding Fossil
44 can be summarized as follows:
45
46 1. Why is Fossil based on SQLite instead of a distributed NoSQL database?
47
48 2. Why is Fossil written in C instead of a modern high-level language?
49
50 Neither question can be answered directly because they are both
51 based on false assumptions. We claim that Fossil is not based on SQLite
52 at all and that Fossil is not based on a distributed NoSQL database
53 because Fossil is a distributed NoSQL database. And, Fossil does use
54 a modern high-level language for its implementation, namely SQL.
55
56 <h2>Fossil Is A NoSQL Database</h2>
57
58 We begin with the first question: Fossil is not based on a distributed
59 NoSQL database because Fossil <u><i>is</i></u> a distributed NoSQL database.
60 Fossil is <u>not</u> based on SQLite.
61 The current implementation of Fossnil uses
62 SQLite as a local store for the content of the distributed database and as
63 a cache for meta-information about the distributed database that is precomputed
64 for quick and easy presentation. But the use of SQLite in this role is an
65 implementation detail and is not fundamental to the design. Some future
66 version of Fossil might do away with SQLite and substitute a p<l DVCS</title>
67
68 Two questions (or criticisms) that arise frequently regarding Fossil
69 can be summarized as follows:
70
71 1. Why is Fossil based on SQLite instead of a distributed NoSQL database?
72
73 2. Why is Fossil written in C instead of a modern high-level language?
74
75 Neither question can be answered directly because they are both
76 based on false assumptions. We claim that Fossil is not based on SQLite
77 at all and that Fossil is not based on a distributed NoSQL database
78 because Fossil is a distributed NoSQL database. And, Fossil does use
79 a modern high-level language for its implementation, namely SQL.
80
81 <h2>Fossil Is A NoSQL Database</h2>
82
83 We begin with the first question: Fossil is not based on a distributed
84 NoSQL database because Fossil <u><i>is</i></u> a distributed NoSQL database.
85 Fossil is <u>not</u> based on SQLite.
86 The current implementation of Fossnil uses
87 SQLite as a local store for the content of the distributed database and as
88 a cache for meta-information about the distributed datadatabase that is precomputed
89 for quick and easy presentation. But the use of SQLite in this role is an
90 implementation detail and is not fundamental to the design. Some future
91 version of Fossil might do away with SQLite and substitute a pile-of-files or
92 a key/value database in place of SQLite.
93 (Actually, that is very unlikely
94 to happen since SQLite works amazingly well in its current role, but the point
95 is that omitting SQLite from Fossil is a theoretical possibility.)
96
97 The underlying database that Fossil implements has nothing to do with
98 SQLite, or SQL, or even relational database theory. The underlying
99 database is very simple: it is an unordered collection of "artifacts".
100 An artifact is a list of bytes - a "file" in the usual manner of thinking.
101 Many artifacts are simply the content ofauource files that have
102 been checked into the Fossil repository. Call these "content artifacts".
103 Other artifacts, known as
104 "con<,canrculCS</title>
105
106 Two quesauons (or criticisms) that arise frequently regarding Fossil
107 can be summarized as follows:
108
109 1. Why is Fossil based on SQLite instead of a distributed NoSQL database?
110
111 2. Why is Fossil written in C instead of a modern high-level language?
112
113 Neither question can be answered directly because they are both
114 based on false assumptionr not based on SQLite
115 at all and that Fossil is not based on a distributed NoSQL database
116 because Fossil is a distributed NoSQL database. And, Fossil does use
117 a modern high-level language for its implementation, namely SQL.
118
119 <h2>Fossil Is A NoSQL Database</h2>
120
121 We begin with the first question: Fossil is not based on a distributed
122 e

Keyboard Shortcuts

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