So dick, if I'm not understanding the wrong thing, one of your concerns is, that if we let other make "plugins" in scripting, that probably won't come back as a contribution?
May be I'm plain wrong, but a piece of code that links (even dynamically) to our binary, should be GPL/compatible license, isn't it? Miguel Angel Ajo Pelayo http://www.nbee.es +34 636 52 25 69 skype: ajoajoajo 2013/9/19 Dick Hollenbeck <d...@softplc.com> > On 09/19/2013 10:47 AM, Tomasz Wlostowski wrote: > > On 09/19/2013 05:35 PM, Dick Hollenbeck wrote: > >> On 09/19/2013 09:29 AM, Miguel Angel wrote: > >>> Ok, summarizing all the feedback: > >>> > >>> I'd defer this blueprint proposal, and switch it into something like: > >>> > >>> * Making a generic system wide plugin load system, > >>> (load/unload/reload/enumerate/instantiate). Supporting statically > loaded C++ plugins, and > >>> dynamically loaded python plugins. > >>> > >>> KICAD_PLUGIN > >>> /|\ > >>> [PCBNEW_PLUGIN] > >>> /|\ > >>> |-- CONTEXTMENU_PLUGIN > >>> |-- HOTKEY_PLUGIN > >>> |--TOOLBAR_PLUGIN > >>> |-- > >> > >> > >> Sorry, I do not agree. The dynamic loading is mostly already done for > you in a couple of > >> wx functions. So this is trivial, and not worth even discussing. > Trying to establish a > >> common class hierarchy for it is not worth the effort, just to share > two functions which > >> are already outside the class anyway, in the wx library. There after, > because the API > >> that you are eventually calling into after the plugin is loaded is > different, there is no > >> need for any commonality. > >> > >> Look, Miguel. Putting something on a website is not going to get it > into the project. > >> You have to establish agreement among the lead developers. This is me, > Wayne, and JP. On > >> the subject of pcbnew PLUGINs, Wayne and I have championed the effort, > and until two days > >> ago, our vision has yet to be realized. (Working 4.5 hours per week on > KiCad over a year, > >> you cannot exactly get a lot done fast.) > >> > >> Can I be candid in saying that to have our work coming under question > just two days after > >> Wayne did the near to last commit, is a little hard to take? > > Hi Dick, > > > > A quick question: could you tell me how do you see loading STEP models > > in the 3D viewer (in terms of interfaces and APIs involved)? I'm almost > > sure we are on the same frequency, just using different modulations when > > talking about plugins. > > > > Regards, > > Tom > > > Tom, > > Before I would talk about plugins I would always be sure I have enough > interface > implementations to justify a plugin manager. To me, a plugin is a > dynamically loaded > module. It implements an interface, at least one. An interface > implementer does not need > to be a plugin. So you would need a count of implementations before it is > worth > continuing on the topic of plugins. Then multiply that count times the > average size to > figure out the number of bytes you are jettisoning out of the RAM area for > the case where > you need not use the interface at all. > > > In an open source project, the source is available to any one who wants to > make a plugin. > It is not too much to ask users or a sponsor to compile to get a new > implementation of an > interface. The plugin is not the only way. > > class wxDynamicLibrary > > Can either both > > 1) manage DLLs or > b) not manage them, but load/unload them > > in a cross platform way. > > Here are your unmanaged, i.e. mode b) functions: > > static wxDllType RawLoad(const wxString& libname, int flags = > wxDL_DEFAULT); > > // unload the given library handle (presumably returned by Detach() > before) > static void Unload(wxDllType handle); > > ================================================================= > > The art of software design hinges on interface design, not plugin design. > This is the > careful crafting of functions, and also of locating that interface within > the software stack. > > Again, plugin discussion may never even need to happen, if your number of > interface > implementations does not justify it. > > If this is not your definition of plugin, well then, I suppose then we'd > have to both go > agree on what dictionary we'll use to even have a conversation. > > I chose the term PLUGIN for the pcbnew interface that I designed because I > suspected that > eventually we would be bringing in a large number of conversion functions > under that API. > (The last word in API is *interface*.) > > PLUGIN::Load() for example, if you look at it carefully, could be used for > the specctra > back import. PLUGIN::Save() could be used for specctra DSN output. So > those two > functions constitute a generally useable API (interface), that therefore > invites > widespread use. > > But we continue to write code that does not use this API. Netlist > exporters, gerber > exporters, etc. If you want to use the main benefit of a plugin, memory > savings, then you > write DLL/DSOs to implement your *interface*. If not, then you can use > that interface as > part of a monolithic link image. For commercial software, you get > additional benefits, > but I won't recognize those in an open source package. People can build > and add a new > plugin by compiling it in. Memory savings are the main benefit in an open > source package > to a plugin system. > > > In the end, interface design is where you make or break the software > package, not plugin > design. > > What I do know is that interfaces are all different typically, so > therefore I am even more > reluctant to have a combined conversation about plugins, when I am > reluctant to have even > one conversation about a single plugin until its need is established. > > > Dick > >
_______________________________________________ Mailing list: https://launchpad.net/~kicad-developers Post to : kicad-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~kicad-developers More help : https://help.launchpad.net/ListHelp