Mac installer: py2app roxors! Windows installer: Innoconda, py2exe or cxFreeze. gtk from dropline.net. Linux installer: rpmbuilder??, deb? New to-do before 0.3: - handle insane/broken UPnP gateways - firewall-seeding OPTIONS - make registration wait for NAT discovery - merge wizard and preference objects - clean up i18n, i18n textui and prefs help - finish auth cleanup - hook up lwc code - all interfaces must be current and correct - (maybe) DirectSound interface - doug: s.d.conferencing's entrance soundburst bug - phone: when on a call, decline a second incoming call? - set up a decent roundup instance, load all entries from TODO into it. - write prefs UI for an OptionDict - finish credcache - package for Windows - multiple registration support? Old to-do before 0.3: - Handle a CANCEL and withdraw any incoming-call-dialog - go through and make sure Doug is up-to-date with recent refactorings - doug: use dropCall()'s deferred to generate correct events - doug: after a connectLegs(), forward on DTMF? How? - doug: flesh out leg tests, then voiceapp tests - use OptionDict for a new 'registrations' tab - documentation, documentation, documentation - document Doug API - update website - create shtoom wiki Maybe before 0.3: - G.72x codec - doug: placeCall to a broken address doesn't give generate a correct event - let doug handle wav and au files natively. - MediaLayer: a more sophisticated playout buffer - sip: retry registration failures (e.g. for testcall) - sip: move more stuff into the Dialog class - sip/call: the state should become an object, encapsulating the current state, and the state machine. This makes it _much_ easier to handle retransmits and the like. - RTCP + NAT == RFC 3605 - A codec preference? Allow suppression of codecs, or preferred ordering? Not before 0.3: - ui(qt): finish multiple Call UI, including new tab for incoming call - doug: more detailed involvement with call establishment (e.g. for auth) - a basic preferences object - redo Qt UI from scratch to not suck - use a layout widget, for one. - rport - do the right thing with it (ie generate received & rport for it) draft-ietf-sip-nat-02.txt is the relevant I-D - Investigate http://respyre.org/pyalsa.html for the fixing of mixer settings - sip: retransmit and timeout of BYE - needs Call/Dialog refactoring - rtp: detect SSRC collisions - doug, rtp: when mixing, generate CSRCs - rtcp: finish RTCP encoding -- RR, SR, PRIV. Handle strange extended SR/RR from ciscos. - rtcp: participant database - rtcp: generate sender reports - rtcp: generate receiver reports - rtcp: generate sdes - rtcp: notice when we get an RTCP BYE - rtcp: generate a goodbye packet. should at least have an SDES and a BYE - audio(all) - if the call doesn't close cleanly, the audio isn't closed properly. - options: default some useful stuff - options: allow a sequence type. Multiple registrations, save call history. Need an 'object' type as well (e.g. for expressing "sequence of registrations") - options: email_address must die, and now, in favour of 'AOR'. Use 'username'@'registerserver'? What to use if no register server? - ui(all): keybindings for DTMF. When a call is in progress, disable the address bar - ui(tk): A better dialog to prompt for user, password information - ui(tk): window resize currently sucks. - ui(tk): A better dialog for incoming calls. - ui(qt): window resize currently sucks - ui(qt, wx, gtk): save call history - doug: create application frameworky bit (look at quotient.deployment?) - ui(all): multi-tab view for multiple calls - shtoomphone: ringing tone for incoming call? use a callwaiting type tone when busy - doug: expose the auth headers to/from the call? Future: - bug: Why does calling from the web in quotient not work? - app: break base in two - phone shares almost nothing with doug - options: find a better place to put options files on windows - tests: Way more unit tests, clean up and checkin existing ones - options, app: Handle changed prefs, re-init whatever's needed - sip, app: extract realm from auth challenges and present it - sip: app.authCred should cache and re-use auth creds. - ui(qt, tk): Timeout for incoming call dialog - ui(qt, gnome, text): A prompt for user, password information - ui(all): A way to popup an information dialog - sip: Connect up and debug shutdown hooks for removing registration and closing any open calls (dropCall needs to return a deferred) - sip: Handle call failure gracefully - alert the user - sip: lots more error handling - sip, app, ui(all): a seperate debugging log for network level events - Handle more of SIP - Lookup servers/proxies using multicast, SRV - redirects - retransmits. Needs Call/Dialog refactoring - EsounD support for Gnome, aRts for KDE? Note that aRts (and, I suspect, esd) only handle playing of audio, not the recording of audio. - Statistics display - New codec support: - DVI4? Is this the same thing as audioop implements? - iLBC? - www.ilbcfreeware.org - G723? - patented, reference implementation available - G729? - patented. - QCELP? - patented, appears to be proprietary Qualcomm evil. - Putting calls on hold, allowing multiple calls to go at once. - Alternately, ad-hoc conferencing of new inbound or outbound calls - Gnome addressbook integration. Gnome notification bar integration. - KDE addressbook integration. KDE panel integration. - Mac OS X addressbook integration. - Native Windows audio - see http://www.cs.columbia.edu/~hgs/teaching/ais/slides/windows_audio.ppt for an overview - DirectSound or DirectKS. It appears that WinMM isn't suitable. - Windows address book? Is there such a beast? Windows Messenger? - PGP integration for SIP - Crypto for RTP (via codec? what's the standard?) - Video. Capture is the tricky bit in a cross-platform way. Mac OSX already has a videocapture module. - dinsdale: doug's violent brother. VoiceXML. http://www.voicexml.org/tutorials/intro1.html - make shtoom.rtp work with mcast rtp, add a command line client