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!!

Reply via email to