Features/Fixing Collab (Tubes): Difference between revisions

Created page with "= Fixing Collaboration (Tubes) = == Summary == Collaboration (hereon called collab) is build upon a framework called telepathy. Many years ago, the Telepathy Tubes (one type..."
 
Scope: Hide tubes disabling behind flag
 
Line 25: Line 25:
== Scope ==
== Scope ==


# Sugar toolkit negotiates channels for the activity. It gives them a text and tubes channel. This is where the error happens, and must be changed to only give the activity a text channel. See https://github.com/sugarlabs/sugar-toolkit-gtk3/pull/270
# Sugar toolkit negotiates channels for the activity. It gives them a text and tubes channel. This is where the error happens, and must be changed to only give the activity a text channel. However, since OLPC OS still supports tubes, this should be behind a flag.  (namely, the gsetting org.sugarlabs.collaboration.tubes-supported).  See https://github.com/sugarlabs/sugar-toolkit-gtk3/pull/282 (and the required https://github.com/sugarlabs/sugar/pull/644)
# Activities that depend on tubes now don't work. Hypothetically, they could be ported to use DBusTube and StreamTube channels. However, that is very hard and generally a massive pain, given that most activities have about 150 lines of slightly varying boilerplate tube negotiation. This can be replaced with a high level abstraction, so that the activity only deals with what data to send, rather than how to send that data. See https://github.com/sugarlabs/sugar-toolkit-gtk3/pull/272
# Activities that depend on tubes now don't work. Hypothetically, they could be ported to use DBusTube and StreamTube channels. However, that is very hard and generally a massive pain, given that most activities have about 150 lines of slightly varying boilerplate tube negotiation. This can be replaced with a high level abstraction, so that the activity only deals with what data to send, rather than how to send that data. See https://github.com/sugarlabs/sugar-toolkit-gtk3/pull/272
# However, some activities need to send large blobs to single buddies (eg. a new buddy joins read, needs a copy of the file). This is not suited to a json encoded message. However, we can use FileTransfer tubes (see the patch above). However, the shell currently claims all file transfers, so we need to have a special identifier for the shell to know to disregard these, see https://github.com/sugarlabs/sugar/pull/621
# However, some activities need to send large blobs to single buddies (eg. a new buddy joins read, needs a copy of the file). This is not suited to a json encoded message. However, we can use FileTransfer tubes (see the patch above). However, the shell currently claims all file transfers, so we need to have a special identifier for the shell to know to disregard these, see https://github.com/sugarlabs/sugar/pull/621