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 Designs                719 593-8866
1262 Hofstead Terrace
Colorado Springs, CO  80907

Reply via email to