Trac is being migrated to new services! Issues can be found in our new YouTrack instance and WIKI pages can be found on our website.

Changes between Version 7 and Version 8 of DesignGuidelines


Ignore:
Timestamp:
Jan 31, 2008, 11:10:56 PM (16 years ago)
Author:
MarkDoliner
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DesignGuidelines

    v7 v8  
    1818
    1919In plain language, this means that the protocol-specific code goes in the protocol plugin (!PrPl or prpl), and that libPurple exists, and is cleanly separated from the user interface.  There are practical implications to this.  While all of our code depends on glib, only the Pidgin specific parts depend on GTK+.  To implement, for example, file transfer, there are 3 steps.  First, the protocol(s) have to support it.  By themselves, however, the protocols can do nothing.  So the "core," libPurple, has to support it also (the second step).  We do not want massive amounts of very similar code in libPurple, so the implementation of file transfer at the libPurple level has to abstract away from how individual protocols handle it, so as to be able to use the same calls from all file transfer supporting protocols.  Last, but not least, before the user can actually send or receive a file, the UI (Pidgin, Finch or Adium) must support it.  These interfaces know nothing about the protocol, and have only limited contact with the core.  This helps to enforce the desire for uniformity explained above.  It also makes it easier for the only sort of duplication we encourage: many interfaces.  The core implementation cannot assume too much about what the UI will do, because the GTK+ UI (Pidgin) might need to handle a file transfer somewhat differently than the ncurses based UI (Finch).  Patches that voilate this layering will be rejected.  In practice, this means that there is more work involved to introduce a new class of functionality, say file transfer, white-boarding, voice, or video.  On the other hand, it means less work to implement any given class of functionality for a new protocol or for a new UI.
     20
     21== Living Code ==
     22
     23Our source code is very much a 'live' document.  It should reflect what is currently needed, not what used to be needed or what might be needed in the future.  Old code should be removed if it isn't being used (of course, you can only remove public functions and structures when the major version number increases)--it'll always be in the source code repository if anyone needs it.  The code should contain documentation about what it does and why.
All information, including names and email addresses, entered onto this website or sent to mailing lists affiliated with this website will be public. Do not post confidential information, especially passwords!