'x' means: is done!

- keep an eye on disco_feature stuff.
- fix MUC documentation!
X make the MUC extension not be tied to a specific connection.
  Let it discover new connections itself.
  => for this the join_room function might need a connection argument
     to discover the right connection. => maybe use the %args hash for this,
     as the default should be 'the first' connection we can grab.
  => think about get_room and the implications in general that 'multiple'
     connections are handled by one extension.
- vcard retrieve sends out presence, but the 'last sent presence' info
  isn't available in the connection or to the vcard extension.
  => introduce storing the 'last sent presence' and offer a 'send_presence_update'
  method (at least internally), to repeat the last sent presence (be careful
  not to repeat directed presences!).
   - think more about $dont_retrieve_vcard.
- make exponential falloff in Client.pm when an account couldn't be connected.
- remove XML::Twig dependency from debug => ...
- map the domain part correctly w.r.t. IDNA
- rename 'domain' parameter to 'host',
  and rename the internal host/port to peer_host and
  peer_port.
- add nick_change to documentation
- Implement XEP-0045: Multi-User Chat
   x store full jid info on entering room
   x implement delayed delivery for messages
      x WRITE TEST!
      - to mark history of room
   x 7.8 Sending a Private Message
   x 7.9 Sending a Message to All Occupants
     - visitor error (when room not allow without voice to chat)
   - improve room info handler class to retrieve interesting information eaasier
      - room occupant query
   - implement status code mappings
      - that room logged
      - non anonymous
   x look over error reporting (more conclusive errors!)
      x change presenceerror to something more clear
      x entering members only
      x banned
      x nickname conflict
         - with resolution
      x max users
      x locked
      x 11. Error and Status Codes
         x 11.1 Error Codes
         - 11.2 Status Codes
   - managing of discussion history when entering
      - maxchars, maxstanzas, seconds, since
   x nickname changes
      x make own possible
      x log changes of other people nicknames
      - according errors
   - test changing of presence of a user
   - invitations
   - 7.10 Registering with a Room
   - 7.11 Discovering Reserved Room Nickname
   - 7.12 Requesting Voice
   - 8. Moderator Use Cases
      x 8.1 Modifying the Room Subject
        - test error handling of subject_change_error
      - 8.2 Kicking an Occupant
      - 8.3 Granting Voice to a Visitor
      - 8.4 Revoking Voice from a Participant
      - 8.5 Modifying the Voice List
      - 8.6 Approving Voice Requests
   - 9. Admin Use Cases
      - 9.1 Banning a User
      - 9.2 Modifying the Ban List
      - 9.3 Granting Membership
      - 9.4 Revoking Membership
      - 9.5 Modifying the Member List
      - 9.6 Granting Moderator Privileges
      - 9.7 Revoking Moderator Privileges
      - 9.8 Modifying the Moderator List
      - 9.9 Approving Registration Requests
   - 10. Owner Use Cases
      x 10.1.1 General Considerations
      x 10.1.2 Creating an Instant Room
      x 10.1.3 Creating a Reserved Room
         x entering password protected rooms
         - 7.7 Occupant Modification of the Room Subject
      - 10.1.4 Requesting a Unique Room Name
      - 10.2 Subsequent Room Configuration
      - 10.2.1 Notification of Configuration Changes
      - 10.3 Granting Ownership Privileges
      - 10.4 Revoking Ownership Privileges
      - 10.5 Modifying the Owner List
      - 10.6 Granting Administrative Privileges
      - 10.7 Revoking Administrative Privileges
      - 10.8 Modifying the Admin List
      - 10.9 Destroying a Room
   - 7.6 Converting a One-to-One Chat Into a Conference

- write a tutorial for simxml
- improve the SSL/TLS handling
- make more tests
   - oob
   - data forms
   - jabber component
- fix the inaviodable memoryleaks with the callbacks
  the circular object structs.
- put some serious stuff in the synopsises
- look at attribute namespace preservation! (if they got
  prefixes, how to parse this with expat?
  see also http://www.w3.org/TR/REC-xml-names/#scoping-defaulting )
- fix problem that xml::writer writes after <stream/> ahs been written
  - reproduce by conflicting resources!
- test the xml parse error object somehow!
- add context field to IQ error for all the places origin from IQ errors
  (bind_error, session_error, ...)
- AnyEvent::XMPP::Client
  - find a way to distinguish presences from JIDs that
    are in multiple account's roster.
- AnyEvent::XMPP missing functionality to be RFC 3920 conform:
   - improve error handling for SASL to
     support retries as specified in RFC 3920.
     (eg. by supporting a method sasl_retry() which takes
      the changed credentials)
   x SRV record lookup
      - weight handling!
- AnyEvent::XMPP::IM missing functionality to be RFC 3921 conform:
   - 7.2.  Business Rules
- Implement XEP-0115: Entity Capabilities
- Implement XEP-0190: Best Practice for Closing Idle Streams
x Implement XEP-0030: Service Discovery
   - see also: XEP-0128: Service Discovery Extensions
   - missing feature: building up a item tree for discovery
- see also: grep 'XXX\|FIXME\|TODO' * -r
  - lib/AnyEvent/XMPP/Writer.pm: # XXX: removed authname, because it
                                    ensures maximum connectivitiy
long term?
==========

x Implement XEP-0082: XMPP Date and Time Profiles
   - provide maybe _to functions for the old format,
     it's still in use out there
- make dns resolution async!
- Maybe implement XEP-0146: Remote Controlling Clients
x keep an eye on:
   - TLS: implemented, just do some extensive testing WRT blocking,
          i don't trust the current way the watchers are handled,
          i'm in fear of deadlocks...
