Fossil SCM

Recast the blockchain.md doc as "Is Fossil a Blockchain?" (answer: mostly no) and updated all references to it to either remove the term, use "repository" instead where that's sufficiently clear, or to say either "Merkle tree" or "hash tree" instead where we need to distinguish the hash tree itself from the rest of the repo DB file's contents. This depends on the prior CAP theorem doc, since part of the argument for Fossil not being a blockchain gets us down into those weeds.

wyoung 2020-10-05 18:15 trunk
Commit 855578b61091c49d24a891b8b2db4f92705842794e3e3292a1b0700efac2a21c
+188 -20
--- www/blockchain.md
+++ www/blockchain.md
@@ -1,32 +1,200 @@
1
-# Fossil As Blockchain
1
+# Is Fossil A Blockchain?
2
+
3
+The Fossil version control system shares a lot of similarities with
4
+blockchain based technologies, but it also differs from the more common
5
+sorts of blockchains. This document will discuss the term’s
6
+applicability, so you can decide whether applying the term to Fossil
7
+makes sense to you.
8
+
29
3
-Fossil is a version control system built around blockchain.
10
+## The Dictionary Argument
411
5
-Wikipedia defines "blockchain" as
12
+[Wikipedia defines "blockchain"][bcwp] in part as
613
714
>
8
- "a growing list of records, called blocks, which are linked using
15
+ "…a growing list of records, called blocks, which are linked using
916
cryptography. Each block contains a cryptographic hash of the previous
10
- block, a timestamp, and transaction data..." [(1)][]
17
+ block, a timestamp, and transaction data…"
1118
1219
13
-By that definition, Fossil is clearly an implementation of blockchain.
20
+By that partial definition, Fossil is indeed a blockchain.
1421
The blocks are ["manifests" artifacts](./fileformat.wiki#manifest).
1522
Each manifest has a SHA1 or SHA3 hash of its parent or parents,
1623
a timestamp, and other transactional data. The repository grows by
1724
adding new manifests onto the list.
1825
19
-Some people have come to associate blockchain with cryptocurrency, however,
20
-and since Fossil has nothing to do with cryptocurrency, the claim that
21
-Fossil is built around blockchain is met with skepticism. The key thing
22
-to note here is that cryptocurrency implementations like BitCoin are
23
-built around blockchain, but they are not synonymous with blockchain.
24
-Blockchain is a much broader concept. Blockchain is a mechanism for
25
-constructing a distributed ledger of transactions.
26
-Yes, you can use a distributed
27
-ledger to implement a cryptocurrency, but you can also use a distributed
28
-ledger to implement a version control system, and probably many other kinds
29
-of applications as well. Blockchain is a much broader idea than
30
-cryptocurrency.
31
-
32
-[(1)]: https://en.wikipedia.org/wiki/Blockchain
26
+Nevertheless, there are many reasons to regard Fossil as *not* a
27
+blockchain.
28
+
29
+[bcwp]: https://en.wikipedia.org/wiki/Blockchain
30
+
31
+
32
+
33
+## Cryptocurrency
34
+
35
+Because blockchain technology was first popularized as Bitcoin, many
36
+people associate the term with cryptocurrency. Since Fossil has nothing
37
+to do with cryptocurrency, someone using the term “blockchain” to refer
38
+to Fossil is likely to fail to communicate their ideas clearly.
39
+
40
+Cryptocurrency also has unfortunate implications in certain circles, its
41
+anonymity and lack of regulation leading it to become associated with
42
+bad actors. Even if we ignore all of the other criticisms in this
43
+document, our unwillingness to be so associated may be enough of a
44
+reason for us to avoid using it.
45
+
46
+
47
+
48
+## Marketing Capture
49
+
50
+The fact that blockchain technology has become a hot marketing buzzword
51
+should affect your choice of whether to use the term “blockchain” to
52
+refer to Fossil. Your choice may well vary based on the audience:
53
+
54
+* **Executive Board:** At the quarterly all-hands meeting, the big
55
+ boss — who just read about blockchains in [PHB] Weekly — asks if
56
+ your development organization “has a blockchain.” With Fossil and a
57
+ suitably narrow definition of the term “blockchain” in mind, you
58
+ could answer “Yes,” except that you know they’re then going to go to
59
+ the shareholders and happily report, “Our development organization
60
+ has been using blockchain technology for years!” You may decide that
61
+ this makes you responsible for a public deception, putting the
62
+ organization at risk of an SEC investigation for making false
63
+ statements.
64
+
65
+ Yet if you answer “No,” knowing you’ll be punished for not being on
66
+ top of the latest whiz-bang as the technologically gormless PHB sees
67
+ it, are you advancing the organization’s actual interests? If the
68
+ organization has no actual need for a proper blockchain tech base,
69
+ isn’t it better to just say “Yes” and point at Fossil so you can get
70
+ back to useful work?
71
+
72
+* **Middle Management:** Your project leader asks the same question,
73
+ so you point them at this document, which tells them the truth:
74
+ kinda yes, but mostly no.
75
+
76
+* **Developer Lunch:** A peer asks if you’re doing anything with
77
+ blockchains. Knowing the contents of this document, you decide you
78
+ can’t justify using that term to refer to Fossil at a deep technical
79
+ level, so you admit that you are not.
80
+
81
+[PHB]: https://en.wikipedia.org/wiki/Pointy-haired_Boss
82
+
83
+
84
+## Distributed Ledgers
85
+
86
+Cryptocurrencies are a type of [distributed ledger technology][dlt]. Is
87
+Fossil a distributed ledger?
88
+
89
+A key tenet of DLT is that records be unmodifiable after they’re
90
+committed to the ledger, which matches quite well with Fossil’s design
91
+and everyday use cases.
92
+
93
+Yet, Fossil also has [purge] and [shunning][shun]. Doesn’t that mean
94
+Fossil cannot be a distributed ledger?
95
+
96
+What if you removed those features from Fossil, creating an append-only
97
+variant? Is it a DLT then? Arguably still not, because [today’s Fossil
98
+is an AP-mode system][fapm] in the [CAP theorem][cap] sense, which means
99
+there can be no guaranteed consensus on the content of the ledger at any
100
+given time. If you had an AP-mode accounts receivable system, it could
101
+have different bottom-line totals at different sites, because you’ve
102
+cast away “C” to get AP-mode operation.
103
+
104
+What are the prospects for CA-mode or CP-mode Fossil? [We don’t want
105
+CA-mode Fossil, but CP-mode could be useful.][fapm] Until the latter
106
+exists, this author believes Fossil is not a distributed ledger in a
107
+technologically defensible sense. If you restrict your definition’s
108
+scope to cover only the most common uses of “blockchain,” which are all
109
+DLTs, that means Fossil is not a blockchain.
110
+
111
+[fapm]: ./cap-theorem.md
112
+[cap]: https://en.wikipedia.org/wiki/CAP_theorem
113
+[dlt]: https://en.wikipedia.org/wiki/Distributed_ledger
114
+[DVCS]: https://en.wikipedia.org/wiki/Distributed_version_control
115
+[purge]: /help?cmd=purge
116
+[shun]: ./shunning.wiki
117
+
118
+
119
+## Distributed Partial Consensus
120
+
121
+If we can’t get DLT, can we at least get some kind of distributed
122
+consensus at the level of individual Fossil’s commits?
123
+
124
+Many blockchain based technologies have this property: given some
125
+element of the blockchain, you can make certain proofs that it either is
126
+a legitimate part of the whole blockchain, or it is not.
127
+
128
+Unfortunately, this author doesn’t see a way to do that with Fossil.
129
+Given only one “block” in Fossil’s putative “blockchain” — a commit, in
130
+Fossil terminology — all you can prove is whether it is internally
131
+consistent, not corrupt. That then points you at the parent(s) of that
132
+commit, which you can repeat the exercise on, back to the root of the
133
+DAG. This is what the enabled-by-default [`repo-cksum` setting][rcks]
134
+does.
135
+
136
+If cryptocurrencies worked this way, you wouldn’t be able to prove that
137
+a given cryptocoin was legitimate without repeating the proof-of-work
138
+calculations for the entire cryptocurrency scheme!
139
+
140
+What would it even mean to prove that a given Fossil commit “*belongs*”
141
+to the repository you’ve extracted it from? For a software project,
142
+isn’t that tantamount to automatic code review, where the server would
143
+be able to reliably accept or reject a commit based solely on its
144
+content? That sounds nice, but this author believes we’ll need to invent
145
+[AGI] first.
146
+
147
+A better method to provide distributed consensus for Fossil would be to
148
+rely on the *natural* intelligence of its users: that is, distributed
149
+commit signing, so that a commit is accepted into the blockchain only
150
+once some number of users countersign it. This amounts to a code review
151
+feature, which Fossil doesn’t currently have.
152
+
153
+Solving that problem basically requires solving the [PKI] problem first,
154
+since you can’t verify the proofs of these signatures if you can’t first
155
+prove that the provided signatures belong to people you trust. This is a
156
+notoriously hard problem in its own right.
157
+
158
+A future version of Fossil could instead provide consensus [in the CAP
159
+sense][fapm]. For instance, you could say that if a quorum of servers
160
+all have a given commit, it “belongs.” Fossil’s strong hashing tech
161
+would mean that querying whether a given commit is part of the
162
+“blockchain” would be as simple as going down the list of servers and
163
+sending it an HTTP GET `/info` query for the artifact ID, returning
164
+“Yes” once you get enough HTTP 200 status codes back. All of this is
165
+hypothetical, because Fossil doesn’t do this today.
166
+
167
+Even with all of the above solved, you’d still have another problem:
168
+Fossil currently has no way to do partial cloning of a repository. The
169
+only way to remotely extract individual “blocks” — commits — from a
170
+remote repository is to make `/artifact`, `/info`, or `/raw` queries to
171
+its HTTP interface. For Fossil to be a true blockchain, we’d want a way
172
+to send around as little as one commit which could be individually
173
+verified as being “part of the blockchain” using only intra-block
174
+consistency checks.
175
+
176
+[AGI]: https://en.wikipedia.org/wiki/Artificial_general_intelligence
177
+[PKI]: https://en.wikipedia.org/wiki/Public_key_infrastructure
178
+[rcks]: https://fossil-scm.org/home/help?cmd=repo-cksum
179
+
180
+
181
+# Conclusion
182
+
183
+This author believes it is technologically indefensible to call Fossil a
184
+“blockchain” in any sense likely to be understood by a majority of those
185
+you’re communicating with.
186
+
187
+Within a certain narrow scope, you can defend this usage, but if you do
188
+that, you’ve failed any goal that requires clear communication: it
189
+doesn’t work to use a term in a nonstandard way just because you can
190
+defend it. The people you’re communicating your ideas to must have the
191
+same concept of the terms you use.
192
+
193
+What term should you use instead? A blockchain is a type of [Merkle
194
+tree][mt], also called a hash tree, and Fossil is certainly that.
195
+
196
+Fossil and “blockchain” are technological peers. They are related
197
+technologies, but neither is a subset or instance of the other in any
198
+useful sense.
199
+
200
+[mt]: https://en.wikipedia.org/wiki/Merkle_tree
33201
--- www/blockchain.md
+++ www/blockchain.md
@@ -1,32 +1,200 @@
1 # Fossil As Blockchain
 
 
 
 
 
 
 
2
3 Fossil is a version control system built around blockchain.
4
5 Wikipedia defines "blockchain" as
6
7 >
8 "a growing list of records, called blocks, which are linked using
9 cryptography. Each block contains a cryptographic hash of the previous
10 block, a timestamp, and transaction data..." [(1)][]
11
12
13 By that definition, Fossil is clearly an implementation of blockchain.
14 The blocks are ["manifests" artifacts](./fileformat.wiki#manifest).
15 Each manifest has a SHA1 or SHA3 hash of its parent or parents,
16 a timestamp, and other transactional data. The repository grows by
17 adding new manifests onto the list.
18
19 Some people have come to associate blockchain with cryptocurrency, however,
20 and since Fossil has nothing to do with cryptocurrency, the claim that
21 Fossil is built around blockchain is met with skepticism. The key thing
22 to note here is that cryptocurrency implementations like BitCoin are
23 built around blockchain, but they are not synonymous with blockchain.
24 Blockchain is a much broader concept. Blockchain is a mechanism for
25 constructing a distributed ledger of transactions.
26 Yes, you can use a distributed
27 ledger to implement a cryptocurrency, but you can also use a distributed
28 ledger to implement a version control system, and probably many other kinds
29 of applications as well. Blockchain is a much broader idea than
30 cryptocurrency.
31
32 [(1)]: https://en.wikipedia.org/wiki/Blockchain
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
--- www/blockchain.md
+++ www/blockchain.md
@@ -1,32 +1,200 @@
1 # Is Fossil A Blockchain?
2
3 The Fossil version control system shares a lot of similarities with
4 blockchain based technologies, but it also differs from the more common
5 sorts of blockchains. This document will discuss the term’s
6 applicability, so you can decide whether applying the term to Fossil
7 makes sense to you.
8
9
10 ## The Dictionary Argument
11
12 [Wikipedia defines "blockchain"][bcwp] in part as
13
14 >
15 "…a growing list of records, called blocks, which are linked using
16 cryptography. Each block contains a cryptographic hash of the previous
17 block, a timestamp, and transaction data…"
18
19
20 By that partial definition, Fossil is indeed a blockchain.
21 The blocks are ["manifests" artifacts](./fileformat.wiki#manifest).
22 Each manifest has a SHA1 or SHA3 hash of its parent or parents,
23 a timestamp, and other transactional data. The repository grows by
24 adding new manifests onto the list.
25
26 Nevertheless, there are many reasons to regard Fossil as *not* a
27 blockchain.
28
29 [bcwp]: https://en.wikipedia.org/wiki/Blockchain
30
31
32
33 ## Cryptocurrency
34
35 Because blockchain technology was first popularized as Bitcoin, many
36 people associate the term with cryptocurrency. Since Fossil has nothing
37 to do with cryptocurrency, someone using the term “blockchain” to refer
38 to Fossil is likely to fail to communicate their ideas clearly.
39
40 Cryptocurrency also has unfortunate implications in certain circles, its
41 anonymity and lack of regulation leading it to become associated with
42 bad actors. Even if we ignore all of the other criticisms in this
43 document, our unwillingness to be so associated may be enough of a
44 reason for us to avoid using it.
45
46
47
48 ## Marketing Capture
49
50 The fact that blockchain technology has become a hot marketing buzzword
51 should affect your choice of whether to use the term “blockchain” to
52 refer to Fossil. Your choice may well vary based on the audience:
53
54 * **Executive Board:** At the quarterly all-hands meeting, the big
55 boss — who just read about blockchains in [PHB] Weekly — asks if
56 your development organization “has a blockchain.” With Fossil and a
57 suitably narrow definition of the term “blockchain” in mind, you
58 could answer “Yes,” except that you know they’re then going to go to
59 the shareholders and happily report, “Our development organization
60 has been using blockchain technology for years!” You may decide that
61 this makes you responsible for a public deception, putting the
62 organization at risk of an SEC investigation for making false
63 statements.
64
65 Yet if you answer “No,” knowing you’ll be punished for not being on
66 top of the latest whiz-bang as the technologically gormless PHB sees
67 it, are you advancing the organization’s actual interests? If the
68 organization has no actual need for a proper blockchain tech base,
69 isn’t it better to just say “Yes” and point at Fossil so you can get
70 back to useful work?
71
72 * **Middle Management:** Your project leader asks the same question,
73 so you point them at this document, which tells them the truth:
74 kinda yes, but mostly no.
75
76 * **Developer Lunch:** A peer asks if you’re doing anything with
77 blockchains. Knowing the contents of this document, you decide you
78 can’t justify using that term to refer to Fossil at a deep technical
79 level, so you admit that you are not.
80
81 [PHB]: https://en.wikipedia.org/wiki/Pointy-haired_Boss
82
83
84 ## Distributed Ledgers
85
86 Cryptocurrencies are a type of [distributed ledger technology][dlt]. Is
87 Fossil a distributed ledger?
88
89 A key tenet of DLT is that records be unmodifiable after they’re
90 committed to the ledger, which matches quite well with Fossil’s design
91 and everyday use cases.
92
93 Yet, Fossil also has [purge] and [shunning][shun]. Doesn’t that mean
94 Fossil cannot be a distributed ledger?
95
96 What if you removed those features from Fossil, creating an append-only
97 variant? Is it a DLT then? Arguably still not, because [today’s Fossil
98 is an AP-mode system][fapm] in the [CAP theorem][cap] sense, which means
99 there can be no guaranteed consensus on the content of the ledger at any
100 given time. If you had an AP-mode accounts receivable system, it could
101 have different bottom-line totals at different sites, because you’ve
102 cast away “C” to get AP-mode operation.
103
104 What are the prospects for CA-mode or CP-mode Fossil? [We don’t want
105 CA-mode Fossil, but CP-mode could be useful.][fapm] Until the latter
106 exists, this author believes Fossil is not a distributed ledger in a
107 technologically defensible sense. If you restrict your definition’s
108 scope to cover only the most common uses of “blockchain,” which are all
109 DLTs, that means Fossil is not a blockchain.
110
111 [fapm]: ./cap-theorem.md
112 [cap]: https://en.wikipedia.org/wiki/CAP_theorem
113 [dlt]: https://en.wikipedia.org/wiki/Distributed_ledger
114 [DVCS]: https://en.wikipedia.org/wiki/Distributed_version_control
115 [purge]: /help?cmd=purge
116 [shun]: ./shunning.wiki
117
118
119 ## Distributed Partial Consensus
120
121 If we can’t get DLT, can we at least get some kind of distributed
122 consensus at the level of individual Fossil’s commits?
123
124 Many blockchain based technologies have this property: given some
125 element of the blockchain, you can make certain proofs that it either is
126 a legitimate part of the whole blockchain, or it is not.
127
128 Unfortunately, this author doesn’t see a way to do that with Fossil.
129 Given only one “block” in Fossil’s putative “blockchain” — a commit, in
130 Fossil terminology — all you can prove is whether it is internally
131 consistent, not corrupt. That then points you at the parent(s) of that
132 commit, which you can repeat the exercise on, back to the root of the
133 DAG. This is what the enabled-by-default [`repo-cksum` setting][rcks]
134 does.
135
136 If cryptocurrencies worked this way, you wouldn’t be able to prove that
137 a given cryptocoin was legitimate without repeating the proof-of-work
138 calculations for the entire cryptocurrency scheme!
139
140 What would it even mean to prove that a given Fossil commit “*belongs*”
141 to the repository you’ve extracted it from? For a software project,
142 isn’t that tantamount to automatic code review, where the server would
143 be able to reliably accept or reject a commit based solely on its
144 content? That sounds nice, but this author believes we’ll need to invent
145 [AGI] first.
146
147 A better method to provide distributed consensus for Fossil would be to
148 rely on the *natural* intelligence of its users: that is, distributed
149 commit signing, so that a commit is accepted into the blockchain only
150 once some number of users countersign it. This amounts to a code review
151 feature, which Fossil doesn’t currently have.
152
153 Solving that problem basically requires solving the [PKI] problem first,
154 since you can’t verify the proofs of these signatures if you can’t first
155 prove that the provided signatures belong to people you trust. This is a
156 notoriously hard problem in its own right.
157
158 A future version of Fossil could instead provide consensus [in the CAP
159 sense][fapm]. For instance, you could say that if a quorum of servers
160 all have a given commit, it “belongs.” Fossil’s strong hashing tech
161 would mean that querying whether a given commit is part of the
162 “blockchain” would be as simple as going down the list of servers and
163 sending it an HTTP GET `/info` query for the artifact ID, returning
164 “Yes” once you get enough HTTP 200 status codes back. All of this is
165 hypothetical, because Fossil doesn’t do this today.
166
167 Even with all of the above solved, you’d still have another problem:
168 Fossil currently has no way to do partial cloning of a repository. The
169 only way to remotely extract individual “blocks” — commits — from a
170 remote repository is to make `/artifact`, `/info`, or `/raw` queries to
171 its HTTP interface. For Fossil to be a true blockchain, we’d want a way
172 to send around as little as one commit which could be individually
173 verified as being “part of the blockchain” using only intra-block
174 consistency checks.
175
176 [AGI]: https://en.wikipedia.org/wiki/Artificial_general_intelligence
177 [PKI]: https://en.wikipedia.org/wiki/Public_key_infrastructure
178 [rcks]: https://fossil-scm.org/home/help?cmd=repo-cksum
179
180
181 # Conclusion
182
183 This author believes it is technologically indefensible to call Fossil a
184 “blockchain” in any sense likely to be understood by a majority of those
185 you’re communicating with.
186
187 Within a certain narrow scope, you can defend this usage, but if you do
188 that, you’ve failed any goal that requires clear communication: it
189 doesn’t work to use a term in a nonstandard way just because you can
190 defend it. The people you’re communicating your ideas to must have the
191 same concept of the terms you use.
192
193 What term should you use instead? A blockchain is a type of [Merkle
194 tree][mt], also called a hash tree, and Fossil is certainly that.
195
196 Fossil and “blockchain” are technological peers. They are related
197 technologies, but neither is a subset or instance of the other in any
198 useful sense.
199
200 [mt]: https://en.wikipedia.org/wiki/Merkle_tree
201
--- www/caps/admin-v-setup.md
+++ www/caps/admin-v-setup.md
@@ -46,12 +46,12 @@
4646
choices.
4747
4848
You can also look at the role of Admin from the other direction, up
4949
through the [user power hierarchy][ucap] rather than down from Setup. An
5050
Admin user is usually a “super-developer” role, given full control over
51
-the repository’s managed content: versioned artifacts in [the block
52
-chain][bc], [unversioned content][uv], forum posts, wiki articles,
51
+the repository’s managed content: versioned artifacts in [the hash tree][bc],
52
+[unversioned content][uv], forum posts, wiki articles,
5353
tickets, etc.
5454
5555
We’ll explore these distinctions in the rest of this document.
5656
5757
[bc]: ../blockchain.md
@@ -158,17 +158,17 @@
158158
system][shun] is to clean up after a spammer, and that's
159159
exactly the sort of administrivia we wish to delegate to Admin users.
160160
161161
Coupled with the Rebuild button on the same page, an Admin user has
162162
the power to delete the repository's entire
163
- [blockchain][bc]! This makes this feature a pretty good
163
+ [hash tree][bc]! This makes this feature a pretty good
164164
razor in deciding whether to grant someone Admin capability: do you
165165
trust that user to shun Fossil artifacts responsibly?
166166
167167
Realize that shunning is cooperative in Fossil. As long as there are
168168
surviving repository clones, an Admin-only user who deletes the
169
- whole blockchain has merely caused a nuisance. An Admin-only user
169
+ whole hash tree has merely caused a nuisance. An Admin-only user
170170
cannot permanently destroy the repository unless the Setup user has
171171
been so silly as to have no up-to-date clones.
172172
173173
* **Moderation**: According to the power hierarchy laid out at the top
174174
of this article, Admins are greater than Moderators, so control over
@@ -344,11 +344,11 @@
344344
access on the host system, we almost certainly don't want to
345345
allow them to change such settings.</p>
346346
347347
* **SQL**: The Admin → SQL feature allows the Setup user to enter raw
348348
SQL queries against the Fossil repository via Fossil UI. This not
349
- only allows arbitrary ability to modify the repository blockchain
349
+ only allows arbitrary ability to modify the repository hash tree
350350
and its backing data tables, it can probably also be used to damage
351351
the host such as via `PRAGMA temp_store = FILE`.
352352
353353
* **Tickets**: This section allows input of aribtrary TH1 code that
354354
runs on the server, affecting the way the Fossil ticketing system
355355
--- www/caps/admin-v-setup.md
+++ www/caps/admin-v-setup.md
@@ -46,12 +46,12 @@
46 choices.
47
48 You can also look at the role of Admin from the other direction, up
49 through the [user power hierarchy][ucap] rather than down from Setup. An
50 Admin user is usually a “super-developer” role, given full control over
51 the repository’s managed content: versioned artifacts in [the block
52 chain][bc], [unversioned content][uv], forum posts, wiki articles,
53 tickets, etc.
54
55 We’ll explore these distinctions in the rest of this document.
56
57 [bc]: ../blockchain.md
@@ -158,17 +158,17 @@
158 system][shun] is to clean up after a spammer, and that's
159 exactly the sort of administrivia we wish to delegate to Admin users.
160
161 Coupled with the Rebuild button on the same page, an Admin user has
162 the power to delete the repository's entire
163 [blockchain][bc]! This makes this feature a pretty good
164 razor in deciding whether to grant someone Admin capability: do you
165 trust that user to shun Fossil artifacts responsibly?
166
167 Realize that shunning is cooperative in Fossil. As long as there are
168 surviving repository clones, an Admin-only user who deletes the
169 whole blockchain has merely caused a nuisance. An Admin-only user
170 cannot permanently destroy the repository unless the Setup user has
171 been so silly as to have no up-to-date clones.
172
173 * **Moderation**: According to the power hierarchy laid out at the top
174 of this article, Admins are greater than Moderators, so control over
@@ -344,11 +344,11 @@
344 access on the host system, we almost certainly don't want to
345 allow them to change such settings.</p>
346
347 * **SQL**: The Admin → SQL feature allows the Setup user to enter raw
348 SQL queries against the Fossil repository via Fossil UI. This not
349 only allows arbitrary ability to modify the repository blockchain
350 and its backing data tables, it can probably also be used to damage
351 the host such as via `PRAGMA temp_store = FILE`.
352
353 * **Tickets**: This section allows input of aribtrary TH1 code that
354 runs on the server, affecting the way the Fossil ticketing system
355
--- www/caps/admin-v-setup.md
+++ www/caps/admin-v-setup.md
@@ -46,12 +46,12 @@
46 choices.
47
48 You can also look at the role of Admin from the other direction, up
49 through the [user power hierarchy][ucap] rather than down from Setup. An
50 Admin user is usually a “super-developer” role, given full control over
51 the repository’s managed content: versioned artifacts in [the hash tree][bc],
52 [unversioned content][uv], forum posts, wiki articles,
53 tickets, etc.
54
55 We’ll explore these distinctions in the rest of this document.
56
57 [bc]: ../blockchain.md
@@ -158,17 +158,17 @@
158 system][shun] is to clean up after a spammer, and that's
159 exactly the sort of administrivia we wish to delegate to Admin users.
160
161 Coupled with the Rebuild button on the same page, an Admin user has
162 the power to delete the repository's entire
163 [hash tree][bc]! This makes this feature a pretty good
164 razor in deciding whether to grant someone Admin capability: do you
165 trust that user to shun Fossil artifacts responsibly?
166
167 Realize that shunning is cooperative in Fossil. As long as there are
168 surviving repository clones, an Admin-only user who deletes the
169 whole hash tree has merely caused a nuisance. An Admin-only user
170 cannot permanently destroy the repository unless the Setup user has
171 been so silly as to have no up-to-date clones.
172
173 * **Moderation**: According to the power hierarchy laid out at the top
174 of this article, Admins are greater than Moderators, so control over
@@ -344,11 +344,11 @@
344 access on the host system, we almost certainly don't want to
345 allow them to change such settings.</p>
346
347 * **SQL**: The Admin → SQL feature allows the Setup user to enter raw
348 SQL queries against the Fossil repository via Fossil UI. This not
349 only allows arbitrary ability to modify the repository hash tree
350 and its backing data tables, it can probably also be used to damage
351 the host such as via `PRAGMA temp_store = FILE`.
352
353 * **Tickets**: This section allows input of aribtrary TH1 code that
354 runs on the server, affecting the way the Fossil ticketing system
355
--- www/caps/impl.md
+++ www/caps/impl.md
@@ -62,11 +62,11 @@
6262
3. You can purposely overwrite good timestamps with bad ones and push
6363
those changes up to the remote with no interference, even though
6464
Fossil tries to make that a Setup-only operation.
6565
6666
All of this falls out of two of Fossil’s design choices: sync is
67
-all-or-nothing, and [the Fossil block chain][bc] is immutable. Fossil
67
+all-or-nothing, and [the Fossil hash tree][bc] is immutable. Fossil
6868
would have to violate one or both of these principles to filter such
6969
problems out of incoming syncs.
7070
7171
We have considered auto-[shunning][shun] “bad” content on sync, but this
7272
is [difficult][asd] due to [the design of the sync protocol][dsp]. This
7373
--- www/caps/impl.md
+++ www/caps/impl.md
@@ -62,11 +62,11 @@
62 3. You can purposely overwrite good timestamps with bad ones and push
63 those changes up to the remote with no interference, even though
64 Fossil tries to make that a Setup-only operation.
65
66 All of this falls out of two of Fossil’s design choices: sync is
67 all-or-nothing, and [the Fossil block chain][bc] is immutable. Fossil
68 would have to violate one or both of these principles to filter such
69 problems out of incoming syncs.
70
71 We have considered auto-[shunning][shun] “bad” content on sync, but this
72 is [difficult][asd] due to [the design of the sync protocol][dsp]. This
73
--- www/caps/impl.md
+++ www/caps/impl.md
@@ -62,11 +62,11 @@
62 3. You can purposely overwrite good timestamps with bad ones and push
63 those changes up to the remote with no interference, even though
64 Fossil tries to make that a Setup-only operation.
65
66 All of this falls out of two of Fossil’s design choices: sync is
67 all-or-nothing, and [the Fossil hash tree][bc] is immutable. Fossil
68 would have to violate one or both of these principles to filter such
69 problems out of incoming syncs.
70
71 We have considered auto-[shunning][shun] “bad” content on sync, but this
72 is [difficult][asd] due to [the design of the sync protocol][dsp]. This
73
--- www/caps/ref.html
+++ www/caps/ref.html
@@ -77,11 +77,11 @@
7777
<th>d</th>
7878
<th>n/a</th>
7979
<td>
8080
Legacy capability letter from Fossil's forebear <a
8181
href="http://cvstrac.org/">CVSTrac</a>, which has no useful
82
- meaning in Fossil due to its durable blockchain nature. This
82
+ meaning in Fossil due to the nature of its durable Merkle tree design. This
8383
letter was assigned by default to Developer in repos created with
8484
Fossil 2.10 or earlier, but it has no effect in current or past
8585
versions of Fossil; we recommend that you remove it in case we
8686
ever reuse this letter for another purpose. See <a
8787
href="https://fossil-scm.org/forum/forumpost/43c78f4bef">this
8888
--- www/caps/ref.html
+++ www/caps/ref.html
@@ -77,11 +77,11 @@
77 <th>d</th>
78 <th>n/a</th>
79 <td>
80 Legacy capability letter from Fossil's forebear <a
81 href="http://cvstrac.org/">CVSTrac</a>, which has no useful
82 meaning in Fossil due to its durable blockchain nature. This
83 letter was assigned by default to Developer in repos created with
84 Fossil 2.10 or earlier, but it has no effect in current or past
85 versions of Fossil; we recommend that you remove it in case we
86 ever reuse this letter for another purpose. See <a
87 href="https://fossil-scm.org/forum/forumpost/43c78f4bef">this
88
--- www/caps/ref.html
+++ www/caps/ref.html
@@ -77,11 +77,11 @@
77 <th>d</th>
78 <th>n/a</th>
79 <td>
80 Legacy capability letter from Fossil's forebear <a
81 href="http://cvstrac.org/">CVSTrac</a>, which has no useful
82 meaning in Fossil due to the nature of its durable Merkle tree design. This
83 letter was assigned by default to Developer in repos created with
84 Fossil 2.10 or earlier, but it has no effect in current or past
85 versions of Fossil; we recommend that you remove it in case we
86 ever reuse this letter for another purpose. See <a
87 href="https://fossil-scm.org/forum/forumpost/43c78f4bef">this
88
--- www/checkin_names.wiki
+++ www/checkin_names.wiki
@@ -288,8 +288,8 @@
288288
# [#root | root:BRANCH]
289289
# [#merge-in | merge-in:BRANCH]
290290
# [#tag-ts | TAG:timestamp]
291291
# Full artifact hash or hash prefix.
292292
# Any other type of symbolic name that Fossil extracts from
293
- blockchain artifacts.
293
+ artifacts.
294294
295295
<div style="height:40em" id="this-space-intentionally-left-blank"></div>
296296
--- www/checkin_names.wiki
+++ www/checkin_names.wiki
@@ -288,8 +288,8 @@
288 # [#root | root:BRANCH]
289 # [#merge-in | merge-in:BRANCH]
290 # [#tag-ts | TAG:timestamp]
291 # Full artifact hash or hash prefix.
292 # Any other type of symbolic name that Fossil extracts from
293 blockchain artifacts.
294
295 <div style="height:40em" id="this-space-intentionally-left-blank"></div>
296
--- www/checkin_names.wiki
+++ www/checkin_names.wiki
@@ -288,8 +288,8 @@
288 # [#root | root:BRANCH]
289 # [#merge-in | merge-in:BRANCH]
290 # [#tag-ts | TAG:timestamp]
291 # Full artifact hash or hash prefix.
292 # Any other type of symbolic name that Fossil extracts from
293 artifacts.
294
295 <div style="height:40em" id="this-space-intentionally-left-blank"></div>
296
--- www/fileedit-page.md
+++ www/fileedit-page.md
@@ -56,11 +56,11 @@
5656
[xhr]: https://en.wikipedia.org/wiki/XMLHttpRequest
5757
5858
## `/fileedit` **Works by Creating Commits**
5959
6060
Thus any edits made via that page become a normal part of the
61
-repository's blockchain.
61
+repository.
6262
6363
## `/fileedit` is *Intended* for use with Embedded Docs
6464
6565
... and similar text files, and is most certainly
6666
**not intended for editing code**.
6767
--- www/fileedit-page.md
+++ www/fileedit-page.md
@@ -56,11 +56,11 @@
56 [xhr]: https://en.wikipedia.org/wiki/XMLHttpRequest
57
58 ## `/fileedit` **Works by Creating Commits**
59
60 Thus any edits made via that page become a normal part of the
61 repository's blockchain.
62
63 ## `/fileedit` is *Intended* for use with Embedded Docs
64
65 ... and similar text files, and is most certainly
66 **not intended for editing code**.
67
--- www/fileedit-page.md
+++ www/fileedit-page.md
@@ -56,11 +56,11 @@
56 [xhr]: https://en.wikipedia.org/wiki/XMLHttpRequest
57
58 ## `/fileedit` **Works by Creating Commits**
59
60 Thus any edits made via that page become a normal part of the
61 repository.
62
63 ## `/fileedit` is *Intended* for use with Embedded Docs
64
65 ... and similar text files, and is most certainly
66 **not intended for editing code**.
67
--- www/fossil-v-git.wiki
+++ www/fossil-v-git.wiki
@@ -230,11 +230,11 @@
230230
231231
The baseline data structures for Fossil and Git are the same, modulo
232232
formatting details. Both systems manage a
233233
[https://en.wikipedia.org/wiki/Directed_acyclic_graph | directed acyclic
234234
graph] (DAG) of [https://en.wikipedia.org/wiki/Merkle_tree | Merkle
235
-tree] / [./blockchain.md | block chain] structured check-in objects.
235
+tree] structured check-in objects.
236236
Check-ins are identified by a cryptographic hash of the check-in
237237
contents, and each check-in refers to its parent via <i>its</i> hash.
238238
239239
The difference is that Git stores its objects as individual files in the
240240
<tt>.git</tt> folder or compressed into bespoke
@@ -741,11 +741,11 @@
741741
repository immediately if successful, even though you haven't tested the
742742
change yet. It's possible to argue for such a design in a tool like Git
743743
which doesn't automatically push the change up to its parent, because
744744
you can still test the change before pushing local changes to the parent
745745
repo, but in the meantime you've made a durable change to your local Git
746
-repository's blockchain. You must do something drastic like <tt>git
746
+repository. You must do something drastic like <tt>git
747747
reset --hard</tt> to revert that rebase if it causes a problem. If you
748748
push your rebased local repo up to the parent without testing first,
749749
you've now committed the error on a public branch, effectively a
750750
violation of
751751
[https://www.atlassian.com/git/tutorials/merging-vs-rebasing#the-golden-rule-of-rebasing
@@ -759,11 +759,11 @@
759759
760760
Fossil cannot sensibly work that way because of its default-enabled
761761
autosync feature. Instead of jumping straight to the commit step, Fossil
762762
applies the proposed merge to the local working directory only,
763763
requiring a separate check-in step before the change is committed to the
764
-repository blockchain. This gives you a chance to test the change first,
764
+repository. This gives you a chance to test the change first,
765765
either manually or by running your software's automatic tests. (Ideally,
766766
both!)
767767
768768
Another difference is that because Fossil requires an explicit commit
769769
for a merge, it makes you give an explicit commit <i>message</i> for
770770
--- www/fossil-v-git.wiki
+++ www/fossil-v-git.wiki
@@ -230,11 +230,11 @@
230
231 The baseline data structures for Fossil and Git are the same, modulo
232 formatting details. Both systems manage a
233 [https://en.wikipedia.org/wiki/Directed_acyclic_graph | directed acyclic
234 graph] (DAG) of [https://en.wikipedia.org/wiki/Merkle_tree | Merkle
235 tree] / [./blockchain.md | block chain] structured check-in objects.
236 Check-ins are identified by a cryptographic hash of the check-in
237 contents, and each check-in refers to its parent via <i>its</i> hash.
238
239 The difference is that Git stores its objects as individual files in the
240 <tt>.git</tt> folder or compressed into bespoke
@@ -741,11 +741,11 @@
741 repository immediately if successful, even though you haven't tested the
742 change yet. It's possible to argue for such a design in a tool like Git
743 which doesn't automatically push the change up to its parent, because
744 you can still test the change before pushing local changes to the parent
745 repo, but in the meantime you've made a durable change to your local Git
746 repository's blockchain. You must do something drastic like <tt>git
747 reset --hard</tt> to revert that rebase if it causes a problem. If you
748 push your rebased local repo up to the parent without testing first,
749 you've now committed the error on a public branch, effectively a
750 violation of
751 [https://www.atlassian.com/git/tutorials/merging-vs-rebasing#the-golden-rule-of-rebasing
@@ -759,11 +759,11 @@
759
760 Fossil cannot sensibly work that way because of its default-enabled
761 autosync feature. Instead of jumping straight to the commit step, Fossil
762 applies the proposed merge to the local working directory only,
763 requiring a separate check-in step before the change is committed to the
764 repository blockchain. This gives you a chance to test the change first,
765 either manually or by running your software's automatic tests. (Ideally,
766 both!)
767
768 Another difference is that because Fossil requires an explicit commit
769 for a merge, it makes you give an explicit commit <i>message</i> for
770
--- www/fossil-v-git.wiki
+++ www/fossil-v-git.wiki
@@ -230,11 +230,11 @@
230
231 The baseline data structures for Fossil and Git are the same, modulo
232 formatting details. Both systems manage a
233 [https://en.wikipedia.org/wiki/Directed_acyclic_graph | directed acyclic
234 graph] (DAG) of [https://en.wikipedia.org/wiki/Merkle_tree | Merkle
235 tree] structured check-in objects.
236 Check-ins are identified by a cryptographic hash of the check-in
237 contents, and each check-in refers to its parent via <i>its</i> hash.
238
239 The difference is that Git stores its objects as individual files in the
240 <tt>.git</tt> folder or compressed into bespoke
@@ -741,11 +741,11 @@
741 repository immediately if successful, even though you haven't tested the
742 change yet. It's possible to argue for such a design in a tool like Git
743 which doesn't automatically push the change up to its parent, because
744 you can still test the change before pushing local changes to the parent
745 repo, but in the meantime you've made a durable change to your local Git
746 repository. You must do something drastic like <tt>git
747 reset --hard</tt> to revert that rebase if it causes a problem. If you
748 push your rebased local repo up to the parent without testing first,
749 you've now committed the error on a public branch, effectively a
750 violation of
751 [https://www.atlassian.com/git/tutorials/merging-vs-rebasing#the-golden-rule-of-rebasing
@@ -759,11 +759,11 @@
759
760 Fossil cannot sensibly work that way because of its default-enabled
761 autosync feature. Instead of jumping straight to the commit step, Fossil
762 applies the proposed merge to the local working directory only,
763 requiring a separate check-in step before the change is committed to the
764 repository. This gives you a chance to test the change first,
765 either manually or by running your software's automatic tests. (Ideally,
766 both!)
767
768 Another difference is that because Fossil requires an explicit commit
769 for a merge, it makes you give an explicit commit <i>message</i> for
770
--- www/mirrorlimitations.md
+++ www/mirrorlimitations.md
@@ -14,14 +14,14 @@
1414
as Wiki, Tickets, Technotes, and the Forum are not supported in Git,
1515
so those features are not included in an export.
1616
1717
Third-party Git based tooling may add some of these features (e.g.
1818
GitHub, GitLab) but because their data are not stored in the Git
19
-blockchain, there is no single destination for Fossil to convert its
19
+repository, there is no single destination for Fossil to convert its
2020
equivalent data *to*. For instance, Fossil tickets do not become GitHub
2121
issues, because that is a proprietary feature of GitHub separate from
22
-Git proper, stored outside the blockchain on the GitHub servers.
22
+Git proper, stored outside the repository on the GitHub servers.
2323
2424
You can also see the problem in its inverse case: you do not get a copy
2525
of your GitHub issues when cloning the Git repository. You *do* get the
2626
Fossil tickets, wiki, forum posts, etc. when cloning a remote Fossil
2727
repo.
@@ -29,14 +29,14 @@
2929
## (2) Cherrypick Merges
3030
3131
The Git client supports cherrypick merges but does not record the
3232
cherrypick parent(s).
3333
34
-Fossil tracks cherrypick merges in its blockchain and displays
34
+Fossil tracks cherrypick merges in its repository and displays
3535
cherrypicks in its timeline. (As an example, the dashed lines
3636
[here](/timeline?c=0a9f12ce6655b7a5) are cherrypicks.) Because Git does
37
-not have a way to represent this same information in its blockchain, the
37
+not have a way to represent this same information in its repository, the
3838
history of Fossil cherrypicks cannot be exported to Git, only their
3939
direct effects on the managed file data.
4040
4141
## (3) Named Branches
4242
@@ -73,11 +73,11 @@
7373
7474
## (5) Amendments To Check-ins
7575
7676
Check-ins are immutable in both Fossil and Git.
7777
However, Fossil has a mechanism by which tags can be added to
78
-its blockchain to provide after-the-fact corrections to prior check-ins.
78
+its repository to provide after-the-fact corrections to prior check-ins.
7979
8080
For example, tags can be added to check-ins that correct typos in the
8181
check-in comment. The original check-in is immutable and so the
8282
original comment is preserved in addition to the correction. But
8383
software that displays the check-ins knows to look for the comment-change
8484
--- www/mirrorlimitations.md
+++ www/mirrorlimitations.md
@@ -14,14 +14,14 @@
14 as Wiki, Tickets, Technotes, and the Forum are not supported in Git,
15 so those features are not included in an export.
16
17 Third-party Git based tooling may add some of these features (e.g.
18 GitHub, GitLab) but because their data are not stored in the Git
19 blockchain, there is no single destination for Fossil to convert its
20 equivalent data *to*. For instance, Fossil tickets do not become GitHub
21 issues, because that is a proprietary feature of GitHub separate from
22 Git proper, stored outside the blockchain on the GitHub servers.
23
24 You can also see the problem in its inverse case: you do not get a copy
25 of your GitHub issues when cloning the Git repository. You *do* get the
26 Fossil tickets, wiki, forum posts, etc. when cloning a remote Fossil
27 repo.
@@ -29,14 +29,14 @@
29 ## (2) Cherrypick Merges
30
31 The Git client supports cherrypick merges but does not record the
32 cherrypick parent(s).
33
34 Fossil tracks cherrypick merges in its blockchain and displays
35 cherrypicks in its timeline. (As an example, the dashed lines
36 [here](/timeline?c=0a9f12ce6655b7a5) are cherrypicks.) Because Git does
37 not have a way to represent this same information in its blockchain, the
38 history of Fossil cherrypicks cannot be exported to Git, only their
39 direct effects on the managed file data.
40
41 ## (3) Named Branches
42
@@ -73,11 +73,11 @@
73
74 ## (5) Amendments To Check-ins
75
76 Check-ins are immutable in both Fossil and Git.
77 However, Fossil has a mechanism by which tags can be added to
78 its blockchain to provide after-the-fact corrections to prior check-ins.
79
80 For example, tags can be added to check-ins that correct typos in the
81 check-in comment. The original check-in is immutable and so the
82 original comment is preserved in addition to the correction. But
83 software that displays the check-ins knows to look for the comment-change
84
--- www/mirrorlimitations.md
+++ www/mirrorlimitations.md
@@ -14,14 +14,14 @@
14 as Wiki, Tickets, Technotes, and the Forum are not supported in Git,
15 so those features are not included in an export.
16
17 Third-party Git based tooling may add some of these features (e.g.
18 GitHub, GitLab) but because their data are not stored in the Git
19 repository, there is no single destination for Fossil to convert its
20 equivalent data *to*. For instance, Fossil tickets do not become GitHub
21 issues, because that is a proprietary feature of GitHub separate from
22 Git proper, stored outside the repository on the GitHub servers.
23
24 You can also see the problem in its inverse case: you do not get a copy
25 of your GitHub issues when cloning the Git repository. You *do* get the
26 Fossil tickets, wiki, forum posts, etc. when cloning a remote Fossil
27 repo.
@@ -29,14 +29,14 @@
29 ## (2) Cherrypick Merges
30
31 The Git client supports cherrypick merges but does not record the
32 cherrypick parent(s).
33
34 Fossil tracks cherrypick merges in its repository and displays
35 cherrypicks in its timeline. (As an example, the dashed lines
36 [here](/timeline?c=0a9f12ce6655b7a5) are cherrypicks.) Because Git does
37 not have a way to represent this same information in its repository, the
38 history of Fossil cherrypicks cannot be exported to Git, only their
39 direct effects on the managed file data.
40
41 ## (3) Named Branches
42
@@ -73,11 +73,11 @@
73
74 ## (5) Amendments To Check-ins
75
76 Check-ins are immutable in both Fossil and Git.
77 However, Fossil has a mechanism by which tags can be added to
78 its repository to provide after-the-fact corrections to prior check-ins.
79
80 For example, tags can be added to check-ins that correct typos in the
81 check-in comment. The original check-in is immutable and so the
82 original comment is preserved in addition to the correction. But
83 software that displays the check-ins knows to look for the comment-change
84
+1 -1
--- www/mkindex.tcl
+++ www/mkindex.tcl
@@ -14,11 +14,11 @@
1414
alerts.md {Email Alerts And Notifications}
1515
antibot.wiki {Defense against Spiders and Bots}
1616
backoffice.md {The "Backoffice" mechanism of Fossil}
1717
backup.md {Backing Up a Remote Fossil Repository}
1818
blame.wiki {The Annotate/Blame Algorithm Of Fossil}
19
- blockchain.md {Fossil As Blockchain}
19
+ blockchain.md {Is Fossil A Blockchain?}
2020
branching.wiki {Branching, Forking, Merging, and Tagging}
2121
bugtheory.wiki {Bug Tracking In Fossil}
2222
build.wiki {Compiling and Installing Fossil}
2323
cap-theorem.md {Fossil and the CAP Theorem}
2424
caps/ {Administering User Capabilities}
2525
--- www/mkindex.tcl
+++ www/mkindex.tcl
@@ -14,11 +14,11 @@
14 alerts.md {Email Alerts And Notifications}
15 antibot.wiki {Defense against Spiders and Bots}
16 backoffice.md {The "Backoffice" mechanism of Fossil}
17 backup.md {Backing Up a Remote Fossil Repository}
18 blame.wiki {The Annotate/Blame Algorithm Of Fossil}
19 blockchain.md {Fossil As Blockchain}
20 branching.wiki {Branching, Forking, Merging, and Tagging}
21 bugtheory.wiki {Bug Tracking In Fossil}
22 build.wiki {Compiling and Installing Fossil}
23 cap-theorem.md {Fossil and the CAP Theorem}
24 caps/ {Administering User Capabilities}
25
--- www/mkindex.tcl
+++ www/mkindex.tcl
@@ -14,11 +14,11 @@
14 alerts.md {Email Alerts And Notifications}
15 antibot.wiki {Defense against Spiders and Bots}
16 backoffice.md {The "Backoffice" mechanism of Fossil}
17 backup.md {Backing Up a Remote Fossil Repository}
18 blame.wiki {The Annotate/Blame Algorithm Of Fossil}
19 blockchain.md {Is Fossil A Blockchain?}
20 branching.wiki {Branching, Forking, Merging, and Tagging}
21 bugtheory.wiki {Bug Tracking In Fossil}
22 build.wiki {Compiling and Installing Fossil}
23 cap-theorem.md {Fossil and the CAP Theorem}
24 caps/ {Administering User Capabilities}
25
--- www/permutedindex.html
+++ www/permutedindex.html
@@ -41,11 +41,11 @@
4141
<li><a href="backoffice.md">Backoffice mechanism of Fossil &mdash; The</a></li>
4242
<li><a href="fossil_prompt.wiki">Bash Prompt &mdash; Fossilized</a></li>
4343
<li><a href="whyusefossil.wiki"><b>Benefits Of Version Control</b></a></li>
4444
<li><a href="caps/admin-v-setup.md">Between Setup and Admin Users &mdash; Differences</a></li>
4545
<li><a href="hashpolicy.wiki">Between SHA1 and SHA3-256 &mdash; Hash Policy: Choosing</a></li>
46
-<li><a href="blockchain.md">Blockchain &mdash; Fossil As</a></li>
46
+<li><a href="blockchain.md">Blockchain? &mdash; Is Fossil A</a></li>
4747
<li><a href="antibot.wiki">Bots &mdash; Defense against Spiders and</a></li>
4848
<li><a href="private.wiki">Branches &mdash; Creating, Syncing, and Deleting Private</a></li>
4949
<li><a href="branching.wiki"><b>Branching, Forking, Merging, and Tagging</b></a></li>
5050
<li><a href="bugtheory.wiki"><b>Bug Tracking In Fossil</b></a></li>
5151
<li><a href="makefile.wiki">Build Process &mdash; The Fossil</a></li>
@@ -126,11 +126,10 @@
126126
<li><a href="image-format-vs-repo-size.md">Format vs Fossil Repo Size &mdash; Image</a></li>
127127
<li><a href="../../../md_rules">Formatting Rules &mdash; Markdown</a></li>
128128
<li><a href="../../../wiki_rules">Formatting Rules &mdash; Wiki</a></li>
129129
<li><a href="forum.wiki">Forums &mdash; Fossil</a></li>
130130
<li><a href="cap-theorem.md"><b>Fossil and the CAP Theorem</b></a></li>
131
-<li><a href="blockchain.md"><b>Fossil As Blockchain</b></a></li>
132131
<li><a href="changes.wiki"><b>Fossil Changelog</b></a></li>
133132
<li><a href="concepts.wiki"><b>Fossil Core Concepts</b></a></li>
134133
<li><a href="css-tricks.md"><b>Fossil CSS Tips and Tricks</b></a></li>
135134
<li><a href="delta_encoder_algorithm.wiki"><b>Fossil Delta Encoding Algorithm</b></a></li>
136135
<li><a href="delta_format.wiki"><b>Fossil Delta Format</b></a></li>
@@ -188,10 +187,11 @@
188187
<li><a href="build.wiki">Installing Fossil &mdash; Compiling and</a></li>
189188
<li><a href="fossil-from-msvc.wiki"><b>Integrating Fossil in the Microsoft Express 2010 IDE</b></a></li>
190189
<li><a href="selfcheck.wiki">Integrity Self Checks &mdash; Fossil Repository</a></li>
191190
<li><a href="webui.wiki">Interface &mdash; The Fossil Web</a></li>
192191
<li><a href="interwiki.md"><b>Interwiki Links</b></a></li>
192
+<li><a href="blockchain.md"><b>Is Fossil A Blockchain?</b></a></li>
193193
<li><a href="javascript.md">JavaScript in Fossil &mdash; Use of</a></li>
194194
<li><a href="th1.md">Language &mdash; The TH1 Scripting</a></li>
195195
<li><a href="copyright-release.html">License Agreement &mdash; Contributor</a></li>
196196
<li><a href="mirrorlimitations.md"><b>Limitations On Git Mirrors</b></a></li>
197197
<li><a href="interwiki.md">Links &mdash; Interwiki</a></li>
198198
--- www/permutedindex.html
+++ www/permutedindex.html
@@ -41,11 +41,11 @@
41 <li><a href="backoffice.md">Backoffice mechanism of Fossil &mdash; The</a></li>
42 <li><a href="fossil_prompt.wiki">Bash Prompt &mdash; Fossilized</a></li>
43 <li><a href="whyusefossil.wiki"><b>Benefits Of Version Control</b></a></li>
44 <li><a href="caps/admin-v-setup.md">Between Setup and Admin Users &mdash; Differences</a></li>
45 <li><a href="hashpolicy.wiki">Between SHA1 and SHA3-256 &mdash; Hash Policy: Choosing</a></li>
46 <li><a href="blockchain.md">Blockchain &mdash; Fossil As</a></li>
47 <li><a href="antibot.wiki">Bots &mdash; Defense against Spiders and</a></li>
48 <li><a href="private.wiki">Branches &mdash; Creating, Syncing, and Deleting Private</a></li>
49 <li><a href="branching.wiki"><b>Branching, Forking, Merging, and Tagging</b></a></li>
50 <li><a href="bugtheory.wiki"><b>Bug Tracking In Fossil</b></a></li>
51 <li><a href="makefile.wiki">Build Process &mdash; The Fossil</a></li>
@@ -126,11 +126,10 @@
126 <li><a href="image-format-vs-repo-size.md">Format vs Fossil Repo Size &mdash; Image</a></li>
127 <li><a href="../../../md_rules">Formatting Rules &mdash; Markdown</a></li>
128 <li><a href="../../../wiki_rules">Formatting Rules &mdash; Wiki</a></li>
129 <li><a href="forum.wiki">Forums &mdash; Fossil</a></li>
130 <li><a href="cap-theorem.md"><b>Fossil and the CAP Theorem</b></a></li>
131 <li><a href="blockchain.md"><b>Fossil As Blockchain</b></a></li>
132 <li><a href="changes.wiki"><b>Fossil Changelog</b></a></li>
133 <li><a href="concepts.wiki"><b>Fossil Core Concepts</b></a></li>
134 <li><a href="css-tricks.md"><b>Fossil CSS Tips and Tricks</b></a></li>
135 <li><a href="delta_encoder_algorithm.wiki"><b>Fossil Delta Encoding Algorithm</b></a></li>
136 <li><a href="delta_format.wiki"><b>Fossil Delta Format</b></a></li>
@@ -188,10 +187,11 @@
188 <li><a href="build.wiki">Installing Fossil &mdash; Compiling and</a></li>
189 <li><a href="fossil-from-msvc.wiki"><b>Integrating Fossil in the Microsoft Express 2010 IDE</b></a></li>
190 <li><a href="selfcheck.wiki">Integrity Self Checks &mdash; Fossil Repository</a></li>
191 <li><a href="webui.wiki">Interface &mdash; The Fossil Web</a></li>
192 <li><a href="interwiki.md"><b>Interwiki Links</b></a></li>
 
