| 1 | Things to do for [wiki:MySpaceIM]. |
| 2 | |
| 3 | == Open Items == |
| 4 | (Very) rough estimated times are shown in parenthesises. (These times are not commitments and may change; they're only intended for personal scheduling purposes.) |
| 5 | |
| 6 | * (1 week) Generic protocol message sending function, that handles packing of messages. New MsimMessage struct? Need to add types, so know what values to escape (not base64'd binary fields, such as 'response'), need to be able to have multiple values for the same key (used in WebChallenge message), preferably preserve order (since command name usually comes first), transparently handle integers, strings, binary data, dictionaries, lists. |
| 7 | * (5 min) In parser: translate /1 to / on incoming, and / to /1 on outgoing. |
| 8 | * (1 day) Fix session corruption bug in login and logout. |
| 9 | * (1 day) Typing notifications. |
| 10 | * (5 days) Improved buddy list support. |
| 11 | * (3 days) Status notifications (buddy sign on/off, headline). |
| 12 | * (1/2 day) Add buddy. |
| 13 | * (1/2 day) Delete buddy. |
| 14 | * (1 day) Set status (away message, hidden, ...). |
| 15 | * (1 day) User information. |
| 16 | * (5 days) Blocklist/privacy. |
| 17 | * (3 days) Picture. |
| 18 | * (1 day) Change caps/spaces in IM name. |
| 19 | * (5 days) Text formatting (size, color, font). |
| 20 | * (5 days) Message background. |
| 21 | * (5 days) Notifications, particularly for: new mail, new friend request, new comment (see Alerts and Sounds in official client preferences for full list). |
| 22 | * (1 day) Offline messages. |
| 23 | * (2 days) Setup a Win32 virtual machine to test MySpaceIM without booting into Windows. |
| 24 | * (2 weeks) All the TODOs and XXX's mentioned in myspace.c |
| 25 | * (forever) Identify all other features in official client to implement in plugin. |
| 26 | |
| 27 | === Completed Tasks === |
| 28 | * Add options to change connect server and port. ae64e4477492f939c14cd37043f4ba39410e8056 |
| 29 | * Remove usages of `g_assert` since it closes whole program. Fixed in 26b81a00d32bd3c7eac9a260fbf54b8fa4ebfabf. rlaager in #648: |
| 30 | |
| 31 | P.S. For the record, we (the Pidgin team) generally feel it's inappropriate to use g_assert() because that kills the program hard. |
| 32 | |
| 33 | * Internationalization (use _ macro). Fixed in 26b81a00d32bd3c7eac9a260fbf54b8fa4ebfabf. rlaager in #648: |
| 34 | |
| 35 | marking strings for translation and adding appropriate files to po/POTFILES.in? The following is helpful for checking that you've got POTFILES.in right: |
| 36 | |
| 37 | cd po intltool-update -m |
| 38 | * Write escape/unescape functions (for /1 and /2) |
| 39 | * Develop msimprpl within the Pidgin/libpurple tree (on a separate branch, im.pidgin.soc.2007.msimprpl, but in the tree nonetheless), instead of as a stand-alone package like mockprpl |
| 40 | * Cosmetic: use prpl icon from hbons, instead of meanwhile icon. |
| 41 | * Use g_convert for UTF-16LE conversion instead of converting manually (idea from Nathan Peterson) |
| 42 | * Push local changes (including branch im.pidgin.soc.2007.msimprpl) to pidgin.im database ([wiki:jeff my public key] has been [http://pidgin.im/pipermail/commits/2007-April/001553.html added] to the server.) [http://pidgin.im/pipermail/commits/2007-April/001560.html] |
| 43 | * Use RC4 from cipher.c (Purple Cipher API), instead of adding RC4 code to myspace.c |
| 44 | * [http://planet-soc.com/user/100 Started blogging] on planet-soc.com. |
| 45 | * Apply [https://sourceforge.net/tracker/?func=detail&atid=300235&aid=1694487&group_id=235 Nathan Peterson's rc4 patch to cipher.c] to local MTN |
| 46 | * Port plugin to libpurple from Monotone, instead of Gaim 2.0.0beta6 libgaim. |
| 47 | * Create im.pidgin.soc.2007.msimprpl branch in MTN repo and work from there. (have in local database--distributed version control is cool) |
| 48 | |
| 49 | ==== Implemented Features ==== |
| 50 | * Parsing protocol messages |
| 51 | * Login (using email address only) |
| 52 | * Send IM by userid, username, or email |
| 53 | * Receive IM |
| 54 | * Some buddy list support (unstable/incomplete) |
| 55 | * Tooltip text on buddy list |
| 56 | * Win32 support |
| 57 | |
| 58 | == TODO and XXX in myspace.c == |
| 59 | grep -n TODO myspace.c|perl -pe's/^/ /' |
| 60 | |
| 61 | 37 hits. Line numbers refer to f8f316361902ebae273166d4c34bff78d615c74a. |
| 62 | |
| 63 | === refactoring (3) === |
| 64 | * 100: /* TODO: Clean up - I don't like all this repetition */ |
| 65 | * 155: /* TODO: make more elegant, refactor with msim_escape */ |
| 66 | * 175: /* TODO: make more elegant, refactor with msim_unescape */ |
| 67 | |
| 68 | === provoke creation of MsimMessage (10) === |
| 69 | * 275: /* TODO: Some dictionaries have multiple values for the same |
| 70 | * 345: /* TODO: make the GHashTable values be GList's, and append to the list if |
| 71 | * 419: * TODO: escape the values that should be, don't escape what shouldn't! */ |
| 72 | * 515: * TODO: types |
| 73 | * 662: /* TODO: use msim_send. But, response_str must NOT be escaped. */ |
| 74 | * 1022: /* TODO: Remove this code and use MsimMessage after it is implemented and escapes strings. */ |
| 75 | * 1025: /* TODO: escape values */ |
| 76 | * 1029: /* TODO: Remove this code and use MsimMessage after it is implemented and escapes strings. */ |
| 77 | * 1376: /* TODO: generic functions to split into a GList */ |
| 78 | * 1777: /* TODO: escape values */ |
| 79 | |
| 80 | === features (24) === |
| 81 | trying different ports (5): |
| 82 | * 592: /* TODO: try other ports if in auto mode, then save |
| 83 | * 876: /* TODO: obtain IPs of network interfaces. This is not immediately |
| 84 | * 886: /* TODO: change to length of IP list */ |
| 85 | * 892: /* TODO: IP addresses of network interfaces */ |
| 86 | * 1971: /* TODO: default to automatically try different ports. Make the user be |
| 87 | |
| 88 | sent message username consistency (3): |
| 89 | * 987: * TODO: In MySpace, you login with your email address, but don't talk to other |
| 90 | * 995: * TODO: Make the sent IM's appear as from the user's username, instead of |
| 91 | * 1395: /* TODO: purple aliases, userids and usernames */ |
| 92 | |
| 93 | related to username/uid/email resolving/relationship (4): |
| 94 | * 1245: * this cache never expires so is never freed. TODO: expire and destroy |
| 95 | * 1248: * TODO: Cache what doesn't change only |
| 96 | * 1449: /* TODO: if buddies were identified on buddy list by uid, wouldn't have to lookup |
| 97 | * 1739: /* TODO: check if this user's info was cached and fresh; if so return immediately */ |
| 98 | |
| 99 | other features (12): |
| 100 | * 1036: /* TODO: notify Purple that we sent the IM. */ |
| 101 | * 1209: /* TODO: dump unknown msgs to file, so user can send them to me |
| 102 | * 1308: /* TODO: check 'fatal' and die if asked to. |
| 103 | * 1309: * TODO: do something with the error # (localization of errmsg?) */ |
| 104 | * 1400: /* TODO: sometimes (when click on it), buddy list disappears. Fix. */ |
| 105 | * 1407: * TODO: make status reflect reality |
| 106 | * 1408: * TODO: show headline */ |
| 107 | * 1499: /* TODO: fix 100% CPU after closing */ |
| 108 | * 1763: /* TODO: document cmd,dsn,lid */ |
| 109 | * 1844: // TODO: if (full), do something different |
| 110 | * 1859: OPT_PROTO_MAIL_CHECK,/* options - TODO: myspace will notify of mail */ |
| 111 | * 1862: NO_BUDDY_ICONS, /* icon_spec - TODO: eventually should add this */ |