summaryrefslogtreecommitdiff
path: root/talermerchantdemos/blog/articles/en/free-hardware-designs.html
blob: 38871895db8690b051e9582ada8118281b5fa847 (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
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
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
<!--#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>Free Hardware and Free Hardware Designs
- GNU Project - Free Software Foundation</title>
 <!--#include virtual="/philosophy/po/free-hardware-designs.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>Free Hardware and Free Hardware Designs</h2>

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

<div class="introduction">
<p>To what extent do the ideas of free software extend to hardware?
Is it a moral obligation to make our hardware designs free, just as it
is to make our software free?  Does maintaining our freedom require
rejecting hardware made from nonfree designs?</p>
</div>

<h3 id="definitions">Definitions</h3>

<p><em>Free software</em> is a matter of freedom, not price; broadly
speaking, it means that users are free to use the software and to copy
and redistribute the software, with or without changes.  More
precisely, the definition is formulated in terms of <a
href="/philosophy/free-sw.html">the four essential freedoms</a>.  To
emphasize that &ldquo;free&rdquo;refers to freedom, not price, we
often use the French or Spanish word &ldquo;libre&rdquo; along with
&ldquo;free.&rdquo;</p>

<p>Applying the same concept directly to hardware, <em>free
hardware</em> means hardware that users are free to use and to copy
and redistribute with or without changes.  However, there are no
copiers for hardware, aside from keys, DNA, and plastic objects'
exterior shapes.  Most hardware is made by fabrication from some sort
of design.  The design comes before the hardware.</p>

<p>Thus, the concept we really need is that of a <em>free hardware
design</em>.  That's simple: it means a design that permits users to
use the design (i.e., fabricate hardware from it) and to copy and
redistribute it, with or without changes.  The design must provide the
same four freedoms that define free software.</p>

<p>Then we can refer to hardware made from a free design as
&ldquo;free hardware,&rdquo; but &ldquo;free-design hardware&rdquo; is
a clearer term since it avoids possible misunderstanding.</p>

<p>People first encountering the idea of free software often think it
means you can get a copy gratis.  Many free programs are available for
zero price, since it costs you nothing to download your own copy, but
that's not what &ldquo;free&rdquo; means here.  (In fact, some spyware
programs such as <a
href="/proprietary/proprietary-surveillance.html">Flash
Player and Angry Birds</a> are gratis although they are not free.)
Saying &ldquo;libre&rdquo; along with &ldquo;free&rdquo; helps clarify
the point.</p>

<p>For hardware, this confusion tends to go in the other direction;
hardware costs money to produce, so commercially made hardware won't
be gratis (unless it is a loss-leader or a tie-in), but that does not
prevent its design from being free/libre.  Things you make in your own
3D printer can be quite cheap to make, but not exactly gratis since
the raw materials will typically cost something.  In ethical terms, the
freedom issue trumps the price issue totally, since a device that
denies freedom to its users is worth less than nothing.</p>

<p>We can use the term &ldquo;libre hardware&rdquo; as a concise
equivalent for &ldquo;hardware made from a free (libre)
design.&rdquo;</p>

<p>The terms &ldquo;open hardware&rdquo; and &ldquo;open source
hardware&rdquo; are used by some with the same concrete meaning as
&ldquo;free-design hardware,&rdquo; but those terms downplay freedom as an
issue.  They were derived from the term &ldquo;open source
software,&rdquo; which refers more or less to free software but <a
href="/philosophy/open-source-misses-the-point.html">without talking
about freedom or presenting the issue as a matter of right or
wrong</a>.  To underline the importance of freedom, we make a point of
referring to freedom whenever it is pertinent; since
&ldquo;open&rdquo; fails to do that, let's not substitute it for
&ldquo;free.&rdquo;</p>

<h3 id="hw-and-sw">Hardware and Software</h3>

<p>Hardware and software are fundamentally different.  A program, even
in compiled executable form, is a collection of data which can be
interpreted as instructions for a computer.  Like any other digital
work, it can be copied and changed using a computer.  A copy of a
program has no inherent preferred physical form or embodiment.</p>

