最最最糟糕的应用商店
Alexandre Oliva 著想象一下最虐人的应用商店。
那里面的应用程序原本是应当在你自己的电脑上运行的。
但是,你却不得不在线运行它们。
每次你启动它们,它们都会联系应用商店。
如果有可升级的版本,它是被自动安装的,不会提出任何问题。你宁愿运行早期版本?难。
如果应用商店决定不再欢迎你,那么这个程序也不能再被启动。
如果应用商店服务处于离线状态,或者你处于离线状态,程序也不能启动。
这个应用商店中的程序还必须在应用商店的服务器中保存你的数据。
如果程序无法启动,你就无法访问服务器上的数据。
虽然你可能已经下载了数据的备份,但是你还不得不搞定如何在无法使用那个程序的情况下对数据进行解码。
听起来像是一场噩梦? 是的。但它也确实是真实的。
那些知名的应用商店正在趋近这种恶劣程度。
但他们也只是在追赶那些真正的恶劣。
最虐人的应用商店是对 “Web” 系统在商业驱动下的扭曲,这是一个古老的赋予用户权力的分布式超文本系统。
用户被鼓励在大部分计算中采用 “Web 应用”,这为其他应用商店的效仿铺平了道路。
“Web 应用”通常以 JavaScript 的形式发布(尽管 Java 和 Flash 也有类似的意图),并在你的浏览器上自动安装和执行。
但问题不在于他们是 JavaScript 的形式,或是在你的浏览器中运行。问题在于:
- 你无法控制程序做了什么;
- 你无法控制在何时运行它;
- 你无法控制你自己的数据;
应用商店的所有者从你手中夺走了所有的控制权,进而获得了对你的控制。
如果这份 JavaScript 代码是非自由软件,那你就输了。
https://www.gnu.org/philosophy/javascript-trap.html
但当它(名义上)是自由软件时,你也输了!
当应用/Web 站点对计算机上运行的内容有如此多的控制权时,其效果“相当于使用一个具有监控功能和全局后门的非自由程序。”
https://www.gnu.org/philosophy/network-services-arent-free-or-nonfree.html
https://www.gnu.org/philosophy/who-does-that-server-really-serve.html
应用/网站的所有者得到了全部的自由,而你,作为用户,却一无所获。
这不是一种自我尊重的计算方式。
它侵犯了你的隐私,它把你和你的数据当作人质,在涉及你的数字生活时,它夺走了你的代理权和你的自由。
网络曾经是分享信息的绝佳方式。
Web 应用程序和强制性的 JavaScript 已经把它变成了最糟糕的应用商店。
是时候将最最最美好和最最最糟糕区分开了。
以下方法会有所帮助:
- 向需要执行 JavaScript 的网站请求提供下两种功能:
- 访问他们所发布信息的替代方法,或者
- 他们的应用程序的替代发行方法;
- 推广能控制 JavaScript 执行的自由浏览器扩展;
https://www.gnu.org/software/librejs/ - 当心那些只是 SaaSS 前端的应用;
https://www.gnu.org/philosophy/who-does-that-server-really-serve.html - 要求你所使用的软件以尊重自由的方式交付;
- 推广不向服务器授予对用户的控制权的超文本系统。
https://en.wikipedia.org/wiki/Gemini_(protocol)
https://en.wikipedia.org/wiki/Gopher_(protocol)
更一般地说:
- 作为一个有自尊的使用者,尽你可能地拒绝虐待行为;
https://gnu.org/philosophy/saying-no-even-once.html - 不鼓励自动执行下载的代码;
https://www.fsfla.org/blogs/lxo/pub/who-is-afraid-of-spectre-and-meltdown.en.html - 作为网络服务提供者,树立尊重用户的榜样;
https://www.gnu.org/philosophy/network-services-arent-free-or-nonfree.html - 传播对问题的认知,以及解决和避免问题的建议。
https://www.gnu.org/help/help-javascript.html
现在,如果你希望你的网站能够让它的用户体验到我们对最最最糟糕的应用商店的感受,那么在你控制的网页中添加下面的 JavaScriptlet:
document.body.textContent = '请禁用 JavaScript 以查看此站点。'
如果你愿意,可以为“禁用 JavaScript” 增加一个到本文的链接。
感谢 Richard Stallman 为本问题的撰写提供灵感,并鼓励我们将其发表。
2021-04-01 更新: 感谢 KE0VVT 让我知道 textContent 不能有链接;为此你需要 innerHTML。