]> www.infradead.org Git - pidgin-chime.git/commitdiff
Update TODO
authorDavid Woodhouse <dwmw@amazon.co.uk>
Tue, 13 Mar 2018 10:09:52 +0000 (10:09 +0000)
committerDavid Woodhouse <dwmw@amazon.co.uk>
Tue, 13 Mar 2018 10:09:52 +0000 (10:09 +0000)
TODO

diff --git a/TODO b/TODO
index e4f64d48993e1ea55a53e2b56f9f0ef02ced9b0e..ed0a5f7f58153ee7a253b33fc4af6fb94f4aaa61 100644 (file)
--- a/TODO
+++ b/TODO
 
-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...