Sprints/2018 November Dusseldorf/Pad


 * 1) XMPP Düsseldorf Sprint


 * 1) Agenda
 * 2) Specification

✓ Easy-muc-joining (JC, Ge0rG, MattJ, pep., Purple Link)

✓ Writing the XEP for Push Notifications (jcbrand, Daniel, Ge0rG, MattJ, Purple Link)

Configure notifications preferences from a MUC

✓ Inbox XEP - sync open conversations across clients (pep., Daniel, JC, Ge0rG, Purple Link, MattJ)

✓ 0283

Referencing of messages (Using XEP-0372 to reference a message) (JC, pep.) (Deferred)

Spec a component (or SIMS?) To expose rich HTTP links to clients (Link Purple, pep.)

Finish to design the DOAP thing for clients (Link Mauve, pep.)

Independence PR for OMEMO XEP-384 (Syndace) (WIP here: https://github.com/Syndace/xeps)


 * 1) Implementation

IBR in poezio, maybe (pep.)

Work on Chatty, based on info on XEPs from Ge0rG (Haeckse)

Feedback on the IBR in Poezio / slixmpp (For Mauve Link, from pep.)

OMEMO in poezio (pep., Syndace)

Jingle in Converse (Mauve Link)

Support for XEP-0156 in Converse (jcbrand)

Easy User Onboarding - ~Ge0rG~, jcbrand, Link Mauve, pep.

add platform detection and link creation ("edit mode") to easy xmpp invitation

joining MUCs with converse

independent (web-enabled) MUC domain also has a corresponding XMPP domain or web chat

a MUC also has other venues (web, IRC…)


 * 1) Documentation

Add / Update documentation on how to set up a webchat support room

update client and server how-to documentation for homebrewserver.club - r

-> ✓ modern & easy config for prosody 0.11

-> config for converse & prosody 0.11

-> Spanish translation - rtq3

Improving python-omemo (doc, tests) (DEFERRED)

✓ thinking about the future of OMEMO

Change parameters in the crypto-protocols

Change the wireformat from protobuf to XML

Don't spread the bundles across multiple nodes but use one single PEP node

Use OX to get experience about full-stanza-encryption and add that to OMEMO later


 * 1) Misc

✓ Find a hotel (For Purple Link, from all the others)

Release Prosody 0.11 (MattJ)

✓ Send email to CCC for XMPP assembly (pep.)

Create official Docker container for Converse / Prosody (and for other servers if anyone is interested)

Split python-omemo packages in AUR into dev / released versions. (pep.)

✓ Send an email to SCAM for CCC stuff

Check CORS headers in compliance tester (iNPUTmice)

Register push app server for MUC (iNPUTmice)


 * 1) Day 1
 * 2) Open chats XEP

Private PEP node containing list of JIDs that represent open chats

One-on-one chats (bare JID) and MUC PMs (full JIDs)

Everything in multiple items (but need to fix PEP so that we can get deletion notifications)

MUC bookmarks with auto-join are merged into this list for the UI, but not stored in it (clients may/should offer a way to ignore the auto-join flag)

on incoming messages, the server adds a new "chat", publishes PEP update before sending out the message

a client opening a chat tab publishes the new JID before sending out the message

node name: urn:xmpp:open-chats:0

    


 * 1) MUC push notifications

Client registers push app server against a MUC service

The MUC services keeps track of nodes/tokens and app servers

Node needs to be associated to bare JID of the user

If the server gets an error from the push app server, it can unregister the JID

Push notifications XEP needs to be updated so that you can send the entire stanza (not just body)

For each message in MUC

the MUC service looks up all registered push app servers for users not online and sends out push notifications to them

The push app server is responsible for deciding whether to send a push message or not

Business rules:

Might be a good idea to let the user register their nick with the MUC https://xmpp.org/extensions/xep-0045.html#register

That way, the user can be mentioned in order to trigger a push notification (e.g. email) for them.

room creates a map of bare-jid -> [app.server,node-id] on every join client re-registers themselves, communicating the app.server,node-id tuple; therefor room knows which app.sever-node-id tuples are currently joined on every incoming message room iterates over list of app.server,node-id tubples and sends a push to every tuple that is not joined an error-bounce will mark a tuple as not-joined



The XEP probably needs a full rewrite but that's fine since nobody was using it anyways..

On old account:

- Create PEP node with publish_options whitelist of current roster JIDs, including JID of the new account

