doc/plugin-ids.dox

Mon, 08 Jun 2009 02:24:49 +0000

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Mon, 08 Jun 2009 02:24:49 +0000
changeset 27314
402d25ce01da
parent 20898
43fed61d11a1
child 33955
55aa58076485
child 40969
c8d074d77a1e
permissions
-rw-r--r--

Use the JID for adding a chat/buddy because the name is for descriptive
purpose only, and using it will not fill in the Add Chat dialog correctly.
Because the JID is not visible, the user will not know what to actually put
there instead.

7335
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1 /** @page plugin-ids Plugin IDs
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3 @section Introduction
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4 Every plugin contains a unique identifier to prevent duplicate plugin
20898
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
5 loading and conflicts. Third-party plugins (that is, plugins written by
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
6 anyone who is not a libpurple, Pidgin, or Finch developer) are expected
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
7 to use a plugin ID that follows a specific format. This format
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
8 categorizes plugins and makes duplicate IDs highly unlikely.
7335
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
9
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
10 @section Format
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
11 The basic format of a plugin ID is as follows:
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 <tt><i>type</i>-<i>username</i>-<i>pluginname</i></tt>
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 The @em type indicator specifies the type of plugin. This must be one
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 of the following:
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17
20898
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
18 - core - A core libpurple plugin, capable of being loaded in any
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
19 program using libpurple. Core plugins may not contain any
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
20 UI-specific code.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
21 - prpl - A protocol plugin. This is a special type of core plugin,
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
22 which provides libpurple the ability to connect to
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
23 another IM or chat network.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
24 - lopl - A loader plugin, which loads scripts as plugins. Perl and
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
25 Tcl plugins are made possible by loader plugins.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
26 - gtk - A GTK+ 2.x (a.k.a. Pidgin) plugin. These plugins may use
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
27 GTK+ code, but may not use window toolkit code, such as
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
28 X11, Win32, Cocoa, or Carbon.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
29 - gtk-x11 - A GTK+ 2.x plugin that uses X11 code. These plugins may
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
30 use both GTK+ code and X11 code, allowing to hook into
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
31 features specific to X11.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
32 - gtk-win32 - A GTK+ plugin that uses Win32 code. These plugins may use
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
33 both GTK+ code and Win32 code, allowing to hook into
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
34 features available on Windows.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
35 - gnt - A GNT (a.k.a. Finch) plugin. These plugins may use GNT code.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
36 - qpe - A plugin for the (now-abandoned) Qutopia user interface.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
37
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
38 The @em username must be a unique identifier for you. It
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
39 @em should be your http://developer.pidgin.im Trac user ID. Failing that, you
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
40 could use your SourceForge user ID or your Freenode IRC nickname, if you
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
41 have either. The http://developer.pidgin.im Trac user ID is preferred.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
42 Do @em not leave this field blank!
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
43
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
44 The @em pluginname is the name of your plugin. It is usually all
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
45 lowercase letters and matches the static plugin ID (the first argument to
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
46 the PURPLE_INIT_PLUGIN() macro call), although it can be anything you
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
47 like. Do @em not include version information in the plugin ID--the
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
48 #PurplePluginInfo structure already has a field for this.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
49
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
50 @section nospaces One Last Rule for Plugin IDs
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
51
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
52 The last rule of plugin IDs is the most important of all. Plugin IDs may
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
53 @em NOT contain spaces. If you need a space, use another hyphen (-).
7335
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
54
20898
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
55 @section exceptions Exceptions to the Rule
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
56
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
57 As with any rule there are exceptions. If you browse through the source
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
58 tree you will see that the plugins we distribute with the Pidgin source
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
59 do not contain a username field. This is because while one developer may
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
60 have written each specific plugin, the plugins are maintained
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
61 collectively by the entire development team. This lack of a username
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
62 field is also an indicator that the plugin is one of our plugins and not
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
63 a third-party plugin.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
64
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
65 Another exception to the rule is the <a
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
66 href="http://plugins.guifications.org/trac/wiki/PluginPack">Purple Plugin
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
67 Pack</a>. All plugins whose lives started in the Purple Plugin Pack use
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
68 <tt>"plugin_pack"</tt> for the username field to indicate origination in
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
69 the Purple Plugin Pack.
7335
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
70
20898
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
71 These two exceptions are mentioned here for completeness. We don't
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
72 encourage breaking the conventions set forth by the rules outlined above.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
73
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
74 @section examples Examples of Well-Chosen Plugin IDs
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
75
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
76 The following is a list of well-chosen Plugin IDs listing a few good examples.
7335
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
77
20898
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
78 - <tt>"gtk-amc_grim-guifications"</tt> - This is the plugin ID for the
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
79 Guifications 2.x plugin.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
80 - <tt>"gtk-rlaager-album"</tt> - This is the plugin ID for the Album
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
81 plugin, which is now part of the
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
82 Purple Plugin Pack. Its ID follows the
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
83 rules because its life started prior
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
84 to its inclusion in the Plugin Pack.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
85 - <tt>"core-rlaager-irchelper"</tt> - This is the plugin ID for the IRC
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
86 Helper plugin, which is now part
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
87 of the Purple Plugin Pack. Its ID
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
88 follows the rules because its
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
89 life started prior to its
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
90 inclusion in the Plugin Pack.
7335
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
91
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
92 @section plugin-db Plugin Database
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
93 Although it doesn't exist yet, in time there will be a plugin database
16257
66f737e6b718 More renaming.
Richard Laager <rlaager@pidgin.im>
parents: 13925
diff changeset
94 on the Pidgin website, where users can download and install new plugins.
7335
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
95 Plugins will be accessed by your plugin ID, which is one reason why it
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
96 must be unique.
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
97
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
98 */
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
99
20897
2608e9e07913 Add some links from signal documentation back to the documentation for the
Will Thompson <resiak@pidgin.im>
parents: 16257
diff changeset
100 // vim: syntax=c.doxygen tw=75 et

mercurial