At 12:39 PM 2/9/2007 -0800, Katie Capps Parlante wrote:
We've been discussing how to handle plugins on the chandler-dev list, and I think we've hit on some topics that really belong on design, so moving the conversation.

For background on the conversation that followed Heikki's initial message, check out the dev-list thread:
http://lists.osafoundation.org/pipermail/chandler-dev/2007-February/007608.html

Ok, new proposal...

+ Do not remove plugins from end-user release
   - have them be "disabled" by default, not loaded
   - leave the projects/ and samples/ directories in the distribution
   - have a menu item that "turns on" or "enables" plugins

Er, I think there may be some confusion here about how plugins are intended to work in a distributed environment.

Plugins are designed to be shipped as .egg files, placed in an appropriate directory (e.g. parcels, site-packages, or some other designated directory).

They should never be shipped as projects/ subdirectories for a production Chandler instance, any more than we would ship the externals/ directory and contents thereof.

The way that you activate or "install" a distributed plugin is to place the .egg file in the designated directory, where it's picked up when Chandler starts.

(Note, by the way, that if we publish our plugins on the Python Cheeseshop, we could add a menu item that allows you to type the name of a plugin, and cause it to be downloaded and installed, using the included easy_install feature of setuptools.)

So, just to clarify, there should be no question about whether projects/ ship with Chandler. They should NOT, as they're part of the Chandler *build*, not the distribution.

The only questions about the plugins should be, do we want to ship the .egg files and do we want them activated. We should only be shipping the projects/ tree with Chandler *source* distributions.

(By the way, one reason for doing this is that Chandler will start faster with .egg file plugins than with projects/ directory plugins. Indeed, it might be worth considering bundling up the entire parcels/ tree as an .egg too, for this very reason.)



- some potential developers will grab the end-user release -- lightweight plugin development should be doable with the end-user release (long term goal); basically we don't want to *hide* the idea of plugins from people (developers or users), we want to do the opposite

Note that this use case can be met by publishing plugin releases to the CheeseShop, including source distributions. As long as you have a working Chandler installation and you can run its Python, you can do plugin development using the standard tools of "setup.py develop" (to do live development) and "setup.py install" (to build an .egg and install it).

You can then publish your developed plugin using "setup.py sdist bdist_egg register upload", which will register the plugin with the Cheeseshop, build source and binary distribution files, and upload them to the CheeseShop.

And, if we have a test/tools/demo/whatever menu item that allows you to type in a plugin name and pull it down from the CheeseShop, then it's all good to go -- we have at that point all the community infrastructure needed to develop, distribute, and deploy user-contributed plugins.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Open Source Applications Foundation "Design" mailing list
http://lists.osafoundation.org/mailman/listinfo/design

Reply via email to