64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
basis, whereas uBlock Origin delegates those choices to a group of
motivated volunteers who maintain whitelists and blacklists to control
all of this; you can then override UBO’s stock rules as needed.
[ns]: https://noscript.net/
[ub]: https://github.com/gorhill/uBlock/
## <a id="stats"></a>How Many Users Run with JavaScript Disabled Anyway?
There are several studies that have directly measured the web audience
to answer this question:
* [What percentage of browsers with javascript disabled?][s1]
* [How many people are missing out on JavaScript enhancement?][s2]
* [Just how many web users really disable cookies or JavaScript?][s3]
Our sense of this data is that only about 0.2% of web users had
JavaScript disabled while participating in these studies.
The Fossil user community is not typical of the wider web, but if we
were able to comprehensively survey our users, we’d expect to find an
interesting dichotomy. Because Fossil is targeted at software
developers, who in turn are more likely to be power-users, we’d expect
to find Fossil users to be more in favor of some amount of JavaScript
blocking than the average web user. Yet, we’d also expect to find that
our user base has a disproportionately high number who run [powerful
conditional blocking plugins](#block) in their browsers, rather than
block JavaScript entirely. We suspect that between these two forces, the number
of no-JS purists among Fossil’s user base is still a tiny minority.
[s1]: https://blockmetry.com/blog/javascript-disabled
[s2]: https://gds.blog.gov.uk/2013/10/21/how-many-people-are-missing-out-on-javascript-enhancement/
[s3]: https://w3techs.com/technologies/overview/client_side_language/all
## <a id="3pjs"></a>No Third-Party JavaScript in Fossil
Fossil does not use any third-party JavaScript libraries, not even very
common ones like jQuery. Every bit of JavaScript served by the stock
version of Fossil was written specifically for the Fossil project and is
stored [in its code repository](https://fossil-scm.org/fossil/file).
|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
|
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
basis, whereas uBlock Origin delegates those choices to a group of
motivated volunteers who maintain whitelists and blacklists to control
all of this; you can then override UBO’s stock rules as needed.
[ns]: https://noscript.net/
[ub]: https://github.com/gorhill/uBlock/
## <a id="3pjs"></a>No Third-Party JavaScript in Fossil
Fossil does not use any third-party JavaScript libraries, not even very
common ones like jQuery. Every bit of JavaScript served by the stock
version of Fossil was written specifically for the Fossil project and is
stored [in its code repository](https://fossil-scm.org/fossil/file).
|
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
|
## <a id="debate"></a>Arguments Against JavaScript & Our Rebuttals
There many common arguments against the use of JavaScript. Rather than
rehash these same arguments on the [forum][ffor], we distill the common
ones we’ve heard before and give our stock answers to them here:
1. "**It increases the size of the page download.**"
The heaviest such pages served by Fossil only have about 8 kB of
compressed JavaScript. (You have to go out of your way to get Fossil
to serve uncompressed pages.) This is negligible, even over very
slow data connnections. If you are still somehow on a 56 kbit/sec
analog telephone modem, this extra script code would download in
about a second.
|
|
|
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
## <a id="debate"></a>Arguments Against JavaScript & Our Rebuttals
There many common arguments against the use of JavaScript. Rather than
rehash these same arguments on the [forum][ffor], we distill the common
ones we’ve heard before and give our stock answers to them here:
1. “**It increases the size of the page download.**”
The heaviest such pages served by Fossil only have about 8 kB of
compressed JavaScript. (You have to go out of your way to get Fossil
to serve uncompressed pages.) This is negligible, even over very
slow data connnections. If you are still somehow on a 56 kbit/sec
analog telephone modem, this extra script code would download in
about a second.
|
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
|
transfer a partial Ajax page load than reload the entire page, the
aggregate cost of such pages is typically *lower* than the older
methods based on HTTP POST with a full server round-trip. You can
expect to recover the cost of the initial page load in 1-2
round-trips. If we were to double the amount of JavaScript code, the
payoff time would increase to 2-4 round-trips.
2. "**JavaScript is slow.**"
It *was*, before September 2008. Google's introduction of [their V8
JavaScript engine][v8] taught the world that JavaScript need not be
slow. This competitive pressure caused the other common JavaScript
interpreters to either improve or be replaced by one of the engines
that did improve to approach V8’s speed.
Nowadays JavaScript is, as a rule, astoundingly fast. As the world
continues to move more and more to web-based applications and
services, JavaScript engine developers have ample motivation to keep
their engines fast and competitive.
Once the scripts are cached, Ajax based page updates are faster than
the alternative.
3. "**JavaScript is insecure.**"
JavaScript is historically associated with some nefarious uses, but
the question is not whether JavaScript is itself evil, it is whether
its *authors* are evil. *Every byte* of JavaScript code used within
the Fossil UI is:
* ...written by the Fossil developers, vetted by their peers.
|
|
|
|
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
|
transfer a partial Ajax page load than reload the entire page, the
aggregate cost of such pages is typically *lower* than the older
methods based on HTTP POST with a full server round-trip. You can
expect to recover the cost of the initial page load in 1-2
round-trips. If we were to double the amount of JavaScript code, the
payoff time would increase to 2-4 round-trips.
2. “**JavaScript is slow.**”
It *was*, before September 2008. Google's introduction of [their V8
JavaScript engine][v8] taught the world that JavaScript need not be
slow. This competitive pressure caused the other common JavaScript
interpreters to either improve or be replaced by one of the engines
that did improve to approach V8’s speed.
Nowadays JavaScript is, as a rule, astoundingly fast. As the world
continues to move more and more to web-based applications and
services, JavaScript engine developers have ample motivation to keep
their engines fast and competitive.
Once the scripts are cached, Ajax based page updates are faster than
the alternative.
3. “**JavaScript is insecure.**”
JavaScript is historically associated with some nefarious uses, but
the question is not whether JavaScript is itself evil, it is whether
its *authors* are evil. *Every byte* of JavaScript code used within
the Fossil UI is:
* ...written by the Fossil developers, vetted by their peers.
|
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
|
Fossil's [default content security policy][dcsp] (CSP)
prohibits execution of JavaScript code which is delivered from
anywhere but the Fossil server which delivers the page. A local
administrator can change this CSP, but again this comes down to a
matter of trust with the administrator, not with Fossil itself.
4. "**Cross-browser compatibility is poor.**"
It most certainly was in the first decade or so of JavaScript’s
lifetime, resulting in the creation of powerful libraries like
jQuery to patch over the incompatibilities. Over time, the need for
such libraries has dropped as browser vendors have fixed the
incompatibilities. Cross-browser JavaScript compatibility issues
which affect web developers are, by and large, a thing of the past.
5. "**Fossil UI works fine without JavaScript.**"
While this is true today, and we have no philosophical objection to
it remaining true, we do not intend to limit ourselves to only those
features that can be created without JavaScript. The mere
availability of alternatives is not a good justification for holding
back on notable improvements when they're within easy reach.
The no-JS case is a [minority position](#stats), so those that want
Fossil to have no-JS alternatives and graceful fallbacks will need
to get involved with the development if they want this state of
affairs to continue.
6. "**My browser doesn’t have a JavaScript interpreter.**"
The Fossil open source project has no full-time developers, and only
a few of these part-timers are responsible for the bulk of the code
in Fossil. If you want Fossil to support such niche use cases, then
you will have to [get involved with its development][cg]; it’s
*your* uncommon itch.
[cskin]: ./customskin.md
[dcsp]: ./defcsp.md
[fcgi]: /help?cmd=cgi
[ffor]: https://fossil-scm.org/forum/
[flic]: /doc/trunk/COPYRIGHT-BSD2.txt
[fsrc]: https://fossil-scm.org/home/file/src
[fsrv]: /help?cmd=server
[fshome]: /doc/trunk/www/server/
[hljs]: https://fossil-scm.org/forum/forumpost/9150bc22ca
[pjs]: https://fossil-scm.org/forum/forumpost/1198651c6d
[v8]: https://en.wikipedia.org/wiki/V8_(JavaScript_engine)
----
## <a id="uses"></a>Places Where Fossil’s Web UI Uses JavaScript
|
|
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
>
>
|
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
|
Fossil's [default content security policy][dcsp] (CSP)
prohibits execution of JavaScript code which is delivered from
anywhere but the Fossil server which delivers the page. A local
administrator can change this CSP, but again this comes down to a
matter of trust with the administrator, not with Fossil itself.
4. “**Cross-browser compatibility is poor.**”
It most certainly was in the first decade or so of JavaScript’s
lifetime, resulting in the creation of powerful libraries like
jQuery to patch over the incompatibilities. Over time, the need for
such libraries has dropped as browser vendors have fixed the
incompatibilities. Cross-browser JavaScript compatibility issues
which affect web developers are, by and large, a thing of the past.
5. “**Fossil UI works fine without JavaScript.**”
While this is true today, and we have no philosophical objection to
it remaining true, we do not intend to limit ourselves to only those
features that can be created without JavaScript. The mere
availability of alternatives is not a good justification for holding
back on notable improvements when they're within easy reach.
The no-JS case is a [minority position](#stats), so those that want
Fossil to have no-JS alternatives and graceful fallbacks will need
to get involved with the development if they want this state of
affairs to continue.
6. <a id="stats"></a>“**A large number of users run without JavaScript enabled.**”
That’s not what web audience measurements say:
* [What percentage of browsers with javascript disabled?][s1]
* [How many people are missing out on JavaScript enhancement?][s2]
* [Just how many web users really disable cookies or JavaScript?][s3]
Our sense of this data is that only about 0.2% of web users had
JavaScript disabled while participating in these studies.
The Fossil user community is not typical of the wider web, but if we
were able to comprehensively survey our users, we’d expect to find
an interesting dichotomy. Because Fossil is targeted at software
developers, who in turn are more likely to be power-users, we’d
expect to find Fossil users to be more in favor of some amount of
JavaScript blocking than the average web user. Yet, we’d also expect
to find that our user base has a disproportionately high number who
run [powerful conditional blocking plugins](#block) in their
browsers, rather than block JavaScript entirely. We suspect that
between these two forces, the number of no-JS purists among Fossil’s
user base is still a tiny minority.
7. “**My browser doesn’t even *have* a JavaScript interpreter.**”
The Fossil open source project has no full-time developers, and only
a few of these part-timers are responsible for the bulk of the code
in Fossil. If you want Fossil to support such niche use cases, then
you will have to [get involved with its development][cg]; it’s
*your* uncommon itch.
[cskin]: ./customskin.md
[dcsp]: ./defcsp.md
[fcgi]: /help?cmd=cgi
[ffor]: https://fossil-scm.org/forum/
[flic]: /doc/trunk/COPYRIGHT-BSD2.txt
[fsrc]: https://fossil-scm.org/home/file/src
[fsrv]: /help?cmd=server
[fshome]: /doc/trunk/www/server/
[hljs]: https://fossil-scm.org/forum/forumpost/9150bc22ca
[pjs]: https://fossil-scm.org/forum/forumpost/1198651c6d
[s1]: https://blockmetry.com/blog/javascript-disabled
[s2]: https://gds.blog.gov.uk/2013/10/21/how-many-people-are-missing-out-on-javascript-enhancement/
[s3]: https://w3techs.com/technologies/overview/client_side_language/all
[v8]: https://en.wikipedia.org/wiki/V8_(JavaScript_engine)
----
## <a id="uses"></a>Places Where Fossil’s Web UI Uses JavaScript
|