

  Please note that this file has been replaced by an online project management tool,
  and all information here can be completely outdated.
  Our new project management site can be found at: http://trac.kmess.org/

  If you're looking for junior jobs, you may also contact us
  at the KMess help forums: http://kmess.org/board/

  Thanks
  - The KMess team



To do:
======

Unfinished new features:
___ Invite contacts for a new chat session when the current chat is used for file transfers.
___ Invite contacts for a new chat session when the current chat has multiple participants (display dialog to choose the contact).
___ Lookup all "TODO" items in the code.

Unfinished protocol features:
___ Integrate UPnP support with file transfer invitation code.
___ Make sure KMess can send two files at once with the classic file transfer method (test this).
___ Support a SLP Decline/error message for a sent P2P/SLP transfer invitation, and continue to transfer over the switchboard.
___ Support a second invitation for file transfers, detect when remote client only returns it's internal IP or does not listen.
___ Detect network settings, make the other client server for file transfer (sending a second transfer-invite).
___ Update the classic FileTransfer application to use the new async-cnnect, DirectConnectionPool and showTransfer*() API.

Critical bugs:
___ Restore the documentation
___ Restore the translations

Junior jobs:
___ Improve wink playing, include preview, offer "play" button (also see other showWink() issues). Also fixes issues when chat is started with a wink.
___ Implement phone settings (PRP and BPR fields).
___ Implement privacy settings (GTC and BLP fields, messages like "can't chat with invited contact" because not in the AL).
... And if you're up for a challenge, you could try one of the "Low priority protocol features" below too.
... Or try to implement a new MSN feature (see "Future ideas" section).

Annoying bugs:
___ Fix repeated picture transfer invitations when contact declines or aborts the invitation (preferably disable only for a few minutes).
___ Automatically clean up the displaypics folder, and msnpicture-alias-##.png images that are older then 1 month.
___ Add detection for NAK responses to file transfer invitations
___ Improve performance of restyling the chat window: combine xml to one string.

Low-priority features:
___ Improve wink processing messages of `cabextract` output in ChatWindow::showWink().
___ When chat window closes, inform user the file transfers will also abort.
___ See what happens when there is a picture transfer in a multi-chat, and one of the chats becomes busy.
___ When opening chat windows, shift their position to make them cascade.

Low-priority code changes:
___ Add Application::get..TransferAbortMessage().
___ Only allow plugins/non-local files temporary when displaying winks?
___ Implement Application::attachToChat(..) feature to improve aborting?
___ Create a WinkArchive class for the code in ChatWindow::showWink().
___ Include contact meta-data in receivedMessage() call of ChatWindow::showWink().

Low-priority protocol features:
___ Support adding contacts to multiple groups.
___ Detect multiple external IP addresses to advertise in file transfer invite message.
___ Support sending the data-preparation ACK later with Windows Live Messenger picture transfers.
___ Support direct connection setups when requesting contact pictures.
___ Support aborting the data-preparation, also detect when contact does this.
___ Support the datacast emulation over MSNP2P for MSNC1-compatible clients (for winks).
___ Test whether applications need to be aborted when the switchboard reconnects.
___ Check P2P incomingMessages_ / outgoingMessages_ cache for timeouts.
___ Leave a P2PApplication half-open to receive a final error message.
___ Use "URL PERSON/PROFILE" settings.

Wishes by users for 1.5:
___ XMMS2 now listening: http://www.kmess.org/board/viewtopic.php?t=1569 (use relaytool from autopackage.org for that).

