Plugin IDs

Introduction

Every plugin contains a unique identifier to prevent duplicate plugin loading and conflicts. Third-party plugins (that is, plugins written by anyone who is not a libpurple, Pidgin, or Finch developer) are expected to use a plugin ID that follows a specific format. This format categorizes plugins and makes duplicate IDs highly unlikely.

Format

The basic format of a plugin ID is as follows:

type-username-pluginname

The type indicator specifies the type of plugin. This must be one of the following:

The username must be a unique identifier for you. It should be your http://developer.pidgin.im Trac user ID. Failing that, you could use your SourceForge user ID or your Freenode IRC nickname, if you have either. The http://developer.pidgin.im Trac user ID is preferred. Do not leave this field blank!

The pluginname is the name of your plugin. It is usually all lowercase letters and matches the static plugin ID (the first argument to the PURPLE_INIT_PLUGIN() macro call), although it can be anything you like. Do not include version information in the plugin ID--the PurplePluginInfo structure already has a field for this.

One Last Rule for Plugin IDs

The last rule of plugin IDs is the most important of all. Plugin IDs may NOT contain spaces. If you need a space, use another hyphen (-).

Exceptions to the Rule

As with any rule there are exceptions. If you browse through the source tree you will see that the plugins we distribute with the Pidgin source do not contain a username field. This is because while one developer may have written each specific plugin, the plugins are maintained collectively by the entire development team. This lack of a username field is also an indicator that the plugin is one of our plugins and not a third-party plugin.

Another exception to the rule is the Purple Plugin Pack. All plugins whose lives started in the Purple Plugin Pack use "plugin_pack" for the username field to indicate origination in the Purple Plugin Pack.

These two exceptions are mentioned here for completeness. We don't encourage breaking the conventions set forth by the rules outlined above.

Examples of Well-Chosen Plugin IDs

The following is a list of well-chosen Plugin IDs listing a few good examples.

Plugin Database

Although it doesn't exist yet, in time there will be a plugin database on the Pidgin website, where users can download and install new plugins. Plugins will be accessed by your plugin ID, which is one reason why it must be unique.