summaryrefslogtreecommitdiff
path: root/talermerchantdemos/blog/articles/en/loyal-computers.html
blob: 40797bcc567665dc135d11bfc41edb8271b2fee8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
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
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
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
<!--#include virtual="/server/header.html" -->
<!-- Parent-Version: 1.96 -->
<!-- This page is derived from /server/standards/boilerplate.html -->
<!--#set var="TAGS" value="essays aboutfs extension" -->
<!--#set var="DISABLE_TOP_ADDENDUM" value="yes" -->
<title>What Does It Mean for Your Computer to Be Loyal?
- GNU Project - Free Software Foundation</title>
<style type="text/css" media="print,screen"><!--
#History ~ p, #History ~ ul { font-size: 1rem; }
--></style>
 <!--#include virtual="/philosophy/po/loyal-computers.translist" -->
<!--#include virtual="/server/banner.html" -->
<!--#include virtual="/philosophy/ph-breadcrumb.html" -->
<!--GNUN: OUT-OF-DATE NOTICE-->
<!--#include virtual="/server/top-addendum.html" -->
<div class="article reduced-width">
<h2>What Does It Mean for Your Computer to Be Loyal?</h2>

<address class="byline">by <a href="https://www.stallman.org/">Richard
Stallman</a></address>

<p>We say that running <a href="/philosophy/free-sw.html">free
software</a> on your computer means that its operation is <a
href="/philosophy/free-software-even-more-important.html">under your
control</a>.  Implicitly this presupposes that your computer will do
what your programs tell it to do, and no more.  In other words, that
your computer will be loyal to you.</p>

<p>In 1990 we took that for granted; nowadays, many computers are
designed to be disloyal to their users.  It has become necessary to
spell out what it means for your computer to be a loyal platform that
obeys your decisions, which you express by telling it to run certain
programs.</p>

<p>Our tentative definition consists of these principles.</p>

<dl>
<dt>Installability</dt>

<dd>
<p>Any software that can be replaced by someone else,
the user must be empowered to replace.</p>

<p>Thus, if the computer requires a password or some other secret in
order to replace some of the software in it, whoever sells you the
computer must tell you that secret as well.</p>
</dd>

<dt>Neutrality towards software</dt>

<dd>
<p>The computer will run, without prejudice, whatever software you
install in it, and let that software do whatever its code says to
do.</p>

<p>A feature to check for signatures on the programs that run is
compatible with this principle provided the signature checking is
fully under the user's control.  When that is so, the feature helps
implement the user's decisions about which programs to run, rather than
thwarting the user's decisions.  By contrast, signature checking that
is not fully under the user's control violates this principle.</p>
</dd>

<dt>Neutrality towards protocols</dt>

<dd>
<p>The computer will communicate, without prejudice, through whatever
protocol your installed software implements, with whatever users and
whatever other networked computers you direct it to communicate
with.</p>

<p>This means that computer does not impose one particular service rather
than another, or one protocol rather than another. It does not
require the user to get anyone else's permission to communicate via a
certain protocol.</p>
</dd>

<dt>Neutrality towards implementations</dt>

<dd>
<p>When the computer communicates using any given protocol, it will
support doing so, without prejudice, via whatever code you choose
(assuming the code implements the intended protocol), and it will do
nothing to help any other part of the Internet to distinguish which
code you are using or what changes you may have made in it, or to
discriminate based on your choice.</p>

<p>This entails that the computer rejects remote attestation, that is,
that it does not permit other computers to determine over the network
whether your computer is running one particular software load. Remote
attestation gives web sites the power to compel you to connect to them
only through an application with DRM that you can't break, denying you
effective control over the software you use to communicate with them.</p>

<p>We can comprehend remote attestation as a general scheme to allow
any web site to impose tivoization or &ldquo;lockdown&rdquo; on the
local software you connect to it with.  Simple tivoization of a
program bars modified versions from functioning properly; that makes
the program nonfree.  Remote attestation by web sites bars modified
versions from working with those sites that use it, which makes the
program effectively nonfree when using those sites.  If a computer
allows web sites to bar you from using a modified program with them,
it is loyal to them, not to you.</p>
</dd>

<dt>Neutrality towards data communicated</dt>

<dd>
<p>When the computer receives data using whatever protocol, it will
not limit what the program can do with the data received through that
communication.</p>

<p>Any hardware-level DRM violates this principle.  For instance, the
hardware must not deliver video streams encrypted such that only the
monitor can decrypt them.</p>
</dd>