Implemented for 1.5:
_Y_ Implement text/x-clientcaps message and MsnObject name to advertise KMess to other third-party messengers.
_Y_ Add a checkbox to the settingspanel to disable the shaking window effect.
_Y_ Support emoticons folder with KDE 3.3
_Y_ Support "now playing" by other contacts, use dcop for our status.
_Y_ Handle closed direct connection, KMess keeps using the direct connection.
_Y_ Implement i18n() for chat styles, e.g. use libxml to replace all text nodes, create an XSLT to extract all text nodes.
_Y_ Fix the memory-leak of sentMessages_ for chat messages, these are only cleared at a NAK currently.
_Y_ Send previews of images in msn file transfers.
_Y_ Fix detection of context field splitter in FileTransferP2P::contactStarted1..(), also needed to show image previews.
_Y_ Contact sidebar width is not saved/restord anymore.
_Y_ Contact sidebar width is changed when the chat window resizes.
_Y_ Check if our eventsrc file is found in the KDE-dirs, otherwise warn KMess can't notify or flash the taskbar or play sounds (see: http://www.kmess.org/board/viewtopic.php?t=1619)
_N_ (caused by Beryl bug) "Focus stealing prevention", open the new chat windows in the background by default.
_Y_ Add save log button to network window.
_Y_ Improve removing contacts, offer dialog to block the contact as well (currently always kept in allowed list).
_Y_ Display a message box if the chat logs can't be saved because the folder no longer exists.
_Y_ Automatically save settings when pressing OK, not when closing KMess.
_Y_ Fix settings for balloon notifications, see http://www.kmess.org/board/viewtopic.php?t=559
_Y_ Now listening icon is SUSE specific
_Y_ Fix MsnConnection::addPercents(), replace with KURL::encode_string(), but test for compatibility.
_Y_ Replace warning message "you can't change your friendly name" with something less unobtrusive.
_Y_ Emoticons are no longer displayed in the chat settings tab.
_Y_ Improve settingsdialog height, for 800x600 displays.
_Y_ Hide the register link when editing an account.
_Y_ Remove the dependency on QWidget for data-classes.
_Y_ Add a balloon if the contact start the chat with an filetransfer/nudge/wink.
_Y_ Implement KDE passive popups so the balloon code can be removed later.
_Y_ Balloon size fix (2 contacts on balloon), might become obsolute when passive popups are used instead.
_Y_ Get rid of the balloons
_Y_ Drag and drop of files in the chat window.
_Y_ Fix newline shortkey Ctrl+Enter / Shift+Enter in GNOME. In fact it didn't work at all, not only in GNOME. :P
_Y_ Delete contact settings when contact no longer exists in the contact list.
_Y_ Implement cleaning up of the kmessrc file, remove old Contact entries that are no longer used.
_Y_ Make moving of contacts smoother, see MsnNotificationConnection::getAdc().
_Y_ Fix error messages with 'actions -> new contact' on a 'non-existing contact', 'existing contact' and 'contact without @'.
_N_ Move network/extra/httpsoapconnection to the network root folder.
_Y_ Move chat/invitedcontact.h to the contact folder.
_Y_ Implement text/x-keepalive message so be sure when a contact really left a chat.
_Y_ Update binreloc support to version 2.0.
_Y_ Crash with downloading offline-im messages: http://www.kmess.org/board/viewtopic.php?t=1490
_Y_ Login blocks all gui-events: make all connection attempts async
_Y_ Allow users to scale fonts in the chat window (zoom icons).
_Y_ Fix problems with clicking on contacts rapidly, see http://www.kmess.org/board/viewtopic.php?t=533
_Y_ Decouple the MsnSwitchboardConnection from the ChatWindow class, for picture transfers in the background.
_Y_ Highlight the text of the contact list item when it's active.
_Y_ Fix contact list background picture scrolling
_Y_ Implement setEnabled() checks for the contact group context menu in KMessView::slotContextMenu().
_Y_ Optionally download contact pictures when the picture changed but they're not in a chat yet.
_Y_ Test whether a display picture is fully received, and remove the image from the cache otherwise.
_Y_ Limit the maximum number of MSN Object simultaneous downloads, to avoid server flooding. See ChatMaster::slotContactChangedMsnObject().
_Y_ Fix e-mail support for non-Hotmail accounts, don't attempt to use Hotmail. Use chosen app or default KDE mail app instead).
_Y_ Update the accounts listed in the initial list When one of the registered accounts is deleted.
_Y_ Improve the contact list contact menu
_N_ Check if the mutex lock in MsnConnection is really needed anymore.
_Y_ Restore the context menu in the chat window.
_Y_ Disallow logging in without having entered a password.
_Y_ When the switchboard is disconnected (gray contact pictures), the command to invite new contacts will get ignored when a new switchboard gets ready.
_Y_ In the emoticon settings panel, don't assume "smile.png" will always be available (parse theme, preferably with an EmoticonTheme class).
_Y_ Include a tooltip in the contact sidebar.
_Y_ Include a contact menu in the contact sidebar (see https://www.lab.fi.uva.es/~albgonz/kmesss.jpg)
_Y_ When the contact disables it's picture, should we leave the current one active, or revert the the "unknown" picture?
_Y__ Group chats: remove contact frame when a user leaves the chat.
_Y_ Support removing a contact from just one group.
_Y_ Group chats: fix status bar when multiple users are typing a message.
_Y_ Implement UPnP support
_Y_ Add winks support
_Y_ Add emoticon transfer support
_N_ "Who has me in his/hers contact list?" dialog (allowed/removed groups already reveal this)
_N_ Include the network-window as "--with-network-window" if the network-window-code displays traffic nicer.


Implemented for 2.0:
_Y_ Account menu's: only show submenu when there are multiple accounts.
_Y_ Add the ability to select another browser for opened links, instead of the kde's default browser.
_Y_ Change mouse cursor when hovering over the "personal status message" widget, make non-active background color less dark.
_Y_ Compact sidebar list as described in http://www.kmess.org/board/viewtopic.php?t=460
    (make it optional, let the user choose between "no", "compact", "full")
_Y_ Contact list items flicker, specially when there are a lot of contacts.
_Y_ Disable cut/copy for the password line (InitialViewInterface, not using KPasswordEdit because it disables too much).
_Y_ Group chats: use more compact contact frame.
_Y_ Group off-line contacts in one single group.
_Y_ Improve the parsing of *bold* /italics/ and _underline_, so http:/website/ does not become italic and avoid mangling
    <a href="http://website/"> to <a href="http:/<i>/website/</i>">.
    (looks more clean, though it's a bit kmerlin like though, and the current pictures list is not that bad for multi-chat) - Being worked on
_Y_ Maybe: improve chat window layout like http://kde-apps.org/content/show.php?content=24461
_Y_ Move utility classes to a separate folder.
_Y_ Order of the title in the main window, account before or after. Should distinguish from the chat windows though.
_Y_ Put TcpConnectionBase under MsnConnection.
_Y_ Remove all #includes for <kdebug.h> and replace it with "kmessdebug.h" (watch for inclusions from subdirs)
_Y_ See what happens when there is a picture transfer in a multi-chat, and one of the chats becomes buzy.
_Y_ Tabbed chats.
_Y_ Use if(KMESS_NULL(..)) checks instead of current if(.. != 0) { .. }
_Y_ Use kdWarning() instead of kdDebug() << "WARNING", for warning messages.
_Y_ Add HTTP connection method.
_Y_ Add Ink support?
_Y_ Upgrade to MSNP14, but not until the protocol is fully understood! (it has some radical changes).
_Y_ Update contact properties edit dialog, icon button for contact icon.
_Y_ Browse/view the contact picture cache (include meta data, like contact handle and date/time)
_Y_ GetHotNewStuff (as of KDE 3.4, either support it through a KPart, or wait for KDE 4 conversion)
_Y_ KWallet integration



Future ideas:
=============

MSN Protocol support:
___ Improve old file transfer code, multiple connections like MSN5 does.
___ Implement a settings category ("File transfers") where the user can at least choose:
    - "[x] Allow KMess to control my internet router programmatically [learn more]"
    - "Use the following port to receive UPnP broadcast responses: [default 1900]"
___ Implement STUN support, also for Connection-Type field, see http://en.wikipedia.org/wiki/STUN and http://en.wikipedia.org/wiki/UDP_hole_punching.
___ Add voice (SIP) support
___ Add Voice clips support, see http://www.hypothetic.org/docs/msn/phorum/read.php?f=1&i=11505&t=11437
___ Add webcam (RTP) support, see http://www.hypothetic.org/docs/msn/phorum/read.php?f=1&i=9837&t=9837
___ Fix msn remote desktop invitation support (context field with user/pass)
___ Implement MSN Spaces integration
___ Implement MSN Games support (ActicitiesCollection : public QPtrList<Activity>)
___ Implement shared folders.

Invitation support:
___ Check whether gnomemeeting, krdc exists before starting/acceping a session
___ Support Konference for netmeeting invitations as well.
___ Detect whether gnomemeeting or konference exists before starting a netmeeting session.

Interface features:
___ Show an icon overlay for contact connected with webmessenger.msn.com / MSN Mobile
___ Add contact icon (purple?) for unknown contacts added by others in a multi-chat session.

KDE Integration:
___ KDE-IM bridge (http://developer.kde.org/documentation/library/cvs-api/interfaces/html/classKIMIface.html)
