view doc/plugin-ids.dox @ 25633:c384d62009c0

*** Plucked rev b932d4f94f9c771877b6a8a6a1d7dd3ea9c08005 (qulogic@pidgin.im): Treat FQY responses with no network ID as on the Passport network. Fixes #9240. *** Plucked rev 76f13d0fc7fbff369d01187fcc1b8f517854e119 (qulogic@pidgin.im): These strcmp checks are for equality, meaning a return of 0. *** Plucked rev a7bd74cbe46498f1390a4d33cce115bdd123a68d (qulogic@pidgin.im): Add a data parameter for FQY callbacks and remove the pending users list that was previously used instead. *** Plucked rev 84f6765b71f2ad2d6c7cddd461114ab5fc758b72 (qulogic@pidgin.im): We can't get an ADD error if we never send an ADD command. *** Plucked rev 6d3a0b29b22baeedf393b76044dde689caef3b45 (qulogic@pidgin.im): Add a msn_notification_post_rml analog. *** Plucked rev 0e2af7d2799397628273f534fac31e6dd7c6fe14 (qulogic@pidgin.im): Remove some left over code. *** Plucked rev 0841af13da028245cc279ce8f927ff05c0367ae1 (qulogic@pidgin.im): Check network type, and send an FQY if necessary, when modifying the allow and block lists. Before, users who were not added by you (i.e. spammers) would have no network type and cause disconnects. This should fix it. Fixes #8977. *** Plucked rev a1463341c3bf211c429282870babdb4785c7d817 (qulogic@pidgin.im): Remove notification-server group commands ADG, REG, RMG as groups are now handled in the AddressBook with SOAP calls.
author Ka-Hing Cheung <khc@hxbc.us>
date Sat, 20 Jun 2009 18:27:49 +0000
parents e96daf6bc511
children
line wrap: on
line source

/** @page plugin-ids Plugin IDs

 @section 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.

 @section Format
  The basic format of a plugin ID is as follows:

  <tt><i>type</i>-<i>username</i>-<i>pluginname</i></tt>

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

    - core      - A core libpurple plugin, capable of being loaded in any
                  program using libpurple. Core plugins may not contain any
                  UI-specific code.
    - prpl      - A protocol plugin. This is a special type of core plugin,
                  which provides libpurple the ability to connect to
                  another IM or chat network.
    - lopl      - A loader plugin, which loads scripts as plugins. Perl and
                  Tcl plugins are made possible by loader plugins.
    - gtk       - A GTK+ 2.x (a.k.a. Pidgin) plugin. These plugins may use
                  GTK+ code, but may not use window toolkit code, such as
                  X11, Win32, Cocoa, or Carbon.
    - gtk-x11   - A GTK+ 2.x plugin that uses X11 code. These plugins may
                  use both GTK+ code and X11 code, allowing to hook into
                  features specific to X11.
    - gtk-win32 - A GTK+ plugin that uses Win32 code. These plugins may use
                  both GTK+ code and Win32 code, allowing to hook into
                  features available on Windows.
    - gnt       - A GNT (a.k.a. Finch) plugin. These plugins may use GNT code.
    - qpe       - A plugin for the (now-abandoned) Qutopia user interface.

  The @em username must be a unique identifier for you. It
  @em 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 @em not leave this field blank!

  The @em 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 @em not include version information in the plugin ID--the
  #PurplePluginInfo structure already has a field for this.

 @section nospaces One Last Rule for Plugin IDs

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

 @section exceptions 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 <a
  href="http://plugins.guifications.org/trac/wiki/PluginPack">Purple Plugin
  Pack</a>. All plugins whose lives started in the Purple Plugin Pack use
  <tt>"plugin_pack"</tt> 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.

 @section examples Examples of Well-Chosen Plugin IDs

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

    - <tt>"gtk-amc_grim-guifications"</tt> - This is the plugin ID for the
                                             Guifications 2.x plugin.
    - <tt>"gtk-rlaager-album"</tt> - This is the plugin ID for the Album
                                     plugin, which is now part of the
                                     Purple Plugin Pack. Its ID follows the
                                     rules because its life started prior
                                     to its inclusion in the Plugin Pack.
    - <tt>"core-rlaager-irchelper"</tt> - This is the plugin ID for the IRC
                                          Helper plugin, which is now part
                                          of the Purple Plugin Pack. Its ID
                                          follows the rules because its
                                          life started prior to its
                                          inclusion in the Plugin Pack.

 @section plugin-db 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. 

 */

// vim: syntax=c.doxygen tw=75 et