<p>I'm not looking so much for language-specific answers, just general models for implementing a plugin system (if you want to know, I'm using Python). I have my own idea (register callbacks, and that's about it), but I know others exist. What's normally used, and what else is reasonable?</p>

<blockquote>
  <p>What do you mean by a plugin system? Does Dependency Injection and IOC containers sounds like a good solution?</p>
</blockquote>

<p>I mean, uh, well, a way to insert functionality into the base program without altering it. I didn't intend to define it when I set out. Dependency Injection doesn't <em>look</em> particularly suitable for what I'm doing, but I don't know much about them.</p>

In Python you can use the entry-point system provided by
```
setuptools
```
and
```
pkg_resources
```
. Each entry point should be a function that returns information about the plugin -- name, author, setup and teardown functions, etc.