17th level Hacker

An Introduction to Open-source Hardware Development

Mohamed Salem mailed me to say that his article An introduction to open-source hardware development was published in EEDesign. Congratulations Mohamed and Jamil!! He mailed me a copy while he was still working on it, and I’ve been anxiously awaiting the publication so that I pontificate on the subject without trying to lay down some technical details I don’t know (not that it usually stops me). I have no practical hardware design experience at all. I normally get the stuff after someone else has put it together and now they want it to do something.

Even so, there are some general issues at work here I would like to talk about. The most basic being that it seems like just about everything is becoming software. Desktop tools are software, simulators are software, industrial control systems, payment processing is software, advertising is software, workflow is software. Now, apparently, hardware can be software as well. I’m not saying that all these functions have been completely replaces with software, but these functions have been trending more and more toward software. The reason often given is that software is relatively easy to change compared to the dedicated function systems and processes that it replaces. Which is kind of funny, considering that the general opinion is also that computer programming is still rather underdeveloped as an engineering field. Or maybe it’s scary. I’m not sure which yet.

I’m sorta fence-sitting on the issue of the general adoption of open source practices by the hardware community in general. I think it would be a great thing. But I think there are a whole different set of dynamics involved in order for it to hit critical mass. One of the reasons that open source hit the ramp was because there were lots of very cheap computers around for people to play with, and the base tools needed were all ready for people to start hacking with those systems right away. Thank you Stallman. Thank you Tanenbaum. Thank you Torvalds. The same thing isn’t really true within the hardware community. Not yet at least, although some people are doing some great work to try to get there.

Lets suppose that this does happen. Most devices include FPGAs or some like technology. Hardware-as-service is a reality. Software defined radio enables your cellphone/pda/laptop to talk to the cellular network, Wifi network, bluetooth devices, wideband home area network, extremely low frequency interplanetary CIA network, whatever you want. What happens then? I can’t even begin to speculate about the business end of that. I imagine that most hardware manufacturers wouldn’t be too happy about it. They would be reduced to either very high end systems or selling commoditized hardware substrate.

The concept of shuffling around processing locations by moving around hardware cores in addition to algorithms is interesting, but I don’t think it’s a compelling reason to move in this direction. I remember the first time I ran across RPC and the promise that it would make scalable processing power available at a low cost. And then the same thing from Java and RMI, and CORBA, and PVM and parallel computing languages, grid computing, web services. I’ll believe that one when we see it. The limiting factor there doesn’t seem to be the power of the underlying protocols and scope of the standards, it seems to be our ability to combine them into a meaningful and flexible system.

I do think it could have a pretty drastic effect on the technology adoption curve in general however. Because people wouldn’t have to buy hardware as often? Kinda. Because it’s easier to experiment with? Sorta. I think it would change things because it would allow hardware as well as software to propagate in a decentralized fashion. Part of the continued problem with hardware is that it needs to be “top down”. This is not the way that software needs to work any more. Take Napster as one example. No one needed to cut deals with distributors and develop sales channels. No one needed to develop a full business plan and secure funding. All that was needed was a good idea and a working set of code. Same thing with Linux. Same thing, to a degree, with GMail. Internet distribution is a major enabler of disruptive change, which is good for innovation and bad for entrenched players. Unfortunately hardware is still tied to the same mechanisms that it relied on to get minicomputers out into a market dominated by mainframes. Which means generally arrogance, luck, and as many fresh college graduates as you can lay your hands on.

Of course, if those kookie new ideas can bundle new hardware designs along with their new software I think we’re headed for something interesting. Then again, I thought we were headed for something interesting when bluetooth promised to connect all my different devices seamlessly. It’s not enough to change the world on it’s own, but it’s certainly a great enabling factor.