I can't stress enough. web2py plugins should be geared towards developers, not end-users. (Someone who runs their own wordpress blog would be an end-user of wordpress).
Plugins should be there to provide a standard for common functionality so that everyone who comes along to web2py does not have to re-invent the wheel. But still be flexible enough to suite 95% of developer needs. This means that plugins should be easy to insert into the system, but because they need to be flexible, they will require programming to make work. I do not like the current plugin implementation because it does litter web2py folders, plugins should be self contained, and you shouldn't *have* to rely on "applications/admin" to install them for you. It is just one of those nuances. In every plugin system I have been researching, there is always a "plugins" folder that the system auto-discovers what is in it, and then activates them. This would make it easier to package and distribute the plugins. Though I have never seen a plugin system for a web framework, only for applications that are devoted to one subject (wordpress, mephisto, redmine, trac, etc). I guess django calls them "installed_apps" and "middleware_classes". But even with django "installed_apps"(plugins) they define their own views, all you have to do is specify which view to render in your functions... I suppose. What are you trying to accomplish with plugins? -Thadeus On Thu, Feb 25, 2010 at 9:48 AM, mr.freeze <nat...@freezable.com> wrote: > A simple approach would be to adopt the naming convention > 'plugin_object' for any objects the developer wants to expose to the > plugin system then just create global labels: > >>>>class Plugins(object): >>>> def __init__(self,globals,**kargs): >>>> for k,v in kargs.items(): >>>> globals['plugin_'+k] = v > >>>> db = DAL('...') #this is my mission critical data >>>> db2 = DAL('...') #this is for my plugins to use >>>> plugins = Plugins(globals(),db=db2,auth=auth,crud=crud) > > This would expose to the plugin developer: > plugin_db,plugin_auth,plugin_crud > > This way app developers could control which objects are exposed to the > plugin system and plugin developers could set requirement for their > plugins. This shouldn't break existing plugins either. > > > On Feb 24, 8:01 pm, mdipierro <mdipie...@cs.depaul.edu> wrote: >> This may be a good idea. What should go into plugins? >> >> On Feb 24, 10:41 am, Thadeus Burgess <thade...@thadeusb.com> wrote: >> >> > I also am in favor of a class based plugin system that works like >> > crud/auth. >> >> > Plugins would not pollute your global namespace. And they would be >> > configurable. >> >> > Though the loss is of having plugins with their own controllers since >> > the module would be the controller instead. >> >> > -Thadeus >> >> > On Wed, Feb 24, 2010 at 7:25 AM, mr.freeze <nat...@freezable.com> wrote: >> > > Alternately you could simply create another container class for >> > > plugins to use and pass the preferred DAL instance to it just like you >> > > can with auth and crud: >> >> > > db = DAL('...') >> > > db2 = DAL('...') >> > > auth = Auth(globals(),db) >> > > crud = Crud(globals(),db) >> > > plugins = Plugins(globals(),db2) >> >> > > This seems more consistent with how things currently work. What do >> > > you think? >> >> > > On Feb 24, 5:40 am, "mr.freeze" <nat...@freezable.com> wrote: >> > >> Then no auth would mean no plugins. What if an attribute was added to >> > >> DAL to let the user specify: >> > >> db = DAL('...') >> > >> db.plugin_db = True >> >> > >> Then create a global plugin_db object for the plugins to use. All >> > >> plugins could then assume: >> > >> db = plugin_db >> > >> or just use plugin_db directly >> >> > >> There may be a better way but the point is that it would be >> > >> configurable. Users could dedicate a separate DAL instance for their >> > >> plugins so they don't pollute databases containing important business >> > >> objects. >> >> > >> On Feb 23, 11:48 pm, mdipierro <mdipie...@cs.depaul.edu> wrote: >> >> > >> > what if plugins were to use auth.db ? they rely on auth anyway. Or >> > >> > should we relax that? >> >> > >> > On Feb 23, 11:32 pm, mdipierro <mdipie...@cs.depaul.edu> wrote: >> >> > >> > > OK but the I would call that variable db because that is what it is >> > >> > > called in welcome/models/db.py >> >> > >> > > On Feb 23, 11:25 pm, "mr.freeze" <nat...@freezable.com> wrote: >> >> > >> > > > I think the most important thing is that users can install >> > >> > > > plugins >> > >> > > > without needing to modify the plugin. This would make upgrades a >> > >> > > > real >> > >> > > > problem. I'm sure you've heard this all before but if the plugin >> > >> > > > system was initialized in some way by the user with their >> > >> > > > preferred >> > >> > > > instance of a DAL object then all plugins could use this. >> > >> > > > Otherwise >> > >> > > > naming your DAL object anything other than db mean you can't use >> > >> > > > plugins. What do you think? >> >> > >> > > > On Feb 23, 11:18 pm, mdipierro <mdipie...@cs.depaul.edu> wrote: >> >> > >> > > > > when I said "yes" I mean current plugins assume it. >> >> > >> > > > > I agree we need a superstructure to manage conventions. Instead >> > >> > > > > of a >> > >> > > > > new global vars, I would prefer that each plugins has its own >> > >> > > > > plugin_<whatever>_settings.db and users can customize each >> > >> > > > > individual >> > >> > > > > plugin. >> >> > >> > > > > On Feb 23, 11:12 pm, "mr.freeze" <nat...@freezable.com> wrote: >> >> > >> > > > > > That still feels wrong to me. What about making a plugin_db >> > >> > > > > > parameter >> > >> > > > > > in option_std.py for the database instance name you want to >> > >> > > > > > use for >> > >> > > > > > the plugin subsystem? >> >> > >> > > > > > On Feb 23, 10:29 pm, mdipierro <mdipie...@cs.depaul.edu> >> > >> > > > > > wrote: >> >> > >> > > > > > > yes >> >> > >> > > > > > > On Feb 23, 10:18 pm, "mr.freeze" <nat...@freezable.com> >> > >> > > > > > > wrote: >> >> > >> > > > > > > > What about the second question? Is 'db' a required naming >> > >> > > > > > > > convention >> > >> > > > > > > > for the plugin system? >> >> > >> > > > > > > > On Feb 23, 6:41 pm, mdipierro <mdipie...@cs.depaul.edu> >> > >> > > > > > > > wrote: >> >> > >> > > > > > > > > I think so. The only think is that we will build a >> > >> > > > > > > > > super structure on >> > >> > > > > > > > > top of it for better management of plugins metadata. >> >> > >> > > > > > > > > Massimo >> >> > >> > > > > > > > > On Feb 23, 6:37 pm, "mr.freeze" <nat...@freezable.com> >> > >> > > > > > > > > wrote: >> >> > >> > > > > > > > > > Is the plugin system considered backwards compatible >> > >> > > > > > > > > > at this point? I >> > >> > > > > > > > > > am considering converting some modules into plugins >> > >> > > > > > > > > > but want to know >> > >> > > > > > > > > > if they API is stable. >> >> > >> > > > > > > > > > Also, is the naming convention of 'db' for your >> > >> > > > > > > > > > database still >> > >> > > > > > > > > > required for the plugin system? >> >> > >> > > > > > > > > > ------------------- >> > >> > > > > > > > > > I predict that in the year 2015, web2py will gain >> > >> > > > > > > > > > self awareness and >> > >> > > > > > > > > > attempt to take over the world under the name PyNet. >> >> > > -- >> > > You received this message because you are subscribed to the Google >> > > Groups "web2py-users" group. >> > > To post to this group, send email to web...@googlegroups.com. >> > > To unsubscribe from this group, send email to >> > > web2py+unsubscr...@googlegroups.com. >> > > For more options, visit this group >> > > athttp://groups.google.com/group/web2py?hl=en. >> >> > > -- > You received this message because you are subscribed to the Google Groups > "web2py-users" group. > To post to this group, send email to web...@googlegroups.com. > To unsubscribe from this group, send email to > web2py+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/web2py?hl=en. > > -- You received this message because you are subscribed to the Google Groups "web2py-users" group. To post to this group, send email to web...@googlegroups.com. To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/web2py?hl=en.