The rationale is complex and it does not exclude that in future we will have plugins with a different folder structure. But consider layout plugins (http://web2py.com/layouts). They need to overwite views/layout.html. They would not fit into the folder structure. Also if a plugin were to define a function that was available to all controllers, the model you propose would not work.
For us plugins are just an application subset (this is discussed in chapter 13 of the new book) but nothing exclude creating a plugins folder, create plugins that install themselves in there, and a plugins.py controller that delegates an action to a function defined in a file in the plugins folder. Massimo On Oct 23, 5:59 pm, b00m_chef <[email protected]> wrote: > I like web2py more than django because it has everything django has, > but somehow I feel it was designed to contain those features from the > get-go. In django everything feels like it was an after-thought, and > the community feels extremely set in their ways to change anything. > > One thing, thought, that I feel they got right in django was the > separation of projects into apps. I was just wondering why web2py > chose not to separate plugins more from the main application. I find > it extremely ugly to have my application files be polluted by plugin > files. I wish I could just easily blow-away my application without > blowing away all the plugins with it, or vice-versa. Basically, if my > plugin is more complicated than 1 file in each (model, controller, > view), and I if I have more than 3 plugins installed, my application > becomes a mess very quickly. This is especially a problem when you get > to large apps that are built from many small plugins for various > features... > > Proposed directory structure: > - "Application name" > - Model > - View > - Controller > - Static, etc... > - Plugins > - "Plugin name" > - Model > - View > - Controller > - Static, etc... > > Note, this can also be done without changing everything in the way > web2py does it right now, simply by including a symbolic link/shortcut > to the plugins folder in the top-level model, controller, view, and > static directories, to the plugins/plugin-name/model, view, > controller, static folders... > > Proposed directory structure: > - "Application name" > - Model > - Shortcut to "Plugins" folder > - View > - Shortcut to "Plugins" folder > - Controller > - Shortcut to "Plugins" folder > - Static, etc... > - Shortcut to "Plugins" folder > - Plugins > - "Plugin name" > - Model > - View > - Controller > - Static, etc... > > I find the Django model of Project -> apps a great organization > system...in web2py it would be App -> plugins. > > In other words, have a folder in each project/application called > plugins, and in that folder have each plugin produce its own folder > containing everything necessary for that app (directory structure > would be identical to the main app/project directory structure)...in > essence, it would be an application within an application. > > Also, note that I had thought about simply having plugins be apps at > the top level that can communicate with other apps, but that would not > work if I want to package my application up and distribute it. > > Conclusion: > > Was there any reason this was not the directory structure chosen? > Other than "We wanted to implement something quickly that is backwards > compatible and requires least additional coding". I just wonder if the > directory structure I propose could ever have enough support to be > accepted (even if it doesn't happen in the next release). > > Thank you for the great framework!!