<dt>Debugability</dt>

<dd>
<p>The computer always permits you to analyze the operation of a
program that is running.</p>
</dd>

<dt>Completeness</dt>

<dd>
<p>The principles above apply to all the computer's software
interfaces and all communication the computer does.  The computer must
not have any disloyal programmable facility or do any disloyal
communication.</p>

<p>For instance, the AMT functionality in recent Intel processors runs
nonfree software that can talk to Intel remotely.  Unless disabled,
this makes the system disloyal.</p>
</dd>
</dl>

<p>For a computer to be fully at your service, it should come with
documentation of all the interfaces intended for software running in
the computer to use to control the computer.  A documentation gap as
such doesn't mean the computer is actively disloyal, but does mean
there are some aspect of it that are not at your service.  Depending
on what that aspect does, this might or might not be a real problem.</p>

<p>We ask readers to send criticisms and suggestions about this
definition to <a href="mailto:computer-principles@gnu.org">
&lt;computer-principles@gnu.org&gt;</a>.</p>

<p>Loyalty as defined here is the most basic criterion we could think
of that is meaningful.  It does not require that all the software in
the computer be free.  However, the presence
of <a href="/philosophy/free-software-even-more-important.html">nonfree
software in the computer</a> is an obstacle to verifying that the
computer is loyal, or making sure it remains so.</p>

<h3 id="History">History</h3>

<p>Here is the list of substantive changes in this page.</p>

<ul>

<li><a href="//web.cvs.savannah.gnu.org/viewvc/www/www/philosophy/loyal-computers.html?r1=1.5&amp;r2=1.6">Version 1.6</a>:
Add installability requirement.
</li>

<li><a href="//web.cvs.savannah.gnu.org/viewvc/www/www/philosophy/loyal-computers.html?r1=1.4&amp;r2=1.5">Version
1.5</a>: Full documentation is not a requirement for loyalty.
</li>
</ul>
</div>

</div><!-- for id="content", starts in the include above -->
<!--#include virtual="/server/footer.html" -->
<div id="footer" role="contentinfo">
<div class="unprintable">

<p>Please send general FSF &amp; GNU inquiries to
<a href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>.
There are also <a href="/contact/">other ways to contact</a>
the FSF.  Broken links and other corrections or suggestions can be sent
to <a href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>.</p>

<p><!-- TRANSLATORS: Ignore the original text in this paragraph,
        replace it with the translation of these two:

        We work hard and do our best to provide accurate, good quality
        translations.  However, we are not exempt from imperfection.
        Please send your comments and general suggestions in this regard
        to <a href="mailto:web-translators@gnu.org">
        &lt;web-translators@gnu.org&gt;</a>.</p>

        <p>For information on coordinating and contributing translations of
        our web pages, see <a
        href="/server/standards/README.translations.html">Translations
        README</a>. -->
Please see the <a
href="/server/standards/README.translations.html">Translations
README</a> for information on coordinating and contributing translations
of this article.</p>
</div>

<!-- Regarding copyright, in general, standalone pages (as opposed to
     files generated as part of manuals) on the GNU web server should
     be under CC BY-ND 4.0.  Please do NOT change or remove this
     without talking with the webmasters or licensing team first.
     Please make sure the copyright date is consistent with the
     document.  For web pages, it is ok to list just the latest year the
     document was modified, or published.
     
     If you wish to list earlier years, that is ok too.
     Either "2001, 2002, 2003" or "2001-2003" are ok for specifying
     years, as long as each year in the range is in fact a copyrightable
     year, i.e., a year in which the document was published (including
     being publicly visible on the web or in a revision control system).
     
     There is more detail about copyright years in the GNU Maintainers
     Information document, www.gnu.org/prep/maintain. -->

<p>Copyright &copy; 2014, 2015, 2019, 2021 Free Software Foundation, Inc.</p>

<p>This page is licensed under a <a rel="license"
href="http://creativecommons.org/licenses/by-nd/4.0/">Creative
Commons Attribution-NoDerivatives 4.0 International License</a>.</p>

<!--#include virtual="/server/bottom-notes.html" -->

<p class="unprintable">Updated:
<!-- timestamp start -->
$Date: 2021/09/05 09:34:34 $
<!-- timestamp end -->
</p>
</div>
</div><!-- for class="inner", starts in the banner include -->
</body>
</html>