<p>By contrast, hardware is a physical structure and its physicality
is crucial.  While the hardware's design might be represented as data,
in some cases even as a program, the design is not the hardware.  A
design for a CPU can't execute a program.  You won't get very far
trying to type on a design for a keyboard or display pixels on a
design for a screen.</p>

<p>Furthermore, while you can use a computer to modify or copy the
hardware design, a computer can't convert the design into the physical
structure it describes.  That requires fabrication equipment.</p>

<h3 id="boundary">The Boundary between Hardware and Software</h3>

<p>What is the boundary, in digital devices, between hardware and
software?  It follows from the definitions.  Software is the
operational part of a device that can be copied and changed in a
computer; hardware is the operational part that can't be.  This is the
right way to make the distinction because it relates to the practical
consequences.</p>

<p>There is a gray area between hardware and software that contains
firmware that <em>can</em> be upgraded or replaced, but is not meant
ever to be upgraded or replaced once the product is sold.  Or perhaps
it is possible but unusual, or the manufacturer can release a
replacement but you can't.  In conceptual terms, the gray area is
rather narrow.  In practice, it is important because many products
fall in it.  Indeed, nowadays keyboards, cameras, disk drives and USB
memories typically contain an embedded nonfree program that could be
replaced by the manufacturer.</p>

<p>We can treat that firmware as hardware with a small stretch, but we
must not try to have it both ways.  If we treat certain firmware as
impossible to change, since it is not realistically possible to avoid
that firmware, we must also treat it as impossible to change when we
might wish it could be changed.  That entails refusing all upgrades or
patches to that firmware.  That is what I do, and this is the reason I
do it.  Until we can get computers with entirely free firmware, there
is no feasible way to do better than this.</p>

<p>Some have said that preinstalled firmware programs and
Field-Programmable Gate Array chips (FPGAs) &ldquo;blur the boundary
between hardware and software,&rdquo; but I think that is a
misinterpretation of the facts.  Firmware that is installed during use
is software; firmware that is delivered inside the device and can't be
changed is software by nature, but we can treat it as if it were a
circuit.  As for FPGAs, the FPGA itself is hardware, but the gate
pattern that is loaded into the FPGA is a kind of firmware.</p>

<p>Running free gate patterns on FPGAs could potentially be a useful
method for making digital devices that are free at the circuit level.
However, to make FPGAs usable in the free world, we need free
development tools for them.  The obstacle is that the format of the
gate pattern file that gets loaded into the FPGA is secret.  For many
years there was no model of FPGA for which those files could be
produced without nonfree (proprietary) tools.</p>

<p>As of 2015, free software tools are available for <a
href="https://web.archive.org/web/20211106213411/http://www.clifford.at/icestorm/">
programming the Lattice
iCE40</a>, a common model of FPGA, from input written in a hardware
description language (HDL).  It is also possible to compile C programs
and run them on the Xilinx Spartan 6 LX9 FPGA
with <a href="https://github.com/Wolfgang-Spraul/fpgatools">free
tools</a>, but those do not support HDL input.  We recommend that you
reject other FPGA models until they too are supported by free
tools.</p>

<p>As for the HDL code itself, it can act as software (when it is run
on an emulator or loaded into an FPGA) or as a hardware design (when
it is realized in immutable silicon or a circuit board).</p>

<h3 id="ethical-3d-printers">The Ethical Question for 3D Printers</h3>

<p>Ethically, <a
href="/philosophy/free-software-even-more-important.html">software
must be free</a>; a nonfree program is an injustice.  Should we take
the same view for hardware designs?</p>

<p>We certainly should, in the fields that 3D printing (or, more
generally, any sort of personal fabrication) can handle.  Printer
patterns to make a useful, practical object (i.e., functional rather
than decorative) <em>must</em> be free because they are works made for
practical use.  Users deserve control over these works, just as they
deserve control over the software they use.  Distributing a nonfree
functional object design is as wrong as distributing a nonfree
program.</p>

<p>Be careful to choose 3D printers that work with exclusively free
software; the Free Software Foundation <a
href="https://ryf.fsf.org/">endorses such
printers</a>.  Some 3D printers are made from free hardware designs,
but <a
href="https://www.cnet.com/tech/tech-industry/pulling-back-from-open-source-hardware-makerbot-angers-some-adherents/">Makerbot's
hardware designs are nonfree</a>.</p>

