About Plugins

We explain federated wiki plugins. We define their role interpreting content, recount our experience writing many, describe principles and strategies for future plugins, and offer a step-by-step guide for new plugin authors. We'll also collect pointers here to good plugins when they emerge.

Federated Wiki tags every paragraph (story item) with a type that indicates what kind of markup it might use and what other data might be stored within or retrieved by the paragraph. See Abstraction of Method

There are some basic item types that are built into the core wiki-client software for the simple reason that the core creates items of these types and expects the corresponding built-in plugins to be there. See Core Plugins

We've developed conventions for using plugins that go beyond those built-in to the core software. Each server can be configured with a complement of plugins. The fed.wiki.org family of servers document their plugins in the how-to pages. See How to Add Plugins

There are many opportunities to supplement the core plugins with advanced or even exotic behaviors. These behaviors are created and travel through the federation by mechanisms distinct from the content they interpret. See Plugin Lifecycle

Plugins adhere to some conventions and exist to go beyond others. This makes it hard to know what you are suppose to do when you creating or extending a plugin. The best we can do is offer what we have as case studies. See Hacking Wiki's Methods

A wiki page is inert until plugins bring it to life. Wiki pages circulate freely because they are safe. Plugins can be dangerous so we take more care creating and distributing them. See Who Makes New Plugins

The mechanics of creating a new plugin can be daunting and they have evolved as we've moved toward split repositories and node.js build conventions. There is a script. See Make Plugin Script

We've adopted practices in both the design of new markups and how they are parsed. We consider how a plugin might be initially configured in json and further configured by editing. See Common Markup Practice

The plugin inserts javascript into the running wiki client application. We're trusting this code to behave well and do wonderful things. Plugin developers will be challenged to understand and correct misbehaving code. See Debugging New Plugins

You will want to use your new plugins in the wiki pages you create. We maintain a small project that brings all the pieces of wiki together, including your plugins. See Maintaining a Custom Wiki

We've shown that plugins provide a powerful way to create capability inside wiki. Our ambition is that plugins enable us to do work with our wiki, not just talk about doing work. We expect the way plugins work to evolve. See Help Guide Our Work