summaryrefslogtreecommitdiff
path: root/docs/free-hardware-designs.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/free-hardware-designs.md')
-rw-r--r--docs/free-hardware-designs.md484
1 files changed, 484 insertions, 0 deletions
diff --git a/docs/free-hardware-designs.md b/docs/free-hardware-designs.md
new file mode 100644
index 0000000..14841df
--- /dev/null
+++ b/docs/free-hardware-designs.md
@@ -0,0 +1,484 @@
+---
+Generator: 'texi2html 1.82'
+description: Untitled Document
+distribution: global
+keywords: Untitled Document
+resource-type: document
+title: Untitled Document
+...
+
+1. Free Hardware and Free Hardware Designs {#free-hardware-and-free-hardware-designs .chapter}
+==========================================
+
+> 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?
+
+### Definitions {#definitions .subheading}
+
+*Free software* 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 the four essential
+freedoms.[(1)](#FOOT1) To emphasize that “free” refers to freedom, not
+price, we often use the French or Spanish word “libre” along with
+“free.”
+
+Applying the same concept directly to hardware, *free hardware* 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.
+
+Thus, the concept we really need is that of a *free hardware design.*
+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.
+
+Then we can refer to hardware made from a free design as “free
+hardware,” or “free-design hardware” to avoid possible misunderstanding.
+
+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
+Flash Player and Angry Birds are gratis although they are not free.)
+Saying “libre” along with “free” helps clarify the point.[(2)](#FOOT2)
+
+@firstcopyingnotice{{@footnoterule @smallskip Copyright © 2015 Richard
+Stallman\
+ {Most of this article was published in two parts on the [Wired](Wired)
+web site, as “Why We Need Free Digital Hardware Designs” (Wired,
+11 March 2015,
+<http://wired.com/2015/03/need-free-digital-hardware-designs>) and
+“Hardware Designs Should Be Free. Here’s How to Do It.” (Wired,
+18 March 2015,
+<http://wired.com/2015/03/richard-stallman-how-to-make-hardware-designs-free>).\
+ It was published on <http://gnu.org> in 2015. This version is part of
+@fsfsthreecite}
+
+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, but not exactly gratis since you will have
+to pay for the raw materials. 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.
+
+The terms “open hardware” and “open source hardware” are used by some
+with the same concrete meaning as “free 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 without
+talking about freedom or presenting the issue as a matter of right or
+wrong.[(3)](#FOOT3) 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.”
+
+### Hardware and Software {#hardware-and-software .subheading}
+
+Hardware and software are fundamentally different. A program, even in
+compiled executable form, is a collection of data which can be
+interpreted as instruction 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 physical form or embodiment.
+
+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.
+
+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.
+
+### The Boundary between Hardware and Software {#the-boundary-between-hardware-and-software .subheading}
+
+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.
+
+There is a gray area between hardware and software that contains
+firmware that *can* be upgraded or replaced, but is not meant ever to be
+upgraded or replaced once the product is sold. In conceptual terms, the
+gray area is rather narrow. In practice, it is important because many
+products fall in it. We can treat that firmware as hardware with a small
+stretch.
+
+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.
+
+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.
+
+As of 2015, free software tools are available for programming the
+Lattice iCE40,[(4)](#FOOT4) 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 free
+tools,[(5)](#FOOT5) but those do not support HDL input. We recommend
+that you reject other FPGA models until they too are supported by free
+tools.
+
+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).
+
+### The Ethical Question for 3D Printers {#the-ethical-question-for-3d-printers .subheading}
+
+Ethically, software must be free;[(6)](#FOOT6) a nonfree program is an
+injustice. Should we take the same view for hardware designs?
+
+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)
+*must* 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.
+
+Be careful to choose 3D printers that work with exclusively free
+software; the Free Software Foundation endorses such
+printers.[(7)](#FOOT7) Some 3D printers are made from free hardware
+designs, but MakerBot’s hardware designs are nonfree.[(8)](#FOOT8)
+
+### Must We Reject Nonfree Digital Hardware? {#must-we-reject-nonfree-digital-hardware .subheading}
+
+Is a nonfree digital[(9)](#FOOT9) 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?
+
+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.
+
+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.
+
+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.
+
+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.
+
+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.
+
+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
+John H Hacker’s modified version of a digital hardware design, as they
+could run John S Hacker’s modified version of a 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.
+
+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.
+
+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.
+
+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.
+
+That future is years away, at least. In the meantime, there is no need
+to reject hardware with nonfree designs on principle.
+
+### We Need Free Digital Hardware Designs {#we-need-free-digital-hardware-designs .subheading}
+
+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.
+
+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.
+
+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.
+
+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.
+
+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.
+
+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.
+
+### Levels of Design {#levels-of-design .subheading}
+
+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.
+
+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.
+
+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.
+
+Thus, we need to distinguish *levels* 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.
+
+However, if a design at one level combines free and nonfree parts—for
+example, a “free” HDL circuit that incorporates proprietary “soft
+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.
+
+### Licenses and Copyright for Free Hardware Designs {#licenses-and-copyright-for-free-hardware-designs .subheading}
+
+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.
+
+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.
+
+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.
+
+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.
+
+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,[(10)](#FOOT10) but does cover decorative aspects. When one
+object has decorative aspects and functional aspects, you get into
+tricky ground.[(11)](#FOOT11) 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.
+
+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 “intellectual property” is pure confusion and should be totally
+rejected.[(12)](#FOOT12)
+
+### Promoting Free Hardware through Repositories {#promoting-free-hardware-through-repositories .subheading}
+
+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.
+
+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.
+
+For digital designs, I suggest that the repository insist on GNU
+GPL v3-or-later, Apache 2.0, or CC-0. 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-SA, CC-BY or CC-0. For
+decorative designs, it should GNU GPL v3-or-later, Apache 2.0, CC-0, or
+any of the CC licenses.
+
+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 STL format
+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.
+
+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.
+
+### Free Hardware and Warranties {#free-hardware-and-warranties .subheading}
+
+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.
+
+### Conclusion {#conclusion .subheading}
+
+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.
+
+<div class="footnote">
+
+------------------------------------------------------------------------
+
+### Footnotes
+
+### [(1)](#DOCF1)
+
+@raggedright See @pageref{Definition} for the list of the four freedoms.
+@end raggedright
+
+### [(2)](#DOCF2)
+
+@raggedright For a growing list of the ways in which surveillance has
+spread across industries, see
+<http://gnu.org/philosophy/proprietary/proprietary-surveillance.html>.
+@end raggedright
+
+### [(3)](#DOCF3)
+
+@raggedright See “Why Open Source Misses the Point of Free Software”
+(@pageref{OS Misses Point}) for more on this issue. @end raggedright
+
+### [(4)](#DOCF4)
+
+@raggedright See <http://clifford.at/icestorm/>. @end raggedright
+
+### [(5)](#DOCF5)
+
+@raggedright See <https://github.com/Wolfgang-Spraul/fpgatools>. @end
+raggedright
+
+### [(6)](#DOCF6)
+
+@raggedright See “Free Software Is Even More Important Now”
+(@pageref{More Important Now}). @end raggedright
+
+### [(7)](#DOCF7)
+
+@raggedright See <http://fsf.org/resources/hw/endorsement>. @end
+raggedright
+
+### [(8)](#DOCF8)
+
+@raggedright Rich Brown, “Pulling Back from Open Source Hardware,
+MakerBot Angers Some Adherents,” 27 September 2012,
+[http://cnet.com/news/pulling-back-from-\
+open-source-hardware-makerbot-angers-some-adherents/](http://cnet.com/news/pulling-back-from-%3Cbr%3Eopen-source-hardware-makerbot-angers-some-adherents/).
+@end raggedright
+
+### [(9)](#DOCF9)
+
+@raggedright As used here, “digital hardware” includes hardware with
+some analog circuits and components in addition to digital ones. @end
+raggedright
+
+### [(10)](#DOCF10)
+
+@raggedright See the US Copyright Office definition of “useful article,”
+at <http://copyright.gov/register/va-useful.html>. @end raggedright
+
+### [(11)](#DOCF11)
+
+@raggedright An article by Public Knowledge (“3 Steps for Licensing Your
+3D Printed Stuff,” 6 March 2015,
+[https://publicknowledge.org/assets/uploads/documents/\
+3\_Steps\_for\_Licensing\_Your\_3D\_Printed\_Stuff.pdf](https://publicknowledge.org/assets/uploads/documents/%3Cbr%3E3_Steps_for_Licensing_Your_3D_Printed_Stuff.pdf))
+gives useful information about this complexity, for the US, though it
+falls into the common mistake of using the bogus concept of
+“intellectual property” and the propaganda term “protection,” which
+should not be used in connection with copyright. See
+@pageref{Protection} for the reason why. @end raggedright
+
+### [(12)](#DOCF12)
+
+@raggedright See “Did You Say ‘Intellectual Property’? It’s a Seductive
+Mirage” (@pageref{Not IPR}). @end raggedright
+
+</div>
+
+------------------------------------------------------------------------
+
+This document was generated by *tonghuix* on *March 25, 2016* using
+[*texi2html 1.82*](http://www.nongnu.org/texi2html/).\