Wednesday, July 14, 2010

OSHW and design tools

Finally, there's some movement towards a unified concept of what "open source hardware" really is. Adafruit has posted their opinion on the matter for some time, and there have even been a couple of attempts to make an actual license to cover it.

What prompted this post is a developing sticking point in the issue: design tools. The discussion below references the "Definition of Free Cultural Works" linked to above.

In section 1, "Documenation", find the following passage:
The documentation must include design files in the preferred form for which a hardware developer would modify the design.
There's a lively Twitter debate (140 characters at a time isn't enough)(and I hate clogging the feeds of non-participants) between myself and Adam and Matt of Wayne and Layne about the implications of this statement regarding the tools which can be used to do the development as well as the file formats used to distribute the design.

As a burgeoning OSHW developer myself (along with fellow TCMaker member Pat), this is one of the first places my mind went. I was concerned (VERY concerned) that a part of the OSHW definition was going to be a mandate that designs be distributed in a format editable by a free program, or at least a format created by an open source program.

Why is this an issue for me? Because all my designs are built in Proteus, which is not free, nor open source.

I've tried Kicad, and I didn't care for it. It was unintuitive enough that I didn't feel it was worth working at learning. Same goes for Eagle (which, due to its pricepoint, is the darling of the hobbyist community). In fact, my first experience with Eagle, back in college in 2001, was what spurred me to find another solution. I've done schematic capture with OrCAD, which is expensive and uninspired but industry standard, and edited PCB designs with PADS, which is the poster child for an unintuitive UI. I've tinkered with several proprietary PCB house programs; they work okay but locking myself into a particular vendor is not an idea I relish.

That said, I think I can cautiously say that I've sniffed around enough to know what I like. Proteus has, so far, been far and away the winner.

But what does this mean as far as calling my work "open source"? Proteus isn't terribly expensive (the base price is $250, which will cover anything a hobbyist is likely to do), but it certainly isn't free, which means lots of hobbyists will find themselves effectively locked out of my designs (at least, as far as modifying them; there is a trial version that will allow them to view the files natively).

The debate started with the following tweets from @mbeckler:
I'm a bit troubled by the Open Source Hardware (OSHW) draft definition not mentioning closed vs open file formats and CAD tools.
If I have to purchase an expensive CAD tool to use your "open source" schematics or board layouts, it's not really Open, is it?
The problem, as I see it, is that subjective term "expensive". For some folks (okay, LOTS of folks), that $250 price tag on Proteus is completely unmanageable- having tried to learn Kicad and having watched Adam give a demonstration at the Hack Factory, with several crashes and a slightly clumsy web-based autorouter, I feel like the true price of that "free" package is more than I'm willing to pay. (EDIT: Per Adam's comment below, I'll stipulate that the demo wasn't under the ideal conditions. And that it was not his fault. However, my usability complaint based on my own experiment with it stands- it's not easy enough to use for me to move away from my perfectly good (albeit non-free and closed source) existing solution).

A key question to be addressed is WHY open your hardware designs? For me, it's to allow people to hack it and learn from it. To that end, while I will certainly provide the original design files, I feel that my primary responsibility as an OSHW community member has been acquitted if I provide the following information:
  • Schematic in a readily readable format (.png, .pdf, .svg, etc)
  • Board layout in a readily readable format (Gerber, .png, .pdf, .svg, etc)
  • Source code in a readily understandable format (plain text, well commented)
  • Solid assembly documentation
  • Solid theory documentation (how it works and why it's designed the way it is)
Obviously, of course, creation of derivative works is a major part of the open source ethos; some of No Cube's early products will be derivative from Arduino. Does that mean I have to bend over backwards to make sure that my design files can be modified by anyone who comes along? Does that, therefore, imply that my original design files need to be created in a free program? I think not, because no matter what program I choose, the possibility always exists that the creator of a derivative work will want to use a different tool. In fact, given the number of viable free options, even, I'd say it's basically a certainty that some subsequent creator will NOT want to use my tool.

In the end, so long as I provide thorough and approachable documentation of the design, the original design tool shouldn't matter, nor should the file format of the design documents. A good example is Adafruit- they would seem to be doing their design work in Eagle, but they provide documentation in other formats (although Eagle is still required to view their physical layout).

I'm definitely going to pay attention to this one and weigh in whenever I can; personally, I think strict requirements on the design tools for "valid" OSHW would be contrary to the core spirit of the open source ethic.


  1. I think it isn't fair to neglect to mention that the Kicad demonstration was on a borrowed laptop that had been installed with a new OS hours before with an unofficial, outdated Kicad package. There was video cable mixup and I used what was available. I mentioned that caveat before giving the demo.

  2. good stuff, we don't think the tools matter and the definition says that we think. we agree what what you said (and thanks for the mention).. "as I provide thorough and approachable documentation of the design, the original design tool shouldn't matter, nor should the file format of the design documents"

  3. This is a definition, and not a license. And this definition intentionally leaves a lot of room for individual licenses to resolve ambiguities-- much as the open source (software) definition leaves rooms for more and less restrictive license terms.

    Perhaps some OSHW license will evolve that requires that only open file formats to be used.

    For now, in your case, as well as that of Adafruit, Chumby, and others, it's the community's view that proprietary formats are acceptable for the design files. BUT, you do still need to release those design files, along with whatever other documentation (PDFs, gerber, etc.) that you feel is necessary. The design files are the "source code," and while the compiled output (gerbers and all) are nice, you fundamentally can't skip over this requirement. It's not open source without the source.

  4. This comment has been removed by the author.

  5. My board house tried to tell me that I could release my design in their proprietary format and call it "open source" ... to which I had to snicker. For me, using their tool is the balance I've struck between getting my product out to the market and doing what's right. And while I'm finding the time to suitably train myself on tools that will provide an open format, I've at least released all of my firmware as open source. I'd prefer to be able to release everything, but, I can only do so much with my waking hours, so I'm choosing to try to grow my market.