From: David Woodhouse Date: Tue, 13 Mar 2018 10:09:52 +0000 (+0000) Subject: Update TODO X-Git-Tag: v0.9~52 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=9199c86b29518f61fe94b36131d0bccb7528d519;p=pidgin-chime.git Update TODO --- diff --git a/TODO b/TODO index e4f64d4..ed0a5f7 100644 --- a/TODO +++ b/TODO @@ -1,105 +1,81 @@ -We have a minimally functional client which can do chat rooms and 1:1 IM. -The code is at "prototype" quality and needs improving, and there are -features and corner cases which are still unhandled. What se need to do -includes... + • CHAT ROOMS / IM - • Meetings + The chat functionality is fairly complete, but some parts are + exposed rather clumsily or not at all due to the limitations of the + Pidgin/libpurple APIs. The good news is that when we publish this + plugin as open source, we can improve those APIs to expose our + functionality in a saner way. Things we don't support yet for this + reason — but which we *could* expose somehow in the meantime if + there is demand for it — include: - Handle the incoming JoinableMeetings information. We can't actually - join yet but at least we could pop up a notification with a - clickable URL for the web client. We should use the individual PIN - so we join with the correct identity. + • Removing chat room members. + • Deleting / administration of / leaving chat rooms. + • Notification settings for IM/chat (always/mention/never). + • Displaying full name of users who are not "buddies". + • List of chat rooms with unread message counts, especially in the + buddy list. + • Creating new group chats (not rooms). - • Error handling + Other TODO items which are less constrained by the Pidgin APIs: - There is very little of this; a lot of silent "return" on failures. - That's all very well for a rapid prototype but crap for a piece of - software that people are actually going to use. Someone needs to do - the fun part of turning all those failures into coherent error - messages. + • Automatically populate buddy list with chat rooms, as we do for + contacts. + • Markdown support: this works for incoming but you have to + explicitly type "/md ... " in your outbound messages to send it. + This is the same as the web client but we should do better and + convert from HTML generated by Pidgin's UI editor/formatter. - • GObjectification - Make it look a bit more like a glib program, and turn things into - proper objects. Things like struct chime_contact should definitely - be a ChimeContact object, with signals that can be subscribed to - instead of the direct hacks in set_contact_presence(), for example. + • FILE TRANSFER + • We support receiving photo attachments, but complete support for + sending/receiving arbitrary attachments is being worked on in a + Github PR. - • Initial login - Even if it has to be screen-scraping HTML and invoking - purple_request_fields() + • MEETINGS + Basic meeting handling is functional — we can schedule meetings and + join them, and the participant list is displayed. - • Code documentation + • Audio - Now that the APIs for the internal functions are no longer evolving - quite so rapidly, document them. Especially the subtle parts about - object ownership. + This is now basically working, but needs cleanup. In particular + the transport code needs to be properly implemented so that it + can handle reconnects, and use DTLS in preference to the TCP + websocket. + • Screen share - • Logging + Implementing screen share RX and representing it as an incoming + video stream in Pidgin should be relatively simple. Outbound also + shouldn't be so hard, based on libshadow and the code in the Lync + plugin. - Somewhat ties into the above. We should emit decent application - logs through purple_debug(), in addition to dumping the wire - traffic as we do when $CHIME_DEBUG is set. We should ensure we - log unhandled incoming messages — the juggernaut callback already - has a start at returning a 'handled' status. + • Video + Video is mostly RTP-based, so should be a lot easier to throw + together than audio was. - • Multi-party conversations - These will need to be represented as chats in Pidgin. + • DIRECT MEDIA CALLS + The Chime app gives you a way to make audio/video calls directly to + individuals. We can currently receive those calls, since they + basically show up as meetings. We need to work out the protocol + API which set up such a 1:1 call, and implement them so that you + can make an audio/video call directly to an IM contact. - • Message notifications / attachments - Handle the special cases in messages other than just plain text. - - - • IM history - - Work out how we can make historical IM messages available without - having to present then *all* as new messages on first startup. - - - • Presence / availability + • PRESENCE / AVAILABILITY Investigate and properly implement the device availability workflow, use the 'Automatic' status instead of 'Available', and ensure we have coverage of the other states that a peer can be in. - • Login - - Work out if there's a way we can actually handling the login from - within Pidgin. - - - • Pidgin 3.x + • PIDGIN 3.x Port to Pidgin 3.x - - - • 'Typing' status - - Send and show the 'is typing a message...' status - - - • Message receipts - - As of Pidgin 3.x we can show when a message has been read: - https://developer.pidgin.im/ticket/6940#comment:34 - - - • Valgrind testing - - Keep running under 'valgrind --leak-check=full' and other testing - - - • Voice / video / meetings - - Lots more fun here when we're ready...