<h3 id="reject-nonfree">Must We Reject Nonfree Digital Hardware?</h3>

<p>Is a nonfree digital <a href="#fn1">[1]</a> hardware design an
injustice?  Must we, for our freedom's sake, reject all digital
hardware made from nonfree designs, as we must reject nonfree
software?</p>

<p>Due to the conceptual parallel between hardware designs and
software source code, many hardware hackers are quick to condemn
nonfree hardware designs just like nonfree software.  I disagree
because the circumstances for hardware and software are different.</p>

<p>Present-day chip and board fabrication technology resembles the
printing press: it lends itself to mass production in a factory.  It
is more like copying books in 1950 than like copying software
today.</p>

<p>Freedom to copy and change software is an ethical imperative
because those activities are feasible for those who use software: the
equipment that enables you to use the software (a computer) is also
sufficient to copy and change it.  Today's mobile computers are too
weak to be good for this, but anyone can find a computer that's
powerful enough.</p>

<p>Moreover, a computer suffices to download and run a version changed
by someone else who knows how, even if you are not a programmer.
Indeed, nonprogrammers download software and run it every day.  This
is why free software makes a real difference to nonprogrammers.</p>

<p>How much of this applies to hardware?  Not everyone who can use
digital hardware knows how to change a circuit design, or a chip
design, but anyone who has a PC has the equipment needed to do so.
Thus far, hardware is parallel to software, but next comes the big
difference.</p>

<p>You can't build and run a circuit design or a chip design in your
computer.  Constructing a big circuit is a lot of painstaking work,
and that's once you have the circuit board.  Fabricating a chip is not
feasible for individuals today; only mass production can make them
cheap enough.  With today's hardware technology, users can't download
and run a modified version of a widely used digital hardware design,
as they could run a modified version of a widely used program.
Thus, the four freedoms don't give users today collective control over
a hardware design as they give users collective control over a
program.  That's where the reasoning showing that all software must be
free fails to apply to today's hardware technology.</p>

<p>In 1983 there was no free operating system, but it was clear that
if we had one, we could immediately use it and get software freedom.
All that was missing was the code for one.</p>

<p>In 2014, if we had a free design for a CPU chip suitable for a PC,
mass-produced chips made from that design would not give us the same
freedom in the hardware domain.  If we're going to buy a product mass
produced in a factory, this dependence on the factory causes most of
the same problems as a nonfree design.  For free designs to give us
hardware freedom, we need future fabrication technology.</p>

<p>We can envision a future in which our personal fabricators can make
chips, and our robots can assemble and solder them together with
transformers, switches, keys, displays, fans and so on.  In that
future we will all make our own computers (and fabricators and
robots), and we will all be able to take advantage of modified designs
made by those who know hardware.  The arguments for rejecting nonfree
software will then apply to nonfree hardware designs too.</p>

<p>That future is years away, at least.  In the meantime, there is no
need to reject hardware with nonfree designs on principle.</p>

<h3 id="free-designs">We Need Free Digital Hardware Designs</h3>

<p>Although we need not reject digital hardware made from nonfree
designs in today's circumstances, we need to develop free designs and
should use them when feasible.  They provide advantages today, and in
the future they may be the only way to use free software.</p>

<p>Free hardware designs offer practical advantages.  Multiple
companies can fabricate one, which reduces dependence on a single
vendor.  Groups can arrange to fabricate them in quantity.  Having
circuit diagrams or HDL code makes it possible to study the design to
look for errors or malicious functionalities (it is known that the NSA
has procured malicious weaknesses in some computing hardware).
Furthermore, free designs can serve as building blocks to design
computers and other complex devices, whose specs will be published and
which will have fewer parts that could be used against us.</p>

<p>Free hardware designs may become usable for some parts of our
computers and networks, and for embedded systems, before we are able
to make entire computers this way.</p>