193 <li><a href="javascript.md">JavaScript in Fossil &mdash; Use of</a></li>
194 <li><a href="th1.md">Language &mdash; The TH1 Scripting</a></li>
195 <li><a href="copyright-release.html">License Agreement &mdash; Contributor</a></li>
196 <li><a href="mirrorlimitations.md"><b>Limitations On Git Mirrors</b></a></li>
197 <li><a href="interwiki.md">Links &mdash; Interwiki</a></li>
198
--- www/permutedindex.html
+++ www/permutedindex.html
@@ -41,11 +41,11 @@
41 <li><a href="backoffice.md">Backoffice mechanism of Fossil &mdash; The</a></li>
42 <li><a href="fossil_prompt.wiki">Bash Prompt &mdash; Fossilized</a></li>
43 <li><a href="whyusefossil.wiki"><b>Benefits Of Version Control</b></a></li>
44 <li><a href="caps/admin-v-setup.md">Between Setup and Admin Users &mdash; Differences</a></li>
45 <li><a href="hashpolicy.wiki">Between SHA1 and SHA3-256 &mdash; Hash Policy: Choosing</a></li>
46 <li><a href="blockchain.md">Blockchain? &mdash; Is Fossil A</a></li>
47 <li><a href="antibot.wiki">Bots &mdash; Defense against Spiders and</a></li>
48 <li><a href="private.wiki">Branches &mdash; Creating, Syncing, and Deleting Private</a></li>
49 <li><a href="branching.wiki"><b>Branching, Forking, Merging, and Tagging</b></a></li>
50 <li><a href="bugtheory.wiki"><b>Bug Tracking In Fossil</b></a></li>
51 <li><a href="makefile.wiki">Build Process &mdash; The Fossil</a></li>
@@ -126,11 +126,10 @@
126 <li><a href="image-format-vs-repo-size.md">Format vs Fossil Repo Size &mdash; Image</a></li>
127 <li><a href="../../../md_rules">Formatting Rules &mdash; Markdown</a></li>
128 <li><a href="../../../wiki_rules">Formatting Rules &mdash; Wiki</a></li>
129 <li><a href="forum.wiki">Forums &mdash; Fossil</a></li>
130 <li><a href="cap-theorem.md"><b>Fossil and the CAP Theorem</b></a></li>
 
