At this writing, I am intending to integrate Jitsi with DS. The below may inform what actually shakes out for production but I may also, at least initially, integrate the available call model with little or no change.Legacy Prototype
I define Ft as a conference call handling protocol similar to the one that has evolved with voice telephony since the late 19th Century. It is based on a canonical flow of the states below which will be the color of the primary button. There are manifold exceptions which the network and subscriber cooperatively manage:
- ATTENTIONOrdinary ringer state, like a backlit doorbell, request for answer/attention default state if connected, not busy or other activity. Causes UI changes in a context and device dependent manner.
- DOWN/OFFHOOK/REJECTAll subscribers start in this state and may move to it by personal selection or involuntarily due to network events.
- AFK/ASIDE/BUSYA subscriber controlled state which blocks calls until the subscriber double click toggles to READY. Single click same as ATTENTION.
- ACCEPT/ANSWER/READYA subscriber moves to this state after connecting to a call assuming no event, such as their or the network having set a different state preventing same. Blinking indicates incoming call (slow) or conference (rapid). Double click toggles to BUSY. Single click answers calls, view messages.
- BUFF/WAITA network controlled state which indicates incoming events for the subscriber. It is normal for some such events not to result in actual incoming as for example when the remote subscriber cancels a message before sending it. The button is inhibited if it is solidly this color rather than a ring on another color.
- CALL/LOOKUP/PAGEA state in which the subscriber has initiated a call, or lookup of a remote subscriber or group. Entry/exit from/to ATTENTION or BUSY by menu or gesture depending on device.Visual cues, such as blinking, frame highlighring, fade-in/out indicate attention/opportunity or operation in progress.The overall Ft GUI operates with elements such as the taskbar, main screen, and conferees array with elements in modal focus to constrain which subscriber pairs are involved and which gestures the subscriber has available. For example single click on a call state prompts for a subscriber lookup, whereas double click when paired with a selected subscriber initiates a call/page. Similary a device and state dependent gesture will determine the scope of an action, a single pair, the whole conference or a selected proper subgroup.
A distinguished subscriber in a conference call at any one time is the moderator, with overall control. A special case is the second joiner to a call after the initiator who is implicitly a co-moderator without the ability to transfer moderation (unless the user becomes moderator). Initially it is the initiator, the first caller but thereafter it may be transferred to any party to the call who will then have the following functions available:
- Join another conference creating or enlarging a global conference.
- Terminate the conference
- Stream a service to a set of conferees, all or a group.
- Mute, Call, or Disconnect any other conferee
- Make the co-moderator an ordinary conferee.
- Transfer moderation to another user. If the moderator disconnects from the call and goes OFFHOOK, without transferring moderation, the call/conference is automatically ended.
Conferences may have asides of up to four subscribers and these may survive the conference call. A global conference is a special case of a general conference with limitations, e.g. asides and subgroups are limited to local conferences and there is no moderation distinct from that of the local conferences. The moderator of the first local conference in a global one can disconnect any local conference, but otherwise each local conference has the same limited access to the global one. The network itself is not a global conference.