<p>Free hardware designs may become essential even before we can
fabricate the hardware personally, if they become the only way to
avoid nonfree software.  As common commercial hardware is increasingly
designed to subjugate users, it becomes increasingly incompatible with
free software, because of secret specifications and requirements for
code to be signed by someone other than you.  Cell phone modem chips
and even some graphics accelerators already require firmware to be
signed by the manufacturer.  Any program in your computer, that
someone else is allowed to change but you're not, is an instrument of
unjust power over you; hardware that imposes that requirement is
malicious hardware.  In the case of cell phone modem chips, all the
models now available are malicious.</p>

<p>Some day, free-design digital hardware may be the only platform
that permits running a free system at all.  Let us aim to have the
necessary free digital designs before then, and hope that we have the
means to fabricate them cheaply enough for all users.</p>

<p>If you design hardware, please make your designs free.  If you use
hardware, please join in urging and pressuring companies to make
hardware designs free.</p>

<h3 id="levels-of-design">Levels of Design</h3>

<p>Software has levels of implementation; a package might include
libraries, commands and scripts, for instance.  But these levels don't
make a significant difference for software freedom because it is
feasible to make all the levels free.  Designing components of a
program is the same sort of work as designing the code that combines
them; likewise, building the components from source is the same sort
of operation as building the combined program from source.  To make
the whole thing free simply requires continuing the work until we have
done the whole job.</p>

<p>Therefore, we insist that a program be free at all levels.  For a
program to qualify as free, every line of the source code that
composes it must be free, so that you can rebuild the program out of
free source code alone.</p>

<p>Physical objects, by contrast, are often built out of components
that are designed and build in a different kind of factory.  For
instance, a computer is made from chips, but designing (or
fabricating) chips is very different from designing (or fabricating)
the computer out of chips.</p>

<p>Thus, we need to distinguish <em>levels</em> in the design of a
digital product (and maybe some other kinds of products).  The circuit
that connects the chips is one level; each chip's design is another
level.  In an FPGA, the interconnection of primitive cells is one
level, while the primitive cells themselves are another level.  In the
ideal future we will want the design be free at all levels.  Under
present circumstances, just making one level free is a significant
advance.</p>

<p>However, if a design at one level combines free and nonfree
parts&mdash;for example, a &ldquo;free&rdquo; HDL circuit that
incorporates proprietary &ldquo;soft cores&rdquo;&mdash;we must
conclude that the design as a whole is nonfree at that level.
Likewise for nonfree &ldquo;wizards&rdquo; or &ldquo;macros,&rdquo; if
they specify part of the interconnections of chips or programmably
connected parts of chips.  The free parts may be a step towards the
future goal of a free design, but reaching that goal entails replacing
the nonfree parts.  They can never be admissible in the free
world.</p>

<h3 id="licenses">Licenses and Copyright for Free Hardware Designs</h3>

<p>You make a hardware design free by releasing it under a free
license.  We recommend using the GNU General Public License, version 3
or later.  We designed GPL version 3 with a view to such use.</p>

<p>Copyleft on circuits, and on nondecorative object shapes, doesn't
go as far as one might suppose.  The copyright on these designs only
applies to the way the design is drawn or written.  Copyleft is a way
of using copyright law, so its effect carries only as far as copyright
law carries.</p>

<p>For instance, a circuit, as a topology, cannot be copyrighted (and
therefore cannot be copylefted).  Definitions of circuits written in
HDL can be copyrighted (and therefore copylefted), but the copyleft
covers only the details of expression of the HDL code, not the circuit
topology it generates.  Likewise, a drawing or layout of a circuit can
be copyrighted, so it can be copylefted, but this only covers the
drawing or layout, not the circuit topology.  Anyone can legally draw
the same circuit topology in a different-looking way, or write a
different HDL definition that produces the same circuit.</p>

<p>Copyright doesn't cover physical circuits, so when people build
instances of the circuit, the design's license will have no legal
effect on what they do with the devices they have built.</p>

