Fossil SCM

Moved the "No Third-Party JavaScript in Fossil" section of javascript.md down into the Q&A "debate" section. Also reworked some of the following question's answer to the C vs JavaScript matter.

wyoung 2020-08-19 23:38 js-policy-doc
Commit 48ef633333c52ea23f00d576e58fa1bbc2cd97868d53c94985deb2b37c920f69
1 file changed +29 -31
+29 -31
--- www/javascript.md
+++ www/javascript.md
@@ -66,27 +66,10 @@
6666
all of this; you can then override UBO’s stock rules as needed.
6767
6868
[ns]: https://noscript.net/
6969
[ub]: https://github.com/gorhill/uBlock/
7070
71
-
72
-## <a id="3pjs"></a>No Third-Party JavaScript in Fossil
73
-
74
-Fossil does not use any third-party JavaScript libraries, not even very
75
-common ones like jQuery. Every bit of JavaScript served by the stock
76
-version of Fossil was written specifically for the Fossil project and is
77
-stored [in its code repository](https://fossil-scm.org/fossil/file).
78
-
79
-Therefore, if you want to hack on the JavaScript code served by Fossil
80
-and mechanisms like [skin editing][cs] don’t suffice for your purposes,
81
-you can hack on the JavaScript in your local instance directly, just as
82
-you can hack on its C, SQL, and Tcl code. Fossil is free and open source
83
-software, under [a single license][2cbsd].
84
-
85
-[2cbsd]: https://fossil-scm.org/home/doc/trunk/COPYRIGHT-BSD2.txt
86
-[cs]: ./customskin.md
87
-
8871
8972
## <a id="snoop"></a>Fossil Does Not Snoop On You
9073
9174
There is no tracking or other snooping technology in Fossil other than
9275
that necessary for basic security, such as IP address logging on
@@ -172,14 +155,34 @@
172155
their engines fast and competitive.
173156
174157
Once the scripts are cached, Ajax based page updates are faster than
175158
the alternative.
176159
177
-3. “**JavaScript is insecure.**”
160
+3. <a id="3pjs"></a>”**Third-party JavaScript cannot be trusted.**”
161
+
162
+ Fossil does not use any third-party JavaScript libraries, not even
163
+ very common ones like jQuery. Every bit of JavaScript served by the
164
+ stock version of Fossil was written specifically for the Fossil
165
+ project and is stored [in its code repository][fsrc].
166
+
167
+ Therefore, if you want to hack on the JavaScript code served by
168
+ Fossil and mechanisms like [skin editing][cskin] don’t suffice for your
169
+ purposes, you can hack on the JavaScript in your local instance
170
+ directly, just as you can hack on its C, SQL, and Tcl code. Fossil
171
+ is free and open source software, under [a single license][2cbsd].
172
+
173
+4. “**JavaScript is fundamentally insecure.**”
178174
179175
JavaScript is historically associated with some nefarious uses, but
180
- the question is not whether JavaScript is itself evil, it is whether
176
+ if we wish to have more features in Fossil, the alternative is to
177
+ add more C code to the Fossil binary, a language with *far more*
178
+ historical security problems associated with it.
179
+
180
+ Does it not make sense to place as much trust in Fossil’s JavaScript
181
+ code as in its C code?
182
+
183
+ The question is not whether JavaScript is itself evil, it is whether
181184
its *authors* are evil. *Every byte* of JavaScript code used within
182185
the Fossil UI is:
183186
184187
* ...written by the Fossil developers, vetted by their peers.
185188
@@ -189,16 +192,10 @@
189192
* ...compiled directly into the `fossil` binary in a
190193
non-obfuscated form during the build process, so there are no
191194
third-party servers delivering mysterious, obfuscated JavaScript
192195
code to the user.
193196
194
- C, Fossil's main implementation language, has been associated with
195
- far more security problems than JavaScript, yet the apparent
196
- alternative to reducing the amount of JavaScript in Fossil is to
197
- increase the amount of C code. Does it not make sense to place as
198
- much trust in Fossil’s JavaScript code as in its C code?
199
-
200197
Local administrators can [modify the repository’s skin][cskin] to
201198
inject additional JavaScript code into pages served by their Fossil
202199
server. A typical case is to add a syntax highlighter like
203200
[Prism.js][pjs] or [highlightjs][hljs] to the local repository. At
204201
that point, your trust concern is not with Fossil’s use of
@@ -208,20 +205,20 @@
208205
prohibits execution of JavaScript code which is delivered from
209206
anywhere but the Fossil server which delivers the page. A local
210207
administrator can change this CSP, but again this comes down to a
211208
matter of trust with the administrator, not with Fossil itself.
212209
213
-4. “**Cross-browser compatibility is poor.**”
210
+5. “**Cross-browser compatibility is poor.**”
214211
215212
It most certainly was in the first decade or so of JavaScript’s
216213
lifetime, resulting in the creation of powerful libraries like
217214
jQuery to patch over the incompatibilities. Over time, the need for
218215
such libraries has dropped as browser vendors have fixed the
219216
incompatibilities. Cross-browser JavaScript compatibility issues
220217
which affect web developers are, by and large, a thing of the past.
221218
222
-5. “**Fossil UI works fine without JavaScript.**”
219
+6. “**Fossil UI works fine without JavaScript.**”
223220
224221
While this is true today, and we have no philosophical objection to
225222
it remaining true, we do not intend to limit ourselves to only those
226223
features that can be created without JavaScript. The mere
227224
availability of alternatives is not a good justification for holding
@@ -230,11 +227,11 @@
230227
The no-JS case is a [minority position](#stats), so those that want
231228
Fossil to have no-JS alternatives and graceful fallbacks will need
232229
to get involved with the development if they want this state of
233230
affairs to continue.
234231
235
-6. <a id="stats"></a>“**A large number of users run without JavaScript enabled.**”
232
+7. <a id="stats"></a>“**A large number of users run without JavaScript enabled.**”
236233
237234
That’s not what web audience measurements say:
238235
239236
* [What percentage of browsers with javascript disabled?][s1]
240237
* [How many people are missing out on JavaScript enhancement?][s2]
@@ -253,26 +250,27 @@
253250
run [powerful conditional blocking plugins](#block) in their
254251
browsers, rather than block JavaScript entirely. We suspect that
255252
between these two forces, the number of no-JS purists among Fossil’s
256253
user base is still a tiny minority.
257254
258
-7. “**My browser doesn’t even *have* a JavaScript interpreter.**”
255
+8. “**My browser doesn’t even *have* a JavaScript interpreter.**”
259256
260257
The Fossil open source project has no full-time developers, and only
261258
a few of these part-timers are responsible for the bulk of the code
262259
in Fossil. If you want Fossil to support such niche use cases, then
263260
you will have to [get involved with its development][cg]; it’s
264261
*your* uncommon itch.
265262
263
+[2cbsd]: https://fossil-scm.org/home/doc/trunk/COPYRIGHT-BSD2.txt
266264
[cskin]: ./customskin.md
267265
[dcsp]: ./defcsp.md
268266
[fcgi]: /help?cmd=cgi
269267
[ffor]: https://fossil-scm.org/forum/
270268
[flic]: /doc/trunk/COPYRIGHT-BSD2.txt
269
+[fshome]: /doc/trunk/www/server/
271270
[fsrc]: https://fossil-scm.org/home/file/src
272271
[fsrv]: /help?cmd=server
273
-[fshome]: /doc/trunk/www/server/
274272
[hljs]: https://fossil-scm.org/forum/forumpost/9150bc22ca
275273
[pjs]: https://fossil-scm.org/forum/forumpost/1198651c6d
276274
[s1]: https://blockmetry.com/blog/javascript-disabled
277275
[s2]: https://gds.blog.gov.uk/2013/10/21/how-many-people-are-missing-out-on-javascript-enhancement/
278276
[s3]: https://w3techs.com/technologies/overview/client_side_language/all
@@ -517,11 +515,11 @@
517515
518516
_Graceful Fallback:_ Clicking the hamburger menu button with JavaScript
519517
disabled will take you to the `/sitemap` page instead of showing a
520518
simplified version of that page’s content in a drop-down.
521519
522
-_Workaround:_ You can remove this button by [editing the skin][cs]
520
+_Workaround:_ You can remove this button by [editing the skin][cskin]
523521
header.
524522
525523
526524
### <a id="clock"></a>Clock
527525
528526
--- www/javascript.md
+++ www/javascript.md
@@ -66,27 +66,10 @@
66 all of this; you can then override UBO’s stock rules as needed.
67
68 [ns]: https://noscript.net/
69 [ub]: https://github.com/gorhill/uBlock/
70
71
72 ## <a id="3pjs"></a>No Third-Party JavaScript in Fossil
73
74 Fossil does not use any third-party JavaScript libraries, not even very
75 common ones like jQuery. Every bit of JavaScript served by the stock
76 version of Fossil was written specifically for the Fossil project and is
77 stored [in its code repository](https://fossil-scm.org/fossil/file).
78
79 Therefore, if you want to hack on the JavaScript code served by Fossil
80 and mechanisms like [skin editing][cs] don’t suffice for your purposes,
81 you can hack on the JavaScript in your local instance directly, just as
82 you can hack on its C, SQL, and Tcl code. Fossil is free and open source
83 software, under [a single license][2cbsd].
84
85 [2cbsd]: https://fossil-scm.org/home/doc/trunk/COPYRIGHT-BSD2.txt
86 [cs]: ./customskin.md
87
88
89 ## <a id="snoop"></a>Fossil Does Not Snoop On You
90
91 There is no tracking or other snooping technology in Fossil other than
92 that necessary for basic security, such as IP address logging on
@@ -172,14 +155,34 @@
172 their engines fast and competitive.
173
174 Once the scripts are cached, Ajax based page updates are faster than
175 the alternative.
176
177 3. “**JavaScript is insecure.**”
 
 
 
 
 
 
 
 
 
 
 
 
 
178
179 JavaScript is historically associated with some nefarious uses, but
180 the question is not whether JavaScript is itself evil, it is whether
 
 
 
 
 
 
 
181 its *authors* are evil. *Every byte* of JavaScript code used within
182 the Fossil UI is:
183
184 * ...written by the Fossil developers, vetted by their peers.
185
@@ -189,16 +192,10 @@
189 * ...compiled directly into the `fossil` binary in a
190 non-obfuscated form during the build process, so there are no
191 third-party servers delivering mysterious, obfuscated JavaScript
192 code to the user.
193
194 C, Fossil's main implementation language, has been associated with
195 far more security problems than JavaScript, yet the apparent
196 alternative to reducing the amount of JavaScript in Fossil is to
197 increase the amount of C code. Does it not make sense to place as
198 much trust in Fossil’s JavaScript code as in its C code?
199
200 Local administrators can [modify the repository’s skin][cskin] to
201 inject additional JavaScript code into pages served by their Fossil
202 server. A typical case is to add a syntax highlighter like
203 [Prism.js][pjs] or [highlightjs][hljs] to the local repository. At
204 that point, your trust concern is not with Fossil’s use of
@@ -208,20 +205,20 @@
208 prohibits execution of JavaScript code which is delivered from
209 anywhere but the Fossil server which delivers the page. A local
210 administrator can change this CSP, but again this comes down to a
211 matter of trust with the administrator, not with Fossil itself.
212
213 4. “**Cross-browser compatibility is poor.**”
214
215 It most certainly was in the first decade or so of JavaScript’s
216 lifetime, resulting in the creation of powerful libraries like
217 jQuery to patch over the incompatibilities. Over time, the need for
218 such libraries has dropped as browser vendors have fixed the
219 incompatibilities. Cross-browser JavaScript compatibility issues
220 which affect web developers are, by and large, a thing of the past.
221
222 5. “**Fossil UI works fine without JavaScript.**”
223
224 While this is true today, and we have no philosophical objection to
225 it remaining true, we do not intend to limit ourselves to only those
226 features that can be created without JavaScript. The mere
227 availability of alternatives is not a good justification for holding
@@ -230,11 +227,11 @@
230 The no-JS case is a [minority position](#stats), so those that want
231 Fossil to have no-JS alternatives and graceful fallbacks will need
232 to get involved with the development if they want this state of
233 affairs to continue.
234
235 6. <a id="stats"></a>“**A large number of users run without JavaScript enabled.**”
236
237 That’s not what web audience measurements say:
238
239 * [What percentage of browsers with javascript disabled?][s1]
240 * [How many people are missing out on JavaScript enhancement?][s2]
@@ -253,26 +250,27 @@
253 run [powerful conditional blocking plugins](#block) in their
254 browsers, rather than block JavaScript entirely. We suspect that
255 between these two forces, the number of no-JS purists among Fossil’s
256 user base is still a tiny minority.
257
258 7. “**My browser doesn’t even *have* a JavaScript interpreter.**”
259
260 The Fossil open source project has no full-time developers, and only
261 a few of these part-timers are responsible for the bulk of the code
262 in Fossil. If you want Fossil to support such niche use cases, then
263 you will have to [get involved with its development][cg]; it’s
264 *your* uncommon itch.
265
 
266 [cskin]: ./customskin.md
267 [dcsp]: ./defcsp.md
268 [fcgi]: /help?cmd=cgi
269 [ffor]: https://fossil-scm.org/forum/
270 [flic]: /doc/trunk/COPYRIGHT-BSD2.txt
 
271 [fsrc]: https://fossil-scm.org/home/file/src
272 [fsrv]: /help?cmd=server
273 [fshome]: /doc/trunk/www/server/
274 [hljs]: https://fossil-scm.org/forum/forumpost/9150bc22ca
275 [pjs]: https://fossil-scm.org/forum/forumpost/1198651c6d
276 [s1]: https://blockmetry.com/blog/javascript-disabled
277 [s2]: https://gds.blog.gov.uk/2013/10/21/how-many-people-are-missing-out-on-javascript-enhancement/
278 [s3]: https://w3techs.com/technologies/overview/client_side_language/all
@@ -517,11 +515,11 @@
517
518 _Graceful Fallback:_ Clicking the hamburger menu button with JavaScript
519 disabled will take you to the `/sitemap` page instead of showing a
520 simplified version of that page’s content in a drop-down.
521
522 _Workaround:_ You can remove this button by [editing the skin][cs]
523 header.
524
525
526 ### <a id="clock"></a>Clock
527
528
--- www/javascript.md
+++ www/javascript.md
@@ -66,27 +66,10 @@
66 all of this; you can then override UBO’s stock rules as needed.
67
68 [ns]: https://noscript.net/
69 [ub]: https://github.com/gorhill/uBlock/
70
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
72 ## <a id="snoop"></a>Fossil Does Not Snoop On You
73
74 There is no tracking or other snooping technology in Fossil other than
75 that necessary for basic security, such as IP address logging on
@@ -172,14 +155,34 @@
155 their engines fast and competitive.
156
157 Once the scripts are cached, Ajax based page updates are faster than
158 the alternative.
159
160 3. <a id="3pjs"></a>”**Third-party JavaScript cannot be trusted.**”
161
162 Fossil does not use any third-party JavaScript libraries, not even
163 very common ones like jQuery. Every bit of JavaScript served by the
164 stock version of Fossil was written specifically for the Fossil
165 project and is stored [in its code repository][fsrc].
166
167 Therefore, if you want to hack on the JavaScript code served by
168 Fossil and mechanisms like [skin editing][cskin] don’t suffice for your
169 purposes, you can hack on the JavaScript in your local instance
170 directly, just as you can hack on its C, SQL, and Tcl code. Fossil
171 is free and open source software, under [a single license][2cbsd].
172
173 4. “**JavaScript is fundamentally insecure.**”
174
175 JavaScript is historically associated with some nefarious uses, but
176 if we wish to have more features in Fossil, the alternative is to
177 add more C code to the Fossil binary, a language with *far more*
178 historical security problems associated with it.
179
180 Does it not make sense to place as much trust in Fossil’s JavaScript
181 code as in its C code?
182
183 The question is not whether JavaScript is itself evil, it is whether
184 its *authors* are evil. *Every byte* of JavaScript code used within
185 the Fossil UI is:
186
187 * ...written by the Fossil developers, vetted by their peers.
188
@@ -189,16 +192,10 @@
192 * ...compiled directly into the `fossil` binary in a
193 non-obfuscated form during the build process, so there are no
194 third-party servers delivering mysterious, obfuscated JavaScript
195 code to the user.
196
 
 
 
 
 
 
197 Local administrators can [modify the repository’s skin][cskin] to
198 inject additional JavaScript code into pages served by their Fossil
199 server. A typical case is to add a syntax highlighter like
200 [Prism.js][pjs] or [highlightjs][hljs] to the local repository. At
201 that point, your trust concern is not with Fossil’s use of
@@ -208,20 +205,20 @@
205 prohibits execution of JavaScript code which is delivered from
206 anywhere but the Fossil server which delivers the page. A local
207 administrator can change this CSP, but again this comes down to a
208 matter of trust with the administrator, not with Fossil itself.
209
210 5. “**Cross-browser compatibility is poor.**”
211
212 It most certainly was in the first decade or so of JavaScript’s
213 lifetime, resulting in the creation of powerful libraries like
214 jQuery to patch over the incompatibilities. Over time, the need for
215 such libraries has dropped as browser vendors have fixed the
216 incompatibilities. Cross-browser JavaScript compatibility issues
217 which affect web developers are, by and large, a thing of the past.
218
219 6. “**Fossil UI works fine without JavaScript.**”
220
221 While this is true today, and we have no philosophical objection to
222 it remaining true, we do not intend to limit ourselves to only those
223 features that can be created without JavaScript. The mere
224 availability of alternatives is not a good justification for holding
@@ -230,11 +227,11 @@
227 The no-JS case is a [minority position](#stats), so those that want
228 Fossil to have no-JS alternatives and graceful fallbacks will need
229 to get involved with the development if they want this state of
230 affairs to continue.
231
232 7. <a id="stats"></a>“**A large number of users run without JavaScript enabled.**”
233
234 That’s not what web audience measurements say:
235
236 * [What percentage of browsers with javascript disabled?][s1]
237 * [How many people are missing out on JavaScript enhancement?][s2]
@@ -253,26 +250,27 @@
250 run [powerful conditional blocking plugins](#block) in their
251 browsers, rather than block JavaScript entirely. We suspect that
252 between these two forces, the number of no-JS purists among Fossil’s
253 user base is still a tiny minority.
254
255 8. “**My browser doesn’t even *have* a JavaScript interpreter.**”
256
257 The Fossil open source project has no full-time developers, and only
258 a few of these part-timers are responsible for the bulk of the code
259 in Fossil. If you want Fossil to support such niche use cases, then
260 you will have to [get involved with its development][cg]; it’s
261 *your* uncommon itch.
262
263 [2cbsd]: https://fossil-scm.org/home/doc/trunk/COPYRIGHT-BSD2.txt
264 [cskin]: ./customskin.md
265 [dcsp]: ./defcsp.md
266 [fcgi]: /help?cmd=cgi
267 [ffor]: https://fossil-scm.org/forum/
268 [flic]: /doc/trunk/COPYRIGHT-BSD2.txt
269 [fshome]: /doc/trunk/www/server/
270 [fsrc]: https://fossil-scm.org/home/file/src
271 [fsrv]: /help?cmd=server
 
272 [hljs]: https://fossil-scm.org/forum/forumpost/9150bc22ca
273 [pjs]: https://fossil-scm.org/forum/forumpost/1198651c6d
274 [s1]: https://blockmetry.com/blog/javascript-disabled
275 [s2]: https://gds.blog.gov.uk/2013/10/21/how-many-people-are-missing-out-on-javascript-enhancement/
276 [s3]: https://w3techs.com/technologies/overview/client_side_language/all
@@ -517,11 +515,11 @@
515
516 _Graceful Fallback:_ Clicking the hamburger menu button with JavaScript
517 disabled will take you to the `/sitemap` page instead of showing a
518 simplified version of that page’s content in a drop-down.
519
520 _Workaround:_ You can remove this button by [editing the skin][cskin]
521 header.
522
523
524 ### <a id="clock"></a>Clock
525
526

Keyboard Shortcuts

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