<!--#include virtual="/server/header.html" -->
<!-- Parent-Version: 1.90 1.98 -->
<!-- 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>

<p>by

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

<!-- rms: I deleted the links because of Wired's announced
     anti-ad-block system -->
<blockquote>
<p>Most of this article was published in two parts in Wired in
March 2015.</p>
</blockquote> 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 “free”refers to freedom, not price, we
often use the French or Spanish word “libre” along with
“free.”</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
“free hardware,” but “free-design hardware” 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 “free” means here.  (In fact, some spyware
programs such as <a
href="/philosophy/proprietary/proprietary-surveillance.html">Flash
href="/proprietary/proprietary-surveillance.html">Flash
Player and Angry Birds</a> are gratis although they are not free.)
Saying “libre” along with “free” 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 “libre hardware” as a concise
equivalent for “hardware made from a free (libre)
design”.</p>
design.”</p>

<p>The terms “open hardware” and “open source
hardware” are used by some with the same concrete meaning as
“free-design hardware,” but those terms downplay freedom as an
issue.  They were derived from the term “open source
software,” 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
“open” fails to do that, let's not substitute it for
“free.”</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 copied, and changed in modified with 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.  We can treat  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 think of the difference between built-in firmware and
equivalent hardware as a minor implementation detail, provided that we
are sure in either case that it won't be changed.  A hardware circuit
can't be changed; that's its nature.  If it's acceptable for a device
to be implemented with internal circuitry that no one can alter, then
an internal program that no one can alter is no worse.  It would not
be sensible to reject an equivalent internal software implementation,
when operationally they are indistinguishable.</p>

<p>The equivalence falls apart, however, when the software implementation
is not totally internal and some company can modify that code.  For
example, when firmware needs to be copied into the device to make
the device function, or included in the system distribution that you
install, that is no <em>internal</em> software implementation; rather,
it is a piece of installed nonfree software.  It is unjust because some
manufacturer can change it but you can't.</p>

<p>In order for a firmware program to be morally equivalent to hardware,
it must be unmodifiable.  What about when the device can't possibly run
without some firmware and it offers a small stretch.</p> way to modify that?  We can make
that firmware unmodifiable in practice by taking care never to let that
replacement happen.  This solution is not entirely clean, but no
entirely clean solution has been proposed; this is the only way we know
to preserve some meaning for the rejection of nonfree software while
using that device.  This is much better than just giving up.</p>

<p>But we can't have it both ways.  To make preinstalled firmware
effectively unmodifiable by not letting anyone invoke the method to
change it, we must carry that out without exception even when there are
changes we would wish were installed.  That means rejecting all upgrades
or patches to that firmware.</p>

<p>Some have said that preinstalled firmware programs and
Field-Programmable Gate Array chips (FPGAs) “blur the boundary
between hardware and software,” 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="http://www.clifford.at/icestorm/">programming
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 href="https://gothub.projectsegfau.lt/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

<!-- this used to say "be careful to", but some people whose English
  is a little wobbly misunderstand that by 180 degrees. -->
<p>So make sure to choose 3D printers that work with exclusively free
software; the Free Software Foundation <a
href="http://fsf.org/resources/hw/endorsement">endorses
href="https://ryf.fsf.org/">endorses such
printers</a>.  Some 3D printers are made from free hardware designs,
but <a
href="http://www.cnet.com/news/pulling-back-from-open-source-hardware-makerbot-angers-some-adherents/">Makerbot's
hardware designs are nonfree</a>.</p>
printers</a>.</p>

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

<p>Is a nonfree digital <a href="#fn1">(*)</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>

<hr />

<p id="fn1">* As used here, “digital hardware” includes
hardware with some analog circuits and components in addition to
digital ones.</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
— for
parts—for example, a “free” HDL circuit that
incorporates proprietary “soft cores” — we cores”—we must
conclude that the design as a whole is nonfree at that level.
Likewise for nonfree “wizards” or “macros,” 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="http://www.copyright.gov/title17/92chap13.html#1301">does
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">(*)</a>.</p> 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 “<a
href="/philosophy/not-ipr.html">intellectual property</a>” is
pure confusion and should be totally rejected.</p>

<hr />

<p id="fn2">* An article by Public Knowledge gives useful information
about this <a
href="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 “intellectual property” and the
propaganda term “<a
href="/philosophy/words-to-avoid.html#Protection">protection</a>.”</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="http://en.wikipedia.org/wiki/STL_%28file_format%29">STL
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, “digital hardware” 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 “intellectual property” and the
propaganda term “<a
href="/philosophy/words-to-avoid.html#Protection">protection</a>.”</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"> id="footer" role="contentinfo">
<div class="unprintable">

<p>Please send general FSF & GNU inquiries to
<a href="mailto:gnu@gnu.org"><gnu@gnu.org></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"><webmasters@gnu.org></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">
        <web-translators@gnu.org></a>.</p>

        <p>For information on coordinating and submitting 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 submitting 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 © 2015, 2016, 2018, 2019, 2021 2021, 2022, 2023, 2024 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: 2024/11/06 10:43:10 $
<!-- timestamp end -->
</p>
</div>
</div><!-- for class="inner", starts in the banner include -->
</body>
</html>