Hardware Reference
In-Depth Information
Extensions: Plugins and Configurations versus Forks
While software interfaces are a great way to enable future modifications, they are typically
used to modify the whole system for a new use or domain and rely on developers rather
than end users to make these changes. In the open source world, this often results in mul-
tiple forks of a project for different use cases. A fork is created when a developer or set
of developers starts working with a copy of the code and goes off in a new direction. Un-
less these changes are “merged” back into the original codebase quickly, it often becomes
difficult to merge the code later to allow the developers to work together. In many cases,
the original developers are not concerned with the problem domain addressed by the fork
and cannot justify the overhead associated with maintaining the new code. Multiple forks
for minor changes often result in wasted developer resources, including duplicated main-
tenance efforts that can be avoided with a bit of forethought.
If developers can anticipate which parts of a system people may want to customize, un-
necessary forks can be avoided. One way to accomplish this is by providing a number of
ways that the system can be configured. For instance, imagine a hardware system that
contains a piezo vibration sensor. To encourage customization of the hardware, the origin-
al developer can allow the end user or other developers to configure the amplification
(gain) to allow different piezo sensors to be chosen while not affecting the rest of the sys-
tem. Configuration options are a great way to enable modifications without writing any
new code!
Plugins are another way to enable customization by end users and developers alike. For
developers, a well-crafted plugin system allows one to add to a system without forking the
original code. Browser plugins are a great example. While only a handful of popular
browsers are used by the majority of Internet users, thousands of plugins and extensions
are available for each of these browsers, enabling browsing experiences to be as diverse as
the Internet's user base.
Programming Environments, Libraries, and Compliers
As we continue to discuss software standards for open source hardware, it is important
to note that it is only possible to write software for a hardware system if that hardware
contains some kind of microcontroller or other processor to run it. Thus, one of the most
powerful ways to modify and extend open source hardware is to replace the processor with
a different, possibly cheaper or more capable one. Of course, if doing so means developers
have to learn new programming tools or write whole chunks of library code to run on the
new processor, then swapping out processors will not be practical. Open source hardware
can benefit greatly with standard programming environments and libraries.
Search WWH ::




Custom Search