Sunday, November 30, 2008

What is Open Source Hardware, really?

I was reading through Phil's recent article profiling tons of different open source projects over at the Open Source hardware guide at Make Blog, and it got me thinking... what is open source, really? It reminded me of a recent conversation I had with Tom Igoe about why Open Source hardware is so much harder to define than software was and how he and the rest of the Arduino team wrestled with it. And that time I had dinner with Chris, Mike and Paul Badger , and talked about how Paul thinks about "Open Source" with his students.

Phil's article also reminded me of conversations I had with Karim Lakhani about the topic of open source collaboration, networks, and peer production. In the software world, it's relatively straightforward, because source code is infinitely replicable, easy to share, can be edited by almost anyone (willing to learn the programming language and owning a PC). But on the hardware side, it's not easy to define academically, which is no help to guys like me actually trying to make open source stuff!

Coincidentally, I just gave a presentation to some students up in Boston from MIT and Harvard (and a few stragglers) who were interested in Open Source hardware. The forum was dedicated to open source concepts and topics, and how to get started with your own open source project. I decided to meet with some professors ahead of time, to try to get a more theoretical approach to the problem. In those discussions, I got some interesting responses and of course some difficult questions I hadn't thought of before:

-Is hardware "open source" because you can change it, make it yourself, expand it, or customize it? What actions can I do with an open source device that I can't do with a proprietary one?

-What precisely about the hardware needs to be open? PCB traces? Etching chemicals and fiber boards? Transistors and gate arrays? How low down the hardware stack does it need to go before you call it open?

-How do you compare two different projects to each other? Can you ever say one project is more or less open than another? Is "open sourceness" a binary attribute, or can it be a spectrum?

-What is the goal of open source hardware, and why do we need more of it?

-Where does someone go to get started making their own open source hardware?

-If someone builds a project, what decisions do they make that leads them to open source vs. proprietary vs. closed?

-What the analogy of "source" mean to hardware? Is it figurative or literal? Is it the firmware, is it the logic inside a discrete IC? Is it the synthesized VHDL core in a microprocessor?

-Can something ever be open source if it includes proprietary, closed components like professionally built microprocessors? Is "open sourceness" in hardware a recursive attribute, like it is in GNU software?

So my first conclusion was: there's a lot more to think about here than I first thought - I knew it was hard, but this is a lot to bite off for one presentation. My second observation was: it's easy to overlook a lot of what makes something really feel "open". I think I went into the discussions thinking something could be either "open source" or not, but I left with the feeling that open source was more fuzzy than I'd originally thought. In fact, someone recommended that I read up on some of Richard Stallman's original posts on open source, where he ran into many of these same questions - maybe he'd have some answers.

In any case, I wrapped up all of my thoughts, and put together a presentation, which I've uploaded here for anyone to read through. I tried to capture the different opinions about open source hardware, and profiled a few projects I'm involved with, in order to propose a definition of what "open source hardware" really means. This it the first time I've used slideshare, so I hope it works!

What Is Open Source Hardware?
View SlideShare presentation or Upload your own. (tags: open source)

Thanks a lot for all the feedback and ideas! And let me know if you want a copy of the presentation...


Unknown said...

I gave a few talks with phil about Open Source Hardware a few years ago. Much like the legal system we have in the US, i believe that OSH should relate to the long and tested history of Open Source Software.

OSS succeeded largely because it was defined to be very generous.
A big part of OSS license requirements is that there can be no restriction on use. That means you cant say that a specific group can't use your design for -any- purpose, even if its a business or military. That's why its 'free as in speech' not just 'free as in beer'

schematics/netlists/layouts can be re-drawn in any program. microcontrollers can be swapped if the chip is discontinued (thanks Turing!) What is most important is that any code and schematics and BOM (if its not embedded in the schem) are released under an Open Source license.

