1 |
<!--#include virtual="/server/header.html" --> |
2 |
<!-- Parent-Version: 1.96 --> |
3 |
<!-- This page is derived from /server/standards/boilerplate.html --> |
4 |
<!--#set var="TAGS" value="essays cultural evils" --> |
5 |
<!--#set var="DISABLE_TOP_ADDENDUM" value="yes" --> |
6 |
<title>The WWWorst App Store |
7 |
- GNU Project - Free Software Foundation</title> |
8 |
<style type="text/css" media="print,screen"><!-- |
9 |
#content p { margin: .5em 0 0; } |
10 |
--></style> |
11 |
<!--#include virtual="/philosophy/po/wwworst-app-store.translist" --> |
12 |
<!--#include virtual="/server/banner.html" --> |
13 |
<!--#include virtual="/philosophy/ph-breadcrumb.html" --> |
14 |
<!--GNUN: OUT-OF-DATE NOTICE--> |
15 |
<!--#include virtual="/server/top-addendum.html" --> |
16 |
<div class="article reduced-width"> |
17 |
<h2>The WWWorst App Store</h2> |
18 |
|
19 |
<address class="byline">by Alexandre Oliva</address> |
20 |
|
21 |
<p>Picture the most abusive app store.</p> |
22 |
|
23 |
<p>Programs in it are meant to run on your own computer.</p> |
24 |
|
25 |
<p>However, you have to be online to run them.</p> |
26 |
|
27 |
<p>Every time you start them, they contact the app store.</p> |
28 |
|
29 |
<p>If there is an updated version, it's installed automatically, no |
30 |
questions asked. You'd rather run the earlier version? Tough.</p> |
31 |
|
32 |
<p>If the app store decides you're no longer welcome, the program won't |
33 |
start any more.</p> |
34 |
|
35 |
<p>If the app store servers are offline, or if you are, it won't start |
36 |
either.</p> |
37 |
|
38 |
<div class="important"> |
39 |
<p>Programs in this app store must also hold your data in the app store's |
40 |
servers.</p> |
41 |
|
42 |
<p>If the program won't start, you can't get to the data on the servers |
43 |
any more.</p> |
44 |
|
45 |
<p>You may have downloaded backups of your data, but you'd have to figure |
46 |
out how to decode them without the program.</p> |
47 |
</div> |
48 |
|
49 |
<p>Sounds like a nightmare? It is. But it's also very real.</p> |
50 |
|
51 |
<p>Well-known app stores are approaching this level of nastiness.</p> |
52 |
|
53 |
<p>But they are just catching up with the real thing.</p> |
54 |
|
55 |
<p>The most abusive app store is the business-driven perversion of the |
56 |
old user-empowering distributed hypertext system called “the Web.”</p> |
57 |
|
58 |
<p>Users have been encouraged to adopt “web apps” for much of their |
59 |
computing, paving the way for other app stores to follow suit.</p> |
60 |
|
61 |
<div class="important"> |
62 |
<p>“Web apps” are most often distributed as JavaScript (though Java and |
63 |
Flash have served similar purposes), automatically installed and |
64 |
executed on your browser.</p> |
65 |
|
66 |
<p>But the problem is not that they're in JavaScript, or that it's your |
67 |
browser that runs them. It's that:</p> |
68 |
|
69 |
<ul> |
70 |
<li>you don't have control over what the program does;</li> |
71 |
<li>you don't have control over when you can run it;</li> |
72 |
<li>you don't have control over your own data.</li> |
73 |
</ul> |
74 |
|
75 |
<p>The app store owner takes all that control away from you, thereby |
76 |
gaining control over you.</p> |
77 |
|
78 |
<p>You lose when the JavaScript code is nonfree software.<br /> |
79 |
<a href="/philosophy/javascript-trap.html"> |
80 |
https://www.gnu.org/philosophy/javascript-trap.html</a></p> |
81 |
|
82 |
<p>But you also lose when it is (nominally) free software!</p> |
83 |
</div> |
84 |
|
85 |
<p>When the app / web site has so much control over what runs on |
86 |
your computer, the effect “is equivalent to using a nonfree program |
87 |
with surveillance features and a universal back door.” <br /> |
88 |
<a href="/philosophy/network-services-arent-free-or-nonfree.html"> |
89 |
https://www.gnu.org/philosophy/network-services-arent-free-or-nonfree.html</a> <br /> |
90 |
|
91 |
<a href="/philosophy/who-does-that-server-really-serve.html"> |
92 |
https://www.gnu.org/philosophy/who-does-that-server-really-serve.html</a> </p> |
93 |
|
94 |
<p>The owner gets all the freedom, and you, the user, get none.</p> |
95 |
|
96 |
<p>That's not a self-respectful way to do your computing.</p> |
97 |
|
98 |
<p>It invades your privacy, it keeps you and your data hostage, it takes |
99 |
away your agency and your freedom when it comes to your digital life.</p> |
100 |
|
101 |
<hr class="column-limit" /> |
102 |
|
103 |
<p>The web used to be a wonderful way to share information.</p> |
104 |
|
105 |
<p>Web apps and mandatory JavaScript have turned it into the worst app |
106 |
store.</p> |
107 |
|
108 |
<p>It is time to separate the WWWonderful from the WWWorst practices.</p> |
109 |
|
110 |
<p>Here are some ways to help:</p> |
111 |
|
112 |
<ul> |
113 |
<li>request web sites that require JavaScript execution to offer either: |
114 |
<ul> |
115 |
<li>alternate means of access to information they publish, or</li> |
116 |
<li>alternate means of delivery for their apps;</li> |
117 |
</ul> |
118 |
</li> |
119 |
|
120 |
<li>promote free browser extensions that control JavaScript execution;<br /> |
121 |
<a href="/software/librejs/">https://www.gnu.org/software/librejs/</a></li> |
122 |
|
123 |
<li>beware of apps that are mere front ends for SaaSS;<br /> |
124 |
<a href="/philosophy/who-does-that-server-really-serve.html"> |
125 |
https://www.gnu.org/philosophy/who-does-that-server-really-serve.html</a></li> |
126 |
|
127 |
<li>demand software you use to be delivered in freedom-respecting ways;</li> |
128 |
|
129 |
<li>promote hypertext systems that do not grant servers control over users.<br /> |
130 |
<a href="https://en.wikipedia.org/wiki/Gemini_(protocol)"> |
131 |
https://en.wikipedia.org/wiki/Gemini_(protocol)</a><br /> |
132 |
<a href="https://en.wikipedia.org/wiki/Gopher_(protocol)"> |
133 |
https://en.wikipedia.org/wiki/Gopher_(protocol)</a></li> |
134 |
</ul> |
135 |
|
136 |
<p>More generally:</p> |
137 |
|
138 |
<ul> |
139 |
<li>as a self-respecting user, reject the abusive practices whenever you can;<br /> |
140 |
<a href="/philosophy/saying-no-even-once.html"> |
141 |
https://gnu.org/philosophy/saying-no-even-once.html</a></li> |
142 |
|
143 |
<li>discourage automatic execution of downloaded code;<br /> |
144 |
<a href="https://www.fsfla.org/blogs/lxo/pub/who-is-afraid-of-spectre-and-meltdown.en.html"> |
145 |
https://www.fsfla.org/blogs/lxo/pub/who-is-afraid-of-spectre-and-meltdown.en.html</a></li> |
146 |
|
147 |
<li>as a network service operator, set a user-respecting example;<br /> |
148 |
<a href="/philosophy/network-services-arent-free-or-nonfree.html"> |
149 |
https://www.gnu.org/philosophy/network-services-arent-free-or-nonfree.html</a></li> |
150 |
|
151 |
<li>spread awareness of the problem, and advice on solving and avoiding it.<br /> |
152 |
<a href="/help/help-javascript.html"> |
153 |
https://www.gnu.org/help/help-javascript.html</a></li> |
154 |
</ul> |
155 |
|
156 |
<p>Now, if you wish your site to give its users a taste of how the |
157 |
WWWorst app store feels to us, add to web pages you control the |
158 |
following JavaScriptlet:</p> |
159 |
|
160 |
<p class="emph-box"> |
161 |
document.body.textContent = 'Please disable JavaScript to view this site.'</p> |
162 |
|
163 |
<p>If you wish, make “disable JavaScript” a link to this article.</p> |
164 |
|
165 |
<hr class="column-limit" /> |
166 |
|
167 |
<p>Thanks to Richard Stallman for the inspiration to write about this |
168 |
issue, and for the encouragement to publish it.</p> |
169 |
|
170 |
<p><em>2021-04-01 update:</em> thanks to KE0VVT for letting me know that |
171 |
textContent can't have links; you need innerHTML for that.</p> |
172 |
</div> |
173 |
|
174 |
</div><!-- for id="content", starts in the include above --> |
175 |
<!--#include virtual="/server/footer.html" --> |
176 |
<div id="footer" role="contentinfo"> |
177 |
<div class="unprintable"> |
178 |
|
179 |
<p>Please send general FSF & GNU inquiries to |
180 |
<a href="mailto:gnu@gnu.org"><gnu@gnu.org></a>. |
181 |
There are also <a href="/contact/">other ways to contact</a> |
182 |
the FSF. Broken links and other corrections or suggestions can be sent |
183 |
to <a href="mailto:webmasters@gnu.org"><webmasters@gnu.org></a>.</p> |
184 |
|
185 |
<p><!-- TRANSLATORS: Ignore the original text in this paragraph, |
186 |
replace it with the translation of these two: |
187 |
|
188 |
We work hard and do our best to provide accurate, good quality |
189 |
translations. However, we are not exempt from imperfection. |
190 |
Please send your comments and general suggestions in this regard |
191 |
to <a href="mailto:web-translators@gnu.org"> |
192 |
<web-translators@gnu.org></a>.</p> |
193 |
|
194 |
<p>For information on coordinating and contributing translations of |
195 |
our web pages, see <a |
196 |
href="/server/standards/README.translations.html">Translations |
197 |
README</a>. --> |
198 |
Please see the <a |
199 |
href="/server/standards/README.translations.html">Translations |
200 |
README</a> for information on coordinating and contributing translations |
201 |
of this article.</p> |
202 |
</div> |
203 |
|
204 |
<!-- Regarding copyright, in general, standalone pages (as opposed to |
205 |
files generated as part of manuals) on the GNU web server should |
206 |
be under CC BY-ND 4.0. Please do NOT change or remove this |
207 |
without talking with the webmasters or licensing team first. |
208 |
Please make sure the copyright date is consistent with the |
209 |
document. For web pages, it is ok to list just the latest year the |
210 |
document was modified, or published. |
211 |
|
212 |
If you wish to list earlier years, that is ok too. |
213 |
Either "2001, 2002, 2003" or "2001-2003" are ok for specifying |
214 |
years, as long as each year in the range is in fact a copyrightable |
215 |
year, i.e., a year in which the document was published (including |
216 |
being publicly visible on the web or in a revision control system). |
217 |
|
218 |
There is more detail about copyright years in the GNU Maintainers |
219 |
Information document, www.gnu.org/prep/maintain. --> |
220 |
|
221 |
<p>Copyright © 2021 Alexandre Oliva</p> |
222 |
|
223 |
<p>This page is licensed under the <a rel="license" |
224 |
href="https://creativecommons.org/licenses/by-sa/4.0/">Creative |
225 |
Commons Attribution-ShareAlike 4.0 International License</a>.</p> |
226 |
|
227 |
<!--#include virtual="/server/bottom-notes.html" --> |
228 |
|
229 |
<p class="unprintable">Updated: |
230 |
<!-- timestamp start --> |
231 |
$Date: 2021/09/10 09:04:50 $ |
232 |
<!-- timestamp end --> |
233 |
</p> |
234 |
</div> |
235 |
</div><!-- for class="inner", starts in the banner include --> |
236 |
</body> |
237 |
</html> |