131 <li><a href="changes.wiki"><b>Fossil Changelog</b></a></li>
132 <li><a href="concepts.wiki"><b>Fossil Core Concepts</b></a></li>
133 <li><a href="css-tricks.md"><b>Fossil CSS Tips and Tricks</b></a></li>
134 <li><a href="delta_encoder_algorithm.wiki"><b>Fossil Delta Encoding Algorithm</b></a></li>
135 <li><a href="delta_format.wiki"><b>Fossil Delta Format</b></a></li>
@@ -188,10 +187,11 @@
187 <li><a href="build.wiki">Installing Fossil &mdash; Compiling and</a></li>
188 <li><a href="fossil-from-msvc.wiki"><b>Integrating Fossil in the Microsoft Express 2010 IDE</b></a></li>
189 <li><a href="selfcheck.wiki">Integrity Self Checks &mdash; Fossil Repository</a></li>
190 <li><a href="webui.wiki">Interface &mdash; The Fossil Web</a></li>
191 <li><a href="interwiki.md"><b>Interwiki Links</b></a></li>
192 <li><a href="blockchain.md"><b>Is Fossil A Blockchain?</b></a></li>
193 <li><a href="javascript.md">JavaScript in Fossil &mdash; Use of</a></li>
194 <li><a href="th1.md">Language &mdash; The TH1 Scripting</a></li>
195 <li><a href="copyright-release.html">License Agreement &mdash; Contributor</a></li>
196 <li><a href="mirrorlimitations.md"><b>Limitations On Git Mirrors</b></a></li>
197 <li><a href="interwiki.md">Links &mdash; Interwiki</a></li>
198
--- www/shunning.wiki
+++ www/shunning.wiki
@@ -32,12 +32,12 @@
3232
some alternatives that usually suffice, which don't damage the project's
3333
fossil record:
3434
3535
<ul>
3636
<li><p>When a forum post or wiki article is "deleted," what actually
37
- happens is that a new empty version is added to the Fossil
38
- [./blockchain.md | block chain]. The web interface interprets this
37
+ happens is that a new empty version is added to the Fossil repository.
38
+ The web interface interprets this
3939
as "deleted," but the prior version remains available if you go
4040
digging for it.</p></li>
4141
4242
<li><p>When you close a ticket, it's marked in a way that causes it
4343
to not show up in the normal ticket reports. You usually want to
4444
--- www/shunning.wiki
+++ www/shunning.wiki
@@ -32,12 +32,12 @@
32 some alternatives that usually suffice, which don't damage the project's
33 fossil record:
34
35 <ul>
36 <li><p>When a forum post or wiki article is "deleted," what actually
37 happens is that a new empty version is added to the Fossil
38 [./blockchain.md | block chain]. The web interface interprets this
39 as "deleted," but the prior version remains available if you go
40 digging for it.</p></li>
41
42 <li><p>When you close a ticket, it's marked in a way that causes it
43 to not show up in the normal ticket reports. You usually want to
44
--- www/shunning.wiki
+++ www/shunning.wiki
@@ -32,12 +32,12 @@
32 some alternatives that usually suffice, which don't damage the project's
33 fossil record:
34
35 <ul>
36 <li><p>When a forum post or wiki article is "deleted," what actually
37 happens is that a new empty version is added to the Fossil repository.
38 The web interface interprets this
39 as "deleted," but the prior version remains available if you go
40 digging for it.</p></li>
41
42 <li><p>When you close a ticket, it's marked in a way that causes it
43 to not show up in the normal ticket reports. You usually want to
44

Keyboard Shortcuts

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