For example, if matt s. wants to design a waveshield v2.0 based on my waveshield design (which is CC SA-BY lic'd), have it manufactured, and sell it in the liquidware store, he is completely free to do so as long as he give credit. however, if i wanted to make an LCD shield based on the touchshield schematics, would that be OK? from what it says in the presentation ('personal use only') it sounds like the answer is 'No'.

The arduino team innovated not by just creating the arduino, but by allowing others to share & profit. Part of what allowed arduino to become so popular was that it was fully open source, from firmware to software to hardware.

I've benefited from that, so I have decided to do the same.

Justin said...


I've been looking around and piecing together my own sense of open source hardware. You've clearly taken one angle at it. I'd say open source can be considered at many levels, be it software, firmware, hardware, or even further as you talk about in your presentation.

But I don't know that I could go so far as to quantify the degree to which something is open source. And it seems like though you make a good point about the levels of open source, I'd take these independently as being just open source software, open source firmware, open source hardware, open source cores, etc...and to be "100% open source hardware", you wouldn't necessarily need to get to the level of gates and cores. But that's just my 2 cents, and the presentation looks fantastic!

Unknown said...

matt and i were talking about this via email, here's some of it so everyone can chime in -- were talking about liquidware's products OSH vs OH-NC, etc.. my guess, you don't want someone making your shields (yet) so you'll do a non-commercial license. arduino didn't go that way, they just trademarked the name - but anyone can make arduino clones if they want and sell them, they just can't call them arduino - this is linux and firefox (software example).

one thing that i think that is really important and where i think we have different opinions is about open source hardware and commercial usage, it's almost -the- most important thing, or close to. i'm going to try and convince you of this in person :) --- also, chat with tom igoe about this specifically - i think he's echo this particular point and bring up a whole bunch of other good ones.

for hardware to be "open source hardware" commercial use needs to be permitted, otherwise it's "open hardware" with a non-commercial license or something like that. if arduino said "non-commercial use" you could not sell projects that used arduino or parts of the projects. i think we're all benefiting from what arduino did, it's good business and good innovation.

each "layer" of hardware can be open in different ways or not at all, but i think in the end commercial vs non-commercial is what needs to be super-clear. i tend to call things open hardware that have any or some open parts and reserve "open source hardware" for about 65 or so "pure" projects, granted there's debate about that, the AVR on an arduino is not OSH but you could technically use any processor (turing complete) so in a sense, that might not matter.

also, if someone makes a business around arduino but doesn't offer others the same chances and opportunities because of the way arduino released things it seems like more value could be extracted than put in - i think everyone in the "open" world tries to add more value than they take away.

the trend of OSH looks a bit like "open source" software which is pretty well defined...

this is pretty hardcore and not all hardware will ever fit that, so that's why i think we'll see open hardware nc and osh... TAPR has this:

i don't think i'd ever want to try and do percentages of openness of projects, but the framework you have is a great start for folks to figure out what's open on each layer - it could be used to generate a document or description. for example, something could have firmware, software and schematics, but non-commercial - it could be like the creative commons generator, in the end you'd get a "badge" of sorts that was clickable / readable about all the parts. some parts might be copyrighted, others might even be patented (chumby). speaking of chumby, you should really talk to bunnie, he's the daddy or perhaps uncle of OSH in a lot of ways.

i like what just said, maybe it's "open hardware" and from their you drill down to... open hardware: firmware open/software open/ etc etc. i think there's always going to be granularity that needs to be stated, but not as a percentage but as specific text.

good stuff!

Unknown said...

Hi Matt,
The slides look great; you made a lot of progress on the them since you last showed them to me. A question I always ask is, "is Open Source Hardware Real?", I remember thinking that no device is purely ("100%") Open Source. ICs aren't easy to enhance and parts cost money... I think anything is enhanceable, as long as no one is patenting or licensing trademarks.

"matt s. wants to design a waveshield v2.0 based on my waveshield design "

I second Limor; you and Limor should build a media shield together.


Prakash said...

I've been hooked on to open source hardware only in the past month and here is my simple outlook on opensource - "Knowledge is Free. We acquired all knowledge from the world and need to give it back. So OpenSource is all about giving away knowledge you acquired back to the community. I think this would simplify the definition - if you share what you think is neccessary for someone to learn from, replicate and build upon the knowledge you share then thats opensource."