Opened 13 years ago
Closed 12 years ago
#401 closed enhancement (fixed)
add plugin infrastructure
Reported by: | Will Kahn-Greene | Owned by: | Will Kahn-Greene |
---|---|---|---|
Priority: | major | Milestone: | 0.3.1 |
Component: | programming | Keywords: | |
Cc: | Christopher Allan Webber | Parent Tickets: |
Description
The gist of it is:
- design and codify how plugins will get installed, removed and configured
- implement required infrastructure code
- design and codify how plugins will hook into mediagoblin core
- write documentation for plugin authors
The wiki page tracking this is at: http://wiki.mediagoblin.org/PluginSystemDesignDocument
This ticket does not cover creating actual hooks in mediagoblin. Either each hook should get tracked separately or we should create a new bug for a bunch of things or something like that.
Change History (13)
comment:1 by , 13 years ago
comment:2 by , 13 years ago
There are a handful of bugs. I'm writing tests now and fixing the bugs as I discover them.
Also, I talked with Chris about how to do multi-line lists in the .ini
. We're going to change the way plugins are configured so that each plugin has its own section under the [plugins]
section. e.g.
[plugins] [[mediagoblin.plugins.sampleplugin]] key = val ... [[some.other.plugin]] key = val ...
Then the plugins will be imported and loaded in the order listed in the .ini file.
Also, need to implement a .ini
type that is essentially a multi-line list that's done with '''
(which is kind of icky, but seems to be the only possible solution now). We'll use this for specifying handlers, transformers, processors, ... in the .ini
file.
After that:
- needs site admin focused documentation (how to install, how to remove, how to configure, ...)
- needs plugin writers documentation (how to create a plugin, structure, configuration, ...)
comment:3 by , 13 years ago
Status: | new → accepted |
---|
I did a bunch during the sprint at PyCon. Then I did some more work later. I haven't had a chance to touch it since.
I might have time to work on it next week while traveling. If I don't then this isn't going to make 0.2.2. Sorry. :(
comment:5 by , 13 years ago
Sorry it took so long. I redid it, then bumped into issues, then redid it again. The latest round works and meets the requirements I think we have.
It's in the 401-plugins branch in my fork.
https://gitorious.org/~willkg/mediagoblin/willkg-mediagoblin/commits/401-plugins
This has completed code, tests, and docs.
The one thing it doesn't really have is documentation on writing plugins or anything along those lines. I think we need to expand the documentation that comes in docs/ to include everything: some rough contributor documentation, site admin documentation, plugin writer documentation, ... The reason for that is that a lot of this stuff is specific to a version of MediaGoblin and it's better to put it all in one place.
I want to spin writing docs for writing plugins off to a new bug.
Once this code lands, the next step is to identify some core plugins we want to write, figure out what API points we need to implement to write those plugins, implement the API points, write the plugins, rinse, repeat.
Anyhow, this code is ready for review.
comment:6 by , 13 years ago
Milestone: | → 0.3.1 |
---|
I think this should land in 0.3.1, so I'm sticking it in that milestone.
comment:7 by , 13 years ago
Just as a small update, this is moving along. Will already has that branch landed in master. However there aren't really any plugins written yet. I think Will is planning to write a flatpages plugin first.
comment:8 by , 13 years ago
Component: | component1 → programming |
---|
comment:9 by , 13 years ago
I pushed a few changes. They're all in my flatpages branch: https://gitorious.org/~willkg/mediagoblin/willkg-mediagoblin/commits/flatpages
- added a flatpages file plugin
- added a couple of methods to the pluginapi allowing plugins to register routes and templates
- tweaked the documentation a bit adding a plugin docs section where we can document core plugins
I did some rough testing. There are probably a bunch of error conditions it doesn't handle well. But it seems to work ok.
One thing that still isn't done that this issue needs is that we need to add documentation for the plugin API to the plugin writer's guide. That should probably be just an autodoc of the pluginapi module.
comment:10 by , 12 years ago
I updated the flatpages commits based on Chris' comments.
Just waiting on a thumbs-up to land.
comment:11 by , 12 years ago
I landed flatpages.
There are some minor issues I have with the plugin infrastructure, though. The gist of it is that the side-effects from importing plugins makes it difficult to build controlled environments for testing. I'm going to work on addressing those this week.
comment:12 by , 12 years ago
Cc: | added |
---|
https://gitorious.org/~willkg/mediagoblin/willkg-mediagoblin/commits/plugins-infrastructure-rewrite
Chris: Can you take a look at the infrastructure rewrite and give comments?
comment:13 by , 12 years ago
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
I reworked plugins, the code has landed, and I think that's what we're going to roll with going forward.
Marking this as closed.
Initial pass in https://gitorious.org/~willkg/mediagoblin/willkg-mediagoblin/commits/401-plugins
There's still a bunch of stuff to do, but that's been interesting.