Difference between revisions of "Talk:OSHW"
|Line 143:||Line 143:|
-- Stephen Leahey
-- Stephen Leahey
I in the of such .
== Making a license around this ==
== Making a license around this ==
Revision as of 15:45, 19 June 2011
Well, first you have to define "Open" :^) I saw some traces of "consortium disease" already in this definition, but really, it's a start on a really thorny subject. For example, it could be perverted by releasing design files that only work on a particular vendor's product. In fact, at this point, any design files are likely usable only on one tool, closed or Open. For example, many release Eagle files. I've downloaded it, it does nice work, it was free ($), but it is most definitely not Open. At least it runs on Linux. Doesn't this immediately put restrictions on the hardware? If you use their free ($) version, it's for non-profit use only. Does this make these designs invalid for automation work? Are they free? I can solve the problem by using only OSS for my designs, but will the term Open Hardware mean anything? No, by the most common of existing examples. It's broken from the start. And as we have already seen, the tiniest crack will be exploited and we will see extremely perverse examples of "Open Hardware". Not meaning to pick on CadSoft in particular. And I could discern the clauses added by those whose ox would be gored.
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.
126.96.36.199 14:57, 3 May 2010 (UTC) (Russ Nelson)
Tcoduhown! That's a really cool way of putting it!
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)
THX that's a great anwesr!
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
- There are two problems I see with interchange formats as opposed to native formats -- one philosophical and one practical. The philosophical one is that they are not the preferred format for making modifications; that's a key plank of every open source definition I have seen. The practical one is what gets left on the cutting room floor when the conversion is made. There's never a perfect 1-to-1 mapping between formats; some filters and format pairs are better than others, but you always lose something.
- -- Pierce Nichols
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
Seems everyone is more or less on the same page here. Is it the case that there needs to be some effort to design the intermediate exchange format?
With Human readable formats and manufacturing documents being the minimum required, if this ends up the defacto standard then information interchange will be very inefficient.
Migrations between editing environments should be fast and efficient to aid the momentum of this movement.
-- Stephen Leahey
I bow down humbly in the presence of such greastens.
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)