hi all,

although i'm a mere user who may not have full understanding of web2py
mechanisms, i'm interested in how the web2py plugin system is
developed thru these discussions. because it will affect the evolution
path of this software, and probably decide if or how i am going to use
this system in the future. complex/commercial/enterprise applications
like CMS or e-commerce would benefit from smart and easy plugin (or
add-on or extension) systems.

2009/10/23 Yarko Tymciurak <resultsinsoftw...@gmail.com>
>
> Or what about one plugin file, where each plugin is a class - perhaps one for 
> controller, one for model - no views allowed (only app or gluon facilities; 
> could worry about separate view plugins as that is different enough)....

i am interested in the idea, too. expressed use of classes in [web2py:
32128].
a class-based MVC? like
in plugins/myPlugin.py,
  class MyPlugin(Plugin):
    def model(...):
      ...
    def cotroller(...):
      ...
    def view(...):
      ...

an application uses it as, e.g.,
in models/mydb.py,
  myP = Plugin.MyPlugin()
  ... do something useful with myP.model(...) ...
in controllers/mycntl.py
  ... do something useful with myP.cotroller(...) ...
in views/mycntl.html,
  ... do something useful with myP.view(...) ...

* note myP.view() is not to output to browser but to input to views/
mycntl.html.
* the plugins directgory can be anywhere in the path and imported.
* as long as used/executed in non gpl applications, plugins need not
be gpl licensed if gpl codes are not used/imported.
* system plugins are in web2py/plugins (gpl)
* application-shared plugins are in web2py/applications/plugins (gpl
or non gpl)
* application-specific plugins are in web2py/applications/myApp/
plugins (follow myApp's license)
* plugins codes are copied and managed thru appadmin.
* appadmin may not modify plugin codes.

* all the above can be done without changing web2py or breaking its
backward compatibility.
* forgive me it's  just contemplation, not implementation.

recently, trying to meet the needs of a customer, i looked for a CMS
with simple shop functionalities and found ezPublish(http://ez.no)
interesting. learned that it's a quite elaborate accumulation of lots
of work over 10 years by volunteers and companies. their site showed
celebrating its 10th anniversary in a conference with over 250 people
(http://www.youtube.com/watch?v=je6CqRWjwfo). its codes are based on
components (http://ezcomponents.org), and structured with libraries,
extensions, packages, etc. its slogan is "share your information". i
think its framework's elaborate structuring of codes helped it to
evolve to include lots of developers/users/companies. its learning
curve is still rather steep for me, and i'm sure they'd do better if
they have another chance to restructure. with the passion/power/
prowess (and with Python) in this community, web2py has a good
opportunity to do better than others.

it's nice to dream attending a web2py conference, whether online of
offline, in some years, to share information and celebrate the
accomplishment by web2py developers/users.

cheers,
Teru


>
> On Thu, Oct 22, 2009 at 2:58 PM, mr.freeze <nat...@freezable.com> wrote:
>>
>> I see how it would be a performance hit to enumerate all of the files
>> in those folders.  What about a compromise where all plugins live in
>> one subfolder so we get the separation. Thinking out loud:
>>
>> applications
>> --myapp
>> ----plugins
>> ------models
>> --------plugin1.py
>> --------plugin2.py
>> ------views
>> --------plugin1_index.html
>> --------plugin2_index.html
>> ------controllers
>> --------plugin1.py
>> --------plugin2.py
>> etc...
>>
>> Do you think plugins should be accessible by URL outside of their
>> parent app or just take parameters and render html? Also, is/should
>> there be a mechanism to apply auth to a plugin?
>>
>>
>> On Oct 22, 1:48 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
>> > One issue is models:
>> >
>> > Let's say we have a normal model
>> >    models/db.py
>> > and two plugin models in
>> >    plugins/p1/models/a.py
>> >    plugins/p1/models/x.py
>> >    plugins/p2/models/e.py
>> >
>> > In which order should they be executed? whatever order we use we would
>> > have to merge the results of multiple listdir and then sort them.
>> > Takes some extra time. Now that everything is one folder things are
>> > straightforward.
>> >
>> > Another issue is controllers? What would be the url for a function
>> > index in the controller below?
>> >
>> >    plugins/p3/controllers/default.py
>> >
>> > Mind that we cannot break backward compatibility!
>> >
>> > Massimo
>> >
>> > On Oct 22, 1:38 pm, "mr.freeze" <nat...@freezable.com> wrote:
>> >
>> >
>> >
>> > > That's not as limiting as I thought at least.  Did you already try the
>> > > sub-app approach and hit obstacles or is it something that might be
>> > > worth prototyping so we can compare performance/benefits/drawbacks?
>> >
>> > > On Oct 21, 7:20 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
>> >
>> > > > Yes you would be limited to one model file, one controller file but as
>> > > > many views as you have actions and as many modules and static files as
>> > > > you need.
>> >
>> > > > On Oct 21, 6:08 pm, "mr.freeze" <nat...@freezable.com> wrote:
>> >
>> > > > > Man oh man! I've been at a SharePoint conference all day (hey, I have
>> > > > > to make money!) so I'm still sifting through all of the discussion 
>> > > > > but
>> > > > > I have another question: With the current implementation plugins 
>> > > > > would
>> > > > > be limited to one view, one controller, one model, etc., because of
>> > > > > the naming convention, correct? If so, do you think this will be too
>> > > > > constraining?
>> >
>> > > > > On Oct 21, 11:39 am, mdipierro <mdipie...@cs.depaul.edu> wrote:
>> >
>> > > > > > Physically plugins are not in the own folder because it would make
>> > > > > > web2py very clunky, it would have to search for plugins in the 
>> > > > > > folder
>> > > > > > structure.
>> >
>> > > > > > Logically the are listed as separate.
>> >
>> > > > > > On Oct 21, 11:16 am, "mr.freeze" <nat...@freezable.com> wrote:
>> >
>> > > > > > > I like how the plugin system is shaping up but have one question 
>> > > > > > > about
>> > > > > > > the folder structure. It seems more manageable to structure it 
>> > > > > > > like
>> > > > > > > this:
>> >
>> > > > > > > applications
>> > > > > > > -- my app
>> > > > > > > ---- models
>> > > > > > > ---- views
>> > > > > > > ---- controllers
>> > > > > > > ---- plugins
>> > > > > > > ------ myplugin
>> > > > > > > -------- models
>> > > > > > > -------- views
>> > > > > > > -------- controllers
>> >
>> > > > > > > This way a plugin would basically be a sub-app, making it easier 
>> > > > > > > to
>> > > > > > > install/uninstall/upgrade and could also have multiple 
>> > > > > > > models/views/
>> > > > > > > controllers.  I remember some discussion about it but can't 
>> > > > > > > remember
>> > > > > > > what the reasons against it were.
>> >
>> > > > > > > On Oct 21, 10:18 am, mdipierro <mdipie...@cs.depaul.edu> wrote:
>> >
>> > > > > > > > The new web2py in trunk (1.68.2) also contains an improved
>> > > > > > > > experimental solution for plugins.
>> > > > > > > > Here is a new video about it
>> >
>> > > > > > > >http://www.vimeo.com/7182692
>> >
>> > > > > > > > It includes suggestions from various people but I am sure it 
>> > > > > > > > still
>> > > > > > > > needs a lot of work. Anyway, give it a try and let us know 
>> > > > > > > > what else
>> > > > > > > > would you expect from a plugin system.
>> >
>> > > > > > > > The interface for uploading/downloading plugins is missing, 
>> > > > > > > > among
>> > > > > > > > other things.
>> >
>> > > > > > > > Massimo- Hide quoted text -
>> >
>> > > > > > - Show quoted text -- Hide quoted text -
>> >
>> > > > - Show quoted text -- Hide quoted text -
>> >
>> > - Show quoted text -
>>
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to web2py@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
-~----------~----~----~----~------~----~------~--~---

Reply via email to