At 09:38 10-10-2006, Theo de Raadt wrote:
Some of you may have been following the OLPC discussion. Here is
one place you can read more about it:
http://www.thejemreport.com/mambo/content/view/286/
Since Jim repeatedly mistates our views, I am making the controversial
move of publishing the entire email archive.
It is in a flat file at
http://www.theos.com/deraadt/jg
Fascinating.
In reading these it seemed obvious that the encumbered IP or microkernel
that JG talks about is almost certainly ThreadX, produced by Express Logic
(expresslogic.com or rtos.com). I might mention that I have a lot of
experience with embedded systems. JG brags of having started in 1983. I'd
already been working for several years on embedded systems (the name hadn't
been coined back then).
Today ThreadX is almost ubiquitous in devices of a certain size or
complexity. A recent press release claims over 300 million devices use
it. It is especially dominant in ARM based devices. The business model is
interesting. In terms of code it is little more than a threading package,
typically only a few KB. Networking and USB stacks are also available,
including them expands the code footprint. The threading package is
something that any competent coder could toss off in less than a
week. What you are really buying is a decent reference manual and that
they've done the legwork to integrate support into every embedded software
development platform and every SoC hardware debugging tool on the
planet. And just about every experienced embedded firmware engineer you
interview has already used it. They price it reasonably enough that you'd
usually be stupid not to use it.
Pricing is a fixed fee per "project". Firmware for a chip is a
project. Significant enhancements or new versions are a project. Bug
fixes are not. Source is always included. No royalties. A large company
such as Marvel likely buys an unlimited use license that encompasses all
projects started within a certain time frame.
Marvel should have used ThreadX for this project, it's the only thing out
there that comes close to what's needed. It's the only thing that matches
JG's hints. Main alternative would be a home brewed kernel, and JG says
they didn't do that. Assuming I'm right, it has the following implications:
1. No restrictions whatsoever on binary firmware distribution, except what
Marvel chooses to impose. They could make the binary blob public domain
and the ThreadX licenses I've seen wouldn't care. This is one of ThreadX's
biggest marketing points, prominently featured in their ads.
2. No restrictions on documentation to write drivers, except what Marvel
chooses to impose. Drivers interface with Marvel's firmware, it has no
relationship with ThreadX.
Note: the above two are what Theo and OpenBSD want.
3. No restrictions on internal hardware documentation needed to write
firmware, except what Marvel chooses to impose. If Marvel decided to
release documentation describing how to write ARM code to tweak the radio,
the MAC, the USB interface, etc., they are free to do so. I don't think
OpenBSD cares about this, but I for one would love to play with it.
Note: #3 is what someone would need to write their own, from scratch,
firmware to do mesh networking and release same under a GPL or BSD license.
4. What Marvel cannot do (without major legal pain) is release their
existing firmware source code to third parties. The source code uses
ThreadX, it is a derivative work of the ThreadX manual and code, it is
encumbered by the ThreadX licensing restrictions. Modifying the existing
firmware for almost anything, especially including a feature such as mesh
networking, is clearly a new "project". Whoever received the source code
would have to purchase a suitable license for ThreadX and agree to abide by
its terms.
Anyone may forward or cross-post this message anywhere they please,
provided they don't alter the meaning by quoting excerpts out of context.
Edward A. Gardner eag at ophidian dot com
Ophidian Designs719 593-8866
1262 Hofstead Terrace
Colorado Springs, CO 80907