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

We've adopted stylistic conventions that help readers recognize what they are looking at and how they might change it. See Rendered Style Guide

Plugins have the privilege of executing as javascript in the same address space as the wiki-server node application and the wiki-client browser single-page application. In addition lifecycle calls, event emitters and a few global variables create an environment where most things are possible. See Plugin Runtime Environment

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

Plugins contain documentation pages that describe capabilities, explain specialized markup, and include examples of usefully configured examples. See Plugin Documentation

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

Should your new plugin become popular, you may want to contribute it to the github.com/fedwiki organization and they might be glad to own it. See Transferring Plugins

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