<p>For drawings of objects, and 3D printer models, copyright doesn't
cover making a different drawing of the same purely functional object
shape.  It also doesn't cover the functional physical objects made
from the drawing.  As far as copyright is concerned, everyone is free
to make them and use them (and that's a freedom we need very much).
In the US, copyright does not cover the functional aspects that the
design describes, but <a
href="https://www.copyright.gov/title17/92chap13.html#1301">does cover decorative
aspects</a>.  When one object has decorative aspects and functional
aspects, you get into tricky ground <a href="#fn2">[2]</a>.</p>

<p>All this may be true in your country as well, or it may not.
Before producing objects commercially or in quantity, you should
consult a local lawyer.  Copyright is not the only issue you need to
be concerned with.  You might be attacked using patents, most likely
held by entities that had nothing to do with making the design you're
using, and there may be other legal issues as well.</p>

<p>Keep in mind that copyright law and patent law are totally
different.  It is a mistake to suppose that they have anything in
common.  This is why the term &ldquo;<a
href="/philosophy/not-ipr.html">intellectual property</a>&rdquo; is
pure confusion and should be totally rejected.</p>

<h3 id="promoting">Promoting Free Hardware Designs Through Repositories</h3>

<p>The most effective way to push for published hardware designs to be
free is through rules in the repositories where they are published.
Repository operators should place the freedom of the people who will
use the designs above the preferences of people who make the designs.
This means requiring designs of useful objects to be free, as a
condition for posting them.</p>

<p>For decorative objects, that argument does not apply, so we don't
have to insist they must be free.  However, we should insist that they
be sharable.  Thus, a repository that handles both decorative object
models and functional ones should have an appropriate license policy
for each category.</p>

<p>For digital designs, I suggest that the repository insist on GNU
GPL v3-or-later, Apache 2.0, or CC0.  For functional 3D designs, the
repository should ask the design's author to choose one of four
licenses: GNU GPL v3-or-later, Apache 2.0, CC BY-SA, CC BY or CC0.  For
decorative designs, it should suggest GNU GPL v3-or-later, Apache 2.0, CC0,
or any of the CC licenses.</p>

<p>The repository should require all designs to be published as source
code, and source code in secret formats usable only by proprietary
design programs is not really adequate.  For a 3D model, the <a
href="https://en.wikipedia.org/wiki/STL_%28file_format%29">STL
format</a> is not the preferred format for changing the design and
thus is not source code, so the repository should not accept it,
except perhaps accompanying real source code.</p>

<p>There is no reason to choose one single format for the source code
of hardware designs, but source formats that cannot yet be handled
with free software should be accepted reluctantly at best.</p>

<h3 id="warranties">Free Hardware Designs and Warranties</h3>

<p>In general, the authors of free hardware designs have no moral
obligation to offer a warranty to those that fabricate the design.
This is a different issue from the sale of physical hardware, which
ought to come with a warranty from the seller and/or the
manufacturer.</p>

<h3 id="conclusion">Conclusion</h3>

<p>We already have suitable licenses to make our hardware designs
free.  What we need is to recognize as a community that this is what
we should do and to insist on free designs when we fabricate objects
ourselves.</p>
<div class="column-limit"></div>

<h3 class="footnote">Footnotes</h3>
<ol>
<li id="fn1">As used here, &ldquo;digital hardware&rdquo; includes
hardware with some analog circuits and components in addition to
digital ones.</li>

<li id="fn2">An article by Public Knowledge gives useful information
about this <a
href="https://web.archive.org/web/20211203021432/https://www.publicknowledge.org/assets/uploads/documents/3_Steps_for_Licensing_Your_3D_Printed_Stuff.pdf">
complexity</a>, for the US, though it falls into the common mistake of
using the bogus concept of &ldquo;intellectual property&rdquo; and the
propaganda term &ldquo;<a
href="/philosophy/words-to-avoid.html#Protection">protection</a>.&rdquo;</li>
</ol>

<!-- rms: I deleted the links because of Wired's announced
     anti-ad-block system -->
<div class="infobox extra" role="complementary">
<hr />
<p>Most of this article was published in two parts in <cite>Wired</cite> in
March 2015.</p>
</div>
</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; 2015, 2021, 2022 Richard Stallman</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: 2022/03/05 13:35:13 $
<!-- timestamp end -->
</p>
</div>
</div><!-- for class="inner", starts in the banner include -->
</body>
</html>