I like the spirit of the definition, but I would propose two amendments for clarity:
- provides design files -> provides all relevant design files (otherwise hardware where only partial or incomplete design information is available would qualify)
- software it has developed that is essential to the proper functioning -> necessary or required instead of essential ("essential" is a very strong word, potentially allowing to exclude software that is usually required, but not absolute essential under all circumstances)
--Christian Siefkes 16:02, 21 April 2010 (UTC)
I like that you're riffing off the Open Source Definition, but let me give you a heads-up that the OSD talks about the license under which software may be distributed. The assumption is that if certain legal permissions are preserved, that the desired open source effect of collaborative development will occur. That is not necessarily true. Something more is needed, but we're not yet clear on how to put that into contract / agreement form.
220.127.116.11 14:57, 3 May 2010 (UTC) (Russ Nelson)
OSHardware vs OSDesign
I am looking for a CC-BY or CC-BY-SA type license for the Open Moto X project. However after spending a few hours time reading about TAPR, OSI, c,nn,m, CC and others my brain is struggling to understand if the various open source hardware licenses (including the OSHW license) are specifically for Hardware i.e: processors and associated systems that run software or if it might also be applied to physical objects in general that are also "hardware" but are more often referred to as "Designs". Of course the OMX bike will include a Battery Management System that will include hardware and software but I would prefer to use one (simple to understand) license if possible. I am hoping that OSHW might eventually be it. --Payo 13:55, 12 May 2010 (UTC)
CC Grant Application
Broadening the definition
I like the definition in principle, but I think for broader commercial adoption the license needs a couple of tweaks.
First, the clause about requiring all OSHW to be released with essential code prevents any OSHW design from using proprietary sub-components. In an ideal world we could demand that all the vendors comply to OSHW so that we ourselves can release OSHW-compliant designs. However, in reality restricting all designs to only use OSHW-compliant hardware essentially relegates OSHW to only a small subset of components; unfortunately, some of the most interesting components -- high-end CPUs, cellular modems, wifi chipsets -- do not comply to this. So unless we want to define a world of OSHW that explicitly excludes using such components, I think the definition needs a little refinement.
I would propose softening it up such that the distributing body, system integrator, or immediate author is required to release only their own essential code and improvements. This means that only the value you or your organization that's attempting to create OSHW adds is required to be distributed and released, but you don't have to require vendors to also comply. It's a chicken and egg problem, and if enough people start releasing with OSHW eventually the ecosystem will convert, but for starters we are plugging into a closed ecosystem so this interoperability clause is essential for broad adoption, in my opinion. The devil is of course in the details of the definition, and there's ways people can work the system to "get around" releasing certain key components, but also the boundaries between components and system integration are much more clearly drawn on hardware than on software, where the distinction between libraries and the final program often melt away.
Second, the clause about the preferred format for modification doesn't set well with me either, because there is no universal preferred format for modification in the hardware world (unlike in the software world where ASCII text seems to be pretty common, and there's multiplicity of interoperable editors that can view and modify ASCII text -- if only hardware's biggest interchange problem was CR/LF!). I don't want to bake into the OSHW license any implicit "champion" for OSHW design tools, or to inadvertently promote one design tool over another. I'd suggest that the least common denominator for information exchange in hardware is a printed or printable schematic (PDF, PS, ASCII art, JPEGs) and that should the minimum for OSHW distribution; CAD-specific binaries are a nice plus when possible. To wit, the way the clause is written, certain large companies that make their own proprietary in-house design tool can distribute their schematics in their internal format, which nobody else can read because the CAD tool is proprietary, and yet claim to be compliant because they've released it in the form preferred for their hardware designers. Also, I don't want to have to install or license one copy of every possible CAD tool simply to view schematics, even if the tools are open source. As a first cut, a PDF is good, and then on follow-up I'll ask for binary CAD once I've had a review of the schematic.
Despite these concerns, I think that the definition overall is great progress and I'll sign it personally to keep the momentum going.
Open vs. Recursively Open
You seem to be contrasting two possible degrees of openness by saying that that "open" should impose few constraints on a thing's means of production and that "more open" might impose more constraints. This makes me think that we need another word. Perhaps "recursively open" is a good way to describe the kind of open hardware whose components and means of production are themselves recursively open?
--Michael Stone 12:04, 15 July 2010 (UTC)
Open Data Formats and CAD Tool License Conflicts
As it relates to the broader open source community, collaboration and contributions, requiring data be submitted in any tool vendor specific format could also risk conflict with 3. Derived Works. For example, CadSoft's EAGLE - used in a lot of open source hardware projects - has a Freeware version with a non-profit only criteria. A thousand Freeware contributors feeding a dozen Commercial-permitted maintainers doesn't sit well with me; contributing via Freeware may infect the project with the non-profit condition.
Excluding gerber and other low-level formats from 1. Documentation makes things even more complicated. At least that's an ASCII format that can be parsed and diff'd either directly or through some graphical XOR mechanisms.
All the more reasons to get gEDA and equivalents ramped up. ;-)
I don't think it's fair to maintainers to tell them they can't demand submissions be made in the format of their choice any more than it is to say that they can't demand that submissions to a F/OSS project be in the language of that project. EDA/CAD tools are typically difficult to use and all merging of changes must be done by hand. It's too much to ask them to license, install, and learn some new tool as well.
If you don't like their choice, fork the project.
-- Pierce Nichols
I too can't wait for gEDA to ramp up. I've got a bunch of designs I want to licence under an open source agreement but my CAD package is very obscure. I don't feel right releasing those design files as they will be next to useless for the average user.
-- Daniel Garcia
Design representation file formats
In the Open Manufacturing community, one of the ideas that has spawned is this concept of thinking of STL/meshes/jpegs as kind of like "binary objects". Yes they are useful if you have the same machine that you "compiled" the object on, but they are not really design files in the sense that constructive solid geometry (CSG) or boundary representation (b-rep) CAD files are, like ISO 10303-21 (STEP) or IGES or the myriad of other formats. It's also interesting from a community education perspective, because a lot of people think that Google Sketchup is a CAD tool, and that Blender is a CAD tool (blendercad), when in reality the fundamental data representations are different. In my view, I would favor SVG over JPEG any day. I suspect that static image files are covered by Creative Commons licenses, and when we're talking about "modifications" to designs, that's like a diff applied to SVG or STEP. Right? Can we get a little more coherent in what we're talking about? :-) -- Bryan
Human Readable vs Best Practices
I see the current v0.3 OSHW content breaking out into two parts for a v0.4: base-level Human Readable requirements for OSHW to be considered "open source" (i.e. at least one human-readable representation of the underlying design) and Best Practices ( gEDA > EAGLE, Collada > STL, EDIF > Gerber, etc.)
I endorse the requirement for human-readable design documents. In particular, I'd like to see solid BoMs and netlists for electronics designs and, to the extent possible, similar documentation for mechanical designs.
I'm not so fond of your best practices. gEDA is a long way from being where Eagle is, and even Eagle is somewhat low-powered compared to many pro-level CAD/EDA packages. EDIF is a substitute for Eagle/gEDA/etc files, not for Gerbers. I think Gerber 274X files should be considered the standard for board artwork -- all the tools speak it, it's human readable and modifiable, and every board house on the planet understands them. What's not to like?
-- Pierce Nichols
As it relates to Best Practices, it's that EAGLE Freeware "non-commercial" clause that has me more concerned.
It's not just a problem with Eagle -- there are a lot of desirable tools, libraries, and standards that are similarly encumbered. I'm particularly concerned about ZigBee because it impacts a project I'm working on right now, but it's a general problem and the definition as written does not address it. I'd like to see an explicit statement that recursive openness is not required for a project to qualify under this definition.
-- Pierce Nichols
We're actually in complete agreement. As it currently stands, OSHW v0.3 won't scale to meet the needs of a working, hierarchical design flow with dependencies on black-box, legacy and/or protected IP. Being the (IC) EDA geek that I am, I'm going to have to collect and organize all my thoughts before incorporating anything here.
Least Common Denominator
The issue of "preferred modification format" is central if the point of the OSHW is to permit design modifications. By way of example, if I want to conform to the OSHW but want to be able to squash anyone who modifies the design I could, in theory, release design documents in a proprietary format usable only from within proprietary software that I license under my terms. I can then deny a license to the CAD software to anyone who attempts to modify the design.
It is non-trivial to re-create a design of any complexity, by which I mean to re-create an editable copy from a read-only copy such as a pdf. Such a process would be large and error prone. Without the ability to edit the design and produce a modified product the "open" moniker is meaningless.
There is an analogous problem regarding Open Source Software which, to my mind, has not been addressed. The code itself has long been considered to be the "design document" for a piece of software. Unfortunately I believe this to be a flawed assumption. The specification of a piece of software is it's human readable documentation, not it's code. It is impossible to use, or understand the functioning of and hence understand how to modify, a program of any reasonable size without human readable documentation. FLOSS does not require that a program's documentation be open, it requires only that the code be open. Hence there is the problem of the program with open code but closed documentation. Reproduction of the proprietary documentation in an open format is non-trivial, error prone, and critical to get right if one wishes to fork. A program without documentation is both unusable and unmaintainable because without documentation/specification it's impossible to tell exactly what it is the program _should_ do. (FWIW, we see this playing out right now with MySQL. The MySQL code is open, but the documentation is closed. There are supposedly forks of MySQL but none seem to be documented and so the functionality of the forks is entirely under Oracle's control, because Oracle owns the MySQL documentation.) The problem of an open specification is hidden when it comes to open software but is an immediately apparent problem when it comes to open hardware.
I see no way around this other than to require design documents be published in a well-defined open format. Deciding exactly what "a well-defined open format" is the tricky part. My inclination would be to follow the lead of the IETF, which after all has lead to the production of a lot of inter-operable hardware.
An open format, a format in which OSHW design documents must be published, is one that itself has specifications which:
1) are available free of cost (and patent encumbrances!) and (copyleft clause here) can be freely re-distributed by anyone.
2) have at least 2 independent, working, inter-operable implementations (CAD programs).
These are strict requirements but are the only way I can see out of the problem. Adopting them would certainly avoid bunny's concern about promoting a specific program.
If you wanted to fudge you could have 2 different OSHI definitions, a loose and a strict one. The loose one would allow publication of design documents in an open but non-editable format where the strict one would conform to the requirements I suggest above regarding having an open editable design document. Somehow this sounds like trouble in the making but does represent some sort of compromise. At least those who use the "loose" form would then have a warning of potential problems.
-- Karl O. Pinc
There are no existing mechanical or electronic CAD formats that meet both prongs of your requirement. Even the ones that are nominally open and widely supported (EDIF, DXF) are treated as output or interchange formats by the existing applications.
-- Pierce Nichols
- What is wrong with an interchange format? If it truly "interchanges", ports between different editing applications, then that's what's wanted.
- -- Karl O. Pinc
Uh, Pierece, consider SVG and IGES. I also suggest that if there are any format-related restrictions, we should be specific about what our goals are. For instance, I am tired of downloading an open source hardware project only to find that it is defined in the STL format, which while an "open" format, is pretty much useless for design purposes (which is what open source hardware is about, presumably). -- Bryan
SVG's not a CAD format; it's an output format. While just about every 3D modeler will import and export IGES (as well as STEP and STL) it's not really a native format for any of the ones I am familiar with. Therefore it is not the preferred format for doing modifications, and it does a poor job (at least IME -- mostly SolidWorks and Pro/E) of preserving higher level design data.
The closest thing to an open CAD format that meets the above definitions is DXF, simply because its core is well documented and it's widely supported. Autodesk's failure to document some of the more advanced features makes it only partially open, however.
-- Pierce Nichols
Bryan, that gets to the krux of the matter. The OSHW Definition itself needs to be format-agnostic. As long as a given project's works are available in a human-readable format, an unencrypted manufacturable format, and the source files in which edits are performed, it should be considered Open Source Hardware.
- If the design files are available in human-readable form then I (the end user/consumer) can understand how things work, debug problems, and "edit" my hardware. This is also the most future-proof format you'll ever get.
- Think of all those 50yo tube radios with schematics pasted to their insides. They can still be fixed and re-built from scratch if you can source or make the parts yourself.
- Worst-case, I will be able to re-capture the project into my preferred design environment and fork to my heart's content independent of whether the manufacturable and/or editable forms are accessible.
- If a manufacturable format is present, I can send the DXF drawings to the machine shop, gerber to the factory, STL to the fab house, and/or print off my own versions of that specific implementation.
- I can import these files into the editor of my choice and do tweaks as needed, or instantiate them as required in my own project(s).
- This is less future-proof in that "manufacturable" changes over time. For example, most semiconductor fabs won't take designs on rubylith these days; GDSII is the norm. The forward-port can be automated, but it might be faster to start with the human-readable source to adapt to everything else that has changed in the meantime.
- If the source design files and databases are available, I might be able to do edits directly, but for legacy reasons I don't depend on that being possible for all time.
- This may very well be the least future-proof option of them all.
- Choose an tool-agnostic formats where you can to future-proof them. I prefer plain-text and zipped XML (OpenOffice, Collada, even MS Office XML) because they preserve the hierarchy and are easy to postprocess in nearly all programming and scripting languages. When necessary, I parse "native" formats into an XML intermediary to do the same.
- It should be up to the project managers to define what subset of formats submissions (if any) may be made in.
That's the way I see things for the time being; I reserve the right to change my mind. ;-)
-- Andrew Plumb
ZigBee, OSHW, & non-commercial licenses
It's impossible to create a product using ZigBee that meets the terms of the definition. The popular XBee modules are closed entirely, and it is impossible under the terms of the license for the ZigBee standard to create a ZigBee system that is compliant with this definition, specifically the non-discrimination clauses. This is because while the standard is freely available for non-commercial use, commercial users must pay a substantial license fee.
I would like to see the non-discrimination clauses modified in such a way that it is possible to implement ZigBee or other free for non-commercial use protocols/standards in OSHW.
I spent some time mulling over it last night, and I think that although the wording needs work, this ZigBee case might be roughly covered under 10. License Must Not Restrict Other Hardware or Software. You should be free to control a ZigBee module (eg Digi XBee ZB) as long as the licensing fee is incorporated into the off-the-shelf cost of the module. I would expect that the manufacturer selling the ZigBee module should have paid that licensing fee.
The devil's in the details as always, but one idea I had was that the wording could change to accomodate some sort of box test metrics for inclusions of non-OSHW dependencies.
-- Andrew Plumb
There are a number of uCs on the market now which have integrated 802.15.4 radio hardware, such as that Atmega128RFA1. In order to get them to function in the intended way, you need some kind of network stack on them. If it's a ZigBee stack of any description, you'll at minimum run afoul of the non-discrimination clause.
However, a way out just occurred to me -- ZigBee is not the only standard network stack built on 802.11.4. The MAC layer protocol is not bound by restrictive licensing and I believe the uracolix project is putting together a truly free implementation. If you need to talk to an XBee module or other ZigBee things, you can download BitCloud yourself and cope with its non-free (and closed source) nature as you see fit.
-- Pierce Nichols
The more I think about it, the more I come to the conclusion that the box test solves essentially all of my issues.
-- Pierce Nichols
Making a license around this
Fundamentally, the problem with patent law in the United States- where many of the signees are living- is that patents allow someone the right to "exclude others" from making, using, or selling the patented invention unless the patent has expired into the public domain. Open source software is able to function because of a hack on top of copyright law. However, there has been no such hack as of yet with patent law, especially since the moment you invent, build or design something, you are not issued a patent. For this reason and others, I have been spending time trying to figure out a way to make a license out of something that matches the OSI open source definition for hardware, knowing that the "rights" secured by copyright do not necessarily apply. It's a tricky question! There is lots of content on this subject in a public mailing list archive located here, like my transcripts from talking with various law firms, public discussion of how open source hardware might work, and various legal vehicles to make the legalities work out. -- Bryan
OSHW Executive Summary
Here's what I've come up with so far in the way of what an executive summary of the OSHW Definition might look like:
- Documentation: Establish and facilitate the right to repair
- Necessary Software: Operates using Free Open Source Software
- Derived Works: The right to fork the project.
- Free Redistribution: Pay for parts, not permissions. No restriction on the sale of parts.
- Attribution: Give credit where it's due.
- No Discrimination Against Persons or Groups: Respect is earned.
- No Discrimination Against Fields of Endeavor: Make recommendations, not restrictions.
- Distribution of License: Share Alike.
- License Must Not Be Specific to a Product: The right to re-use.
- License Must Not Restrict Other Hardware Or Software: Play well with others.
- License Must Be Technology-Neutral: The right to modify.
-- Andrew Plumb
Admins on this wiki
if folks who have worked on the OSHW are interested in helping admin/maintain this wiki, please leave a note on my talk page. It would be nice to be able to keep the wiki open, but that requires some regular maintenance actions against spam/vandalism.--Erik Möller 16:52, 16 July 2010 (UTC)