History
~~~~~~~
As of October 2006, PCB has native support for external (or dynamic
loadable) HIDs. This project is a plugin that provides scripting features.

For a long time I have believed that good applications should be scriptable,
and really good ones should not restrict scripting to one or two languages.
For this reason I have been working on GPMI with various other developers
for years. GPMI provides a general way to split up big applications in
smaller, usually dynamic loadable parts, and encourages that some of these
parts should be written in a script language. For me, the ideal model
of an application is a small core that knows how to manipulate the
internal representation of the task and a lot of dynamic functionality
plugins and support plugins that do all the high-level job for the user.

PCB is an old and big software, with a stable user base. Restructuring the
whole source to "GPMIize" it is not an option. Instead, a nice compromise is
implementing this functionality in a plugin that pcb can load for the users
who are interested in such extras.

From 2006 to spring 2009 the project was on hold, because I was nagging
PCB developers to add support for customizable dialog boxes. In late March
2009, PCB developers pointed out that the interface I was waiting for had been
there for who-knows-how-long. With the help of DJ Delorie I extended the
action handling of PCB to remember action contexts, which was another showstopper.
After all obstacles were removed, I allocated a 24 hour coding session where I
finished the exporter functionality, added action binding, dialog box handling,
and layout manipulation functions.

During the summer of 2015 I merged pcb-gpmi into pcb-rnd and made it
the default scripting engine for pcb-rnd.