* "whitelist" and not "roster" access model is needed so that read access is still granted once unsubscribed

- Send unsubscribe request with item to each contact

On new account: - Send subscription request with item to each contact

On receiving server - if supported: - Advertise feature support, so that receiving client knows it can _not_ do the action below - Create private PEP node with all items ever received so clients can add a note in the UI

* roster annotation might have been better but support non-existent?

* allows clients that won't get the subscription presence (but only roster push) to know it was coming from the request

On receiving client - fallback if no server support: - Advertise feature support? - First client receiving the subscription presence accepts it and creates private PEP node/appends item

Security concerns: - Compromised account was mentioned, in which case an attacker could automatically move all contacts to a new account, Do we want to worry about this, (I don't think so. pep.) - Servers could "disable" it for familly setups for example where it is unlikely an account would be moved.


 * 1) Compliance Tester

- Make 156 required once converse supports it. - Add check for CORS support for file upload

- wrote compliance tester test for 'bookmark conversion' and 'vcard avatars on muc', both wont be published for now because they are not wide spread enough - tried to fix a bug in Conversations that only happens randomly on Android 9 - various discussions
 * 1) Who slacked off most - summary
 * 2) Daniel


 * 1) MattJ

- Prosody release tasks (blog, release notes, builds) - CORS in mod_http_upload - Documentation and default config improvements


 * 1) pep.

- Participated in Inbox discussions, - Registered assembly at CCC - Brought back slixmpp omemo plugin to life; Currently instanciating an omemo object properly


 * 1) Link Mauve

- Implementing Jingle in converse * lots of bugs * porting strophe plugin to jquery to not jquery

- Figuring out exceptions in converse with JC

- Playing with jingle.js in FF - Tried deploying jsxc; not there yet

- Helped pep/syndace with slixmpp plugin interface


 * 1) Roel

One of the initiators to homeserverclub

- Editing the article for homeserverclub to make sane defaults for prosody; struggling with stuff on the prosody docuemntation that id not reflect reality; poking MattJ - Now have a working config - Poked people to see what modules they have


 * 1) Syndace

- Browsed through the PRs for OMEMO in xeps; found request from the original author including all relevant changes but it got closed for inactivity -> On Sunday, extend the PR to include usage of single pep items -> Talk to Andy Straub about it

- Helped pep. with omemo impl. in slixmpp/poezio


 * 1) JC

- Easy XMPP onboarding discussion with Ge0rG

- 0156; fixing failing tests


 * 1) Day 2


 * 1) Easy MUC joining

Requirements

As a user sending an easy-invite landing page, I’m presented with a “share this MUC” button (or a link) that generates an invite page link.

As an invitee opening up an easy-invite landing page, I'm presented with a button (or a link) that takes me to a webchat to join in.

Technical details:

https://xmpp.org/extensions/xep-0045.html#registrar-formtype-roominfo





Implementation notes: A client may want to offer users the ability to share an invite URL. The disco field 'muc#roominfo_inviteurl' can be used to specify a link to a user-friendly invite page. The 'muc#roominfo_alternativeuris' field can be used to provide alternative avenues through which the MUC can be joined, e.g., webchat, or other bridged protocols.


 * 1) Slacking status
 * 2) JC

- Easy-muc-joining discussion - XEP 156 support in converse: - preparatory work - fixing tests - rebasing Link Mauve's PR - needs testing - Rendering https images


 * 1) Andy

- Discussions about OMEMO XEP (ODR, twomemo)


 * 1) Syndace

- Progress on the 384 PR - Discussed about further changes that need to be made to the PR - Slixmpp omemo plugin; found missing features


 * 1) pep.

- Easy-muc-joining discussions; asked feedback to Ge0rg (bad idea); needs some reworking - Slixmpp/omemo still WIP but getting there; decryption working! - Started fr translation for prosody


 * 1) iNPUTmice

- Issues with Android 9 - Bug fixing on Conversations - Compliance tester test for CORS headers; not pushed yet, missing help file - Participated in OMEMO discussions


 * 1) Link Mauve

- Easy-muc-joining discussions - Working on jingle impl for converse

* Realized that he was using an old version of the jingle lib, a new one is available but has never been published

- Helped test CORS header - FR translation for prosody release


 * 1) MattJ

- 90% of prosody release

* Poked packagers

* Blog post being translated in multiple languages (es, nl, fr)

- Added CORS header to the http_upload plugin - Helped review config file for homebrewserver.club