Hardware Designs Should Be Free. Heres How to Do It

We must design free hardware. But the question remains: how?

First, we must understand why we cant make hardware free the same way we make software free. 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.

About

Dr. Richard Stallman launched the free software movement in 1983 and started the development of the GNU operating system in 1984. GNU is _free software_: everyone is free to copy it and redistribute it, with or without changes. The GNU/Linux system is used on tens of millions of computers today.

By contrast, hardware is a physical structure and its physicality is crucial. While the hardwares design might be represented as data, in some cases even as a program, the design is not the hardware. A design for a CPU cant execute a program. You wont 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 cant convert the design into the physical structure it describes. That requires fabrication equipment.

Software has levels of implementation; a package might include libraries, commands and scripts, for instance. But these levels dont 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 built 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 chips 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.

See the article here:
Hardware Designs Should Be Free. Heres How to Do It

Related Posts

Comments are closed.