Getting the right hardware and software components and tools for a project shouldn't be difficult given the plethora of choices. There are dozens of programming languages to pick from. Development environments from multiple vendors for multiple platforms are as common as operating systems and run-time frameworks. Similar choices are available when selecting hardware.
The catch is that the choices are starting to come with caveats that aren't imposed for technical reasons, but rather standardization, legal, or political reasons. A caveat might be a restriction on how a component is used. Or, it might be what additional functionality is part of the component. I think that both will be of concern to developers and their customers as these caveats have a greater impact on the ability of developers to find and use components in their products, especially because very few products are created in isolation from a single source.
This problem struck home when I heard that future ATA storage devices and device drivers may be required to provide storage for security-related information to facilitate copy-protection schemes. Unfortunately, legal and technical issues like these aren't unique. Open source and the GNU General Public License (GPL) take on a new meaning with the likes of the Uniform Computer Information Transactions Act (UCITA) and Content Protection for Recordable Media (CPRM).
CPRM addresses the copy-protection scheme just mentioned. It has support from a number of influential groups, including the Recording Industry Association of America (RIAA), as well as from the creators of CPRM, Intel, IBM, Matsushita Electric, and Toshiba. CPRM reserves a portion of a storage device for copy-protection information. Device drivers must manage this information.
UCITA is a law being pushed at the state level. Among its many parts, UCITA addresses the control that a vendor has over the software products that it sells, including the ability to remotely shut down a software package.
GPL is an open source license that's used by a wide range of software. Linux is one example. GPL is probably more familiar to developers than CPRM and UCITA. Still, all should be of concern because of their possible impact on the components used in the products that you develop.
Consider frameworks such as Java 2 Micro Edition (J2ME). The J2ME framework consists of a number of components, and third parties are frequently tapped for additional components to create a solution. If technologies like CPRM are imposed by law or by standards, then the related components that work with J2ME will need to address them.
Implementation incurs overhead. This may be undesirable in many environments where such services aren't necessary. Although CPRM isn't an issue at this time for developers, it could easily become one if the vast majority of storage-device vendors implement it. This is because most embedded solutions use off-the-shelf components.
Bypassing such "features" may only be a matter of changing software. But if the source code is unavailable, designers might have to live with the associated overhead. This is one area where open source could have a major impact. Unfortunately, many protection-oriented technologies do so through secrecy.
Issues such as CPRM and UCITA have received little coverage in the technical press. Yet it's clear that their impact is far reaching, even to the level of embedded systems. Keeping abreast of the nontechnical side of technology is becoming increasingly important.
Have you heard about any other legal issues that will impact component selection? Have these issues affected you yet? Let me know. I'm interested.