pcb-rnd - plugin development - why not to create external plugins

Short answer: join us and create a core plugin instead. Or write a script in one of the many scripting languages pcb-rnd supports.

Pcb-rnd has a fast paced, centralized development strategy, heavily building on coordinated team work. There is no "API stability": we do not promise that core APIs wouldn't change. But we do guarantee that any change to the core will be immediately tracked in all core plugins.

The core team, by definition, will not consider or upgrade any external plugin while changing core APIs. Scripts are much less affected as they are using actions only and we try not to break action backward compatibility.

Because of the high amount of development time goes into pcb-rnd these days, if you start maintaining your own external plugin, you will need to spend a portion of the time we spend on pcb-rnd on just keeping your plugin from bit-rotting. Example in geda/PCB, with much slower core development, showed that it does not pay back long term. There are usually four outcomes:

That said, there are some legitimate cases when you could consider maintaining an external plugin. For example if the goal of the plugin is so extremely far away from pcb-rnd's that we do not accept the idea at all. But if you start maintaining your plugin, and do not want to end up spending a lot of time just to have something bit-rotting, you should really consider how much time keeping things up to date will require, before you start.

Please also note that beause we really prefer our team work model, and we most likely consider an external plugin effort just waste of time, we will probably not endorse or promote your plugin in any way.

Please do not write an external plugin (or core plugin) off-svn and then contact us to ask for inclusion as a core plugin. The only way a core plugin can happen is that you contact the project lead, agree on some details, get an svn write access and do it in pcb-rnd's repo. We will refuse to import plugins developed differently.