> What is the best way to get the version number of the underlying PCB > code, to display it in the GUI?
Same as usual: static char *msg = "This is " PACKAGE " " VERSION "\n" > I'm making the assumption here that the PCB code and the various > GUI's are going to evolve independently, with PCB and GUI having > their own version numbers. I'm hoping that each GUI will evolve as it's use and design require, yes. I'm also hoping that the GUI code will be at least in the same source repository as the core. I don't expect the HID api to be "officially stable" enough to support GUIs outside the source tree; that would be a maintenance nightmare (I maintain libiberty so I'm well aware of those issues). It exists to keep the core independent of the GUIs, but *not* the other way around. The GUIs can fiddle with core internals all they want, if needed. So, for example, if the core gets a new feature or if some data structure changes, it's likely that all the HIDs will need to be updated to compensate. This is OK. Maintainers of each HID will be able to make hid-specific changes independent of the core and other HIDs. This is OK. If we need to change the HID api to support some new feature in the core, or to further extend the range of HIDs we can offer, that's OK. If someone complains that we broke their HID that we didn't know about, that's not OK. Note that this is very similar to the way GCC supports the various languages and targets it has; there is a well-defined API between the core and the languages, and another between the core and the targets. The API changes, but whoever changes the API goes around and updates all the users of that API to compensate. They've been doing it this way for a long time and it seems to work well for them, so I adopted the practice. There are occasionally languages and targets outside the gcc source tree (Pascal, for example) but they have to deal with API changes on their own when they sync up with newer releases, and are usually tied to a specific version of gcc.