NFJS 2005: Designing and Developing Pluggable App Architecture
David Bock clearly had not given this talk before, and it was not quite as informative as I'd hoped.
I did get a sharper picture of how plugins should interact with their hosting application, via a specific API (which will be applied to a new SnipSnap API). He also showed a nice workflow configuration format they developed (describing states and transitions), and some good best practices for version number assignments. He also had a great set of guidelines for dependancies and package naming:
children may import parents in package hierarchy, but not vice versa
peers and unrelated may import, but only in one direction: no circular dependancies!
Remember, "if you depend, you'll have to deploy"
David also shared a few good tool references: