The telephony application

Registered by Pat McGowan on 2013-03-01

Work items for the telephony application

Blueprint information

Pat McGowan
Bill Filler
Needs approval
Gustavo Pichorim Boiko
Series goal:
Accepted for saucy
Milestone target:
milestone icon ubuntu-13.08
Started by
Bill Filler on 2013-03-01

Related branches



This blueprint is meant to discuss topics related to the telephony application used in Ubuntu Touch.

[Background information, from Ivanka] There are a number of issues with the Telephony app that we don't have design solutions for yet. From the topics below it seems that the session will be focussed on technical issues. Please note but park UI issues so we can address them next time.

- Overview of the current architecture
    * telepathy-ofono (talks via dbus to ofono, written in python)
    * telephony-app-approver (asks for confirmation on incoming call and notifcations for sms)
    * telephony-app (main application logic)
    * telepathy-logger (logs events to xml file, for call log and messages)
    * EDS/folks/qt-folks (for contacts infrastructure)

- Missing features:
    * How to implement removing messages.
        -> limitation of telepathy-logger functionality
        -> maybe write our own backend, possibly use U1DB or sqlite
        -> question about sticking with xml for logger, potential performance issues with large xml files to load, goal would be to move away
        -> [ACTION] discuss with telepathy-logger guys about their plans
        -> issue with MMS, telepathy-logger hitting limits with that
    * Handle conference calls and multiple incoming calls.
        -> [ACTION] need design for handling this
        -> telepathy already handles multiple channels
        -> [ACTION, rsalveti] need back-end support in ofono
    * Support for multiple communication providers in the app (voip, IM, WhatsApp, etc)
        -> need design
    * Ubuntu One support (for contacts and maybe for the communication history)
        -> u1db in prototype status
    * MMS support
        -> core processing will need to be done on application side
        -> ofono does limiting routing and handling
    * Other missing call features
        -> [ACTION] investigate sim card handling, what layer does this happen - app or ofono?
        -> SIM toolkit provided by RIL or from Operator
        -> API for making a call from other apps, phone:// type of url, will need this
        -> speakerphone not yet working
        -> Audio routing, to headset or bluetooth, etc.
        -> Call forwarding?
        -> Generic settings

- Outstanding issues:
    * Because of the current architecture, when the application closes, all communication channels are closed (resetting the unread flags in messages, and losing track of calls). Possible solution: separate the telepathy channel handler in a separate daemon/process.
    * Contacts are being loaded multiple times in different processess.
        -> request query from underlyiing database rather than sorting in UI
        -> get rid of multiple layers and caches in different layers
        -> [ACTION] investigate and design system that will scale and can be reused by lens, telephony-app, etc..
        -> [ACTION] investigate U1DB vs. EDS and which to use or both
        -> We need a storage solution across the phone that is generic and can be used by all apps (like sqlite in Android), telephony-app shouldn't be a special case but rather an instance that uses the perferred storage method on the platform.

- Other topics:
    * Maybe split the application into three? (Phone, Messaging and Address book)
    * Split the QML plugin into smaller pieces (Contacts, PhoneCalls, Messages, maybe a generic Telepathy QML plugin?) (intents like android?)
    * Add support for video?


Work Items

Work items for ubuntu-13.04-month-5:
[boiko] rename packaging, desktop files and executables to phone-app: DONE
[boiko] measure and optimize memory usage (some improvements made): DONE
[boiko] call hold functioning (only missing implementation in the ofono side): DONE
[boiko] Bug fixing for update-2 milestone: DONE
[renato] Bug fixing for update-2 mileston: DONE
[renato] Evaluate the usage of u1db for contacts storage: DONE
[bfiller] Investigate and design a contact system that will scale and can be reused by lens, phone-app, external applications, etc: DONE

Work items for ubuntu-13.04-month-6:
[boiko] Discuss with telepathy-logger guys about their plans: DONE
[boiko] Investigate all the limitations telepathy-logger is imposing right now to evaluate a solution: DONE
[boiko] Split the phone-app into a separate handler process and the UI, so that when the app closes the service is still available and handling the call status, etc: DONE
[boiko] implement HUD actions: DONE
[renato] staring implementing new contacts infrastructure: DONE
[tiagosh] Investigate how to test the telepathy implementation of phone-app: TODO
[tiagosh] Implement interfaces needed by phone-app in telepathy-qt: DONE
[tiagosh] Add support in telepathy-ofono for multiple calls: DONE
[tiagosh] Port telepathy-ofono away from python-telepathy: DONE
[tiagosh] Merge telepathy-qt and ofono-qt patches upstream: DONE

Work items for ubuntu-13.05:
[tiagosh] finish telepathy-ofono rework using telepathy-qt: DONE
[boiko] dynamic rotation support: DONE
[boiko] split phone-app into three separate apps, phase 1: DONE
[boiko] i18N support: DONE
[tiagosh] usability/scalebility fixes for contacts: DONE

Work items for ubuntu-13.06:
[boiko] Write a new history saving service to replace telepathy-logger,phase 1: DONE
[renato] starting hooking up Address Book UI to new contacts infrastructure: DONE
[tiagosh] investigate MMS support in telepathy-ofono: DONE
[tiagosh] Investigate MMS support in phone-app: DONE

Work items for ubuntu-13.07:
[boiko] finish implement new history service: DONE
[boiko] move qt plugin and services to telephony-service LP project: DONE
[boiko] dialer-app - navigation model w/primary and secondary headers: DONE
[boiko] dialer-app - keypad view, make a call: DONE
[boiko] dialer-app - live call view basic: DONE
[boiko] dialer-app - contacts view basic: DONE
[tiagosh] implement stand alone messaging application, basic functionality send/receive: DONE
[tiagosh] debianize mmsd and add push it to saucy repository: DONE
[renatofilho] address-book-app: stand alone contacts application, basic list view, create and edit: DONE
[renatofilho] address-book-app: fast scroll/collapsible list view: DONE
[renatofilho] address-book-app: display favorites in main view: DONE
[renatofilho] address-book-app: saving favorite : DONE
[renatofilho] address-book-app: make call from contact details : DONE
[renatofilho] address-book-app: send text from contact details: DONE

Work items for ubuntu-13.08:
[boiko] dialer-app apply updated visuals from design: DONE
[boiko] dialer-app - contacts view make a call: DONE
[boiko] dialer-app - live call view call controls (mute, hold, speaker): DONE
[boiko] inter-app communication/api between dialer, address book and messaging: DONE
[tiagosh] messaging-app apply updated visuals from design: DONE
[tiagosh] messaging-app - conversation/thread view: DONE
[tiagosh] messaging-app - View & compose in existing thread: DONE
[tiagosh] messaging-app: compose new message with smart lookup of contacts (single recipient): DONE
[tiagosh] add class to telepathy-ofono to communicate with mmsd: DONE
[tiagosh] change handler to accept mms (implement dbus method SendMMS()): DONE
[renatofilho] address-book-app: create contact list component to share between apps: DONE
[renatofilho] address-book-app: swipe to delete single contact: DONE

Work items for ubuntu-13.09:
[boiko] dialer-app - create contact from unknown number: DONE
[boiko] dialer-app - add to existing contact from unknown number: DONE
[tiagosh] messaging-app - create contact from unknown number: DONE
[tiagosh] messaging-app - add to existing contact from unknown number: DONE
[tiagosh] messaging-app - delete a single thread: DONE
[tiagosh] messaging-app - delete a single message: DONE
[renatofilho] address-book-app: delete multiple contacts: DONE

Work items for ubuntu-13.10:
[boiko] dialer-app - keypad view smart dialing lookup contact: DONE
[tiagosh] messaging-app - delete multiple messages: DONE

Work items:
[boiko] dialer-app - UI to add contact to active call (conference call) : TODO
[boiko] dialer-app - UI for call hold/call accept (need design): TODO
[boiko] add basic support for emergency calls in phone-app: TODO
[boiko] implement UI to select which device to route audio to (speakerset, bluetooth, headset, etc): TODO
[boiko] dialer-app - conference call integration with backend: TODO
[boiko] dialer-app - autopilot tests: TODO
[tiagosh] messaging-app: add select and send MMS support: TODO
[tiagosh] messaging-app: multi-recipient send: TODO
[renatofilho] address-book-app: implement search : TODO
[renatofilho] address-book-app: test google plugin plugin via Ubuntu online accounts: TODO
[renatofilho] autopilot tests for address-book-app: TODO
[renatofilho] address-book-app: implement import/sync for Google: TODO
[tiagosh] messaging-app: autopilot tests: TODO
[tiagosh] messaging-app: add receive MMS support in messaging-app: TODO
[boiko] do more memory and startup time optimizations: TODO
Investigate and implement other phone settings (like call forwarding for example): TODO

Dependency tree

* Blueprints in grey have been implemented.