Hi All,<div><br></div><div>In the irc meeting 2 nights ago, we discussed adding collaberation to the journal project feature.  Abhijit has spent around 3 weeks working on it.  But we can't even get a text channel between the participants.  Telepathy is painful, buggy (we have a segfault in salut) and hard to debug.  It is also unmaintained - the last commit to telepathy salut and gabble was 2 years ago.</div><div><br></div><div>So this is the pre-text for an experiment; modernising the collaboration stack without using telepathy.</div><div><br></div><div>Initially, I proposed Matrix.Org.  I don't support this idea any more, as matrix.org has some very messaging specific features, and some spots where sugar would not fit idiomatically within the api.</div><div><br></div><div>So I have been thinking a little more about splitting up the problem into 3 sections:</div><div><br></div><div>1)  A neighbourhood view implementation - a model to discover people nearby or via the school server</div><div>2)  A group messaging socket - the backbone for collaboration in activities</div><div>3)  A one-to-one file transfer mechanism - used for initial state sync in activities, "send to" feature in journal, etc</div><div><br></div><div>I have think that we can do the neighbourhood view by using 2 backends and merging the result.  We can use the Avahi api to publish/find activities/buddies on the local network.  We could additionally use a school server (running a custom sugar server app) to support buddies who are not on the same network.  Since both activities and buddies have unique identifiers, we can easily have both back-ends running at the same time, and de-duplicate the result.</div><div><br></div><div>Avahi is very fun to work with:</div><div><br></div><div>    avahi-publish-service "Sam P" "_org_sugarlabs_collab_user._tcp" 8080 "name=Sam P" "color=#fff,#000" "other_metadata=other_value"</div><div>    avahi-discover</div><div><br></div><div>All of the backends could give us an ip and a port to reach the other person.  For the avahi backend, this would be a direct connection to the other buddy.  For the schoolserver, it would be proxied through the schoolserver.</div><div><br></div><div>I'd love to hear your thoughts on the other problems, and on this problem to.</div><div><br></div><div>Thanks,</div><div>Sam</div>