PCB is developed by volunteers. As with any volunteer project, we always can use more help. This page tries to give some guidelines on how to more effectively help out.
See Reporting Bugs for information on where to report bugs and how to make an effective bug report.
PCB includes a test suite. Currently the test suite does not
check the GUI but it does check the various exporters. The
test suite is in the
If you add a new exporter or if you add command line options to an existing exporter you must add a test suite entry. Similarly if you find a bug in one of the exporters, the preferred procedure is to add a test suite entry which demonstrates the bug, fix the bug, and then verify that the test suite shows proper functionality.
When a new test is added it is important to try and make it as simple and modular as possible. In other words, if there is a problem with a particular footprint not exporting correctly, then make a test suite entry with just that footprint or a simplified view of that footprint. Don't just use a board with a thousand other components on it because it makes debugging much harder.
PCB uses "actions" internally to do much of the work. An "action" can be thought of as a simplified function. All of PCB's actions are fully documented in the PCB manual. If you add any new actions, then you must add the appropriate documentation. The documentation for all actions is embedded in the source code using specially formatted comments. Search for the string "%start-doc" in the existing source code for many examples. This documentation is later automatically extracted when the manual is built.
If your changes add to or modify the behavior of PCB in a way
which is not simply a bug fix, then update or add to the
manual. The PCB manual is in the
Do not change any file formats unless absolutely required. If
you do make a change to the file format (the parser is in
then you need to update the PCB_FILE_VERSION macro in
If you must change the file format, then the structured comments in src/parse_y.y must be updated to reflect the change. This is how the manual section on file formats is generated.