On Saturday 17 January 2009, Mark Rages wrote: > Can someone define "plug-in" for me?
An executable code module that can be added by the user at run time, without recompiling or reconfiguring the whole thing. > What is the advantage, given that the whole project is > open-source? "radical flexibility"!!' Speaking for gnucap, ...... Most users don't bother with any fancy compile options. I think most use a binary package. Many users are on a network where the program is installed in a public space and managed by someone else. Given that, plugins provide a way to extend functionality without recompiling or reinstalling. You can use plugins from a library, or build them in your own space. Often someone will make enhancements that they want to share, but for some reason it is not desired to put it in with the main program for everyone. Perhaps it is very specialized. Perhaps it is an alpha version that is not ready for the mainstream. Perhaps it is a new version that just came out and you want it now. Perhaps it changes something in a way that someone else doesn't like. Plugins make this possible. A good interface for plugins allows someone adding something new to have a documented interface, and to do it without digging into the core too deep. One use of plugins in gEDA now, that we have had forever, is the output formats in gnetlist. When you say "gnetlist -g something" .. you are using a plugin. The plugin interface in gnucap (C++) almost always involves making a new class, derived from some base class. What base class it is derived from determines how it is used, or the "type" of the plugin. Gnucap has 6 distinct plugin types.. -- device models -- commands -- behavioral modeling functions -- measures and parameter functions -- netlist and command languages -- "other" In most cases, you can static link a module designed as a plugin. and it works the same. You cannot detach a plugin that is static linked, but you can override it, which is almost the same. A set of plugins static linked provides a basic set of commands and models, essentially Spice-like functionality. _______________________________________________ geda-user mailing list geda-user@moria.seul.org http://www.seul.org/cgi-bin/mailman/listinfo/geda-user