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.
and
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.