-
Ge0rG
lovetox: I'm not sure if there are situations where Gajim is using an ID generated by another entity, like e.g. Last message correction (where it's not a security problem, but to illustrate the attack channel)
-
Ge0rG
What's the official way to talk to iteam?
-
Ge0rG
I'd like to get https://www.mediawiki.org/wiki/Extension:MobileFrontend installed/enabled on our wiki
-
jonas’
join iteam muc
-
Seve
I still don't receive emails from the members list. Can somebody double check, please?
-
Seve
I'm not sure if my new email address was added.
-
Alex
Seve: which email address? i can check
-
Seve
Alex, seve@delape.net, I used to have my JID the same as my email address before in case you see that still there
-
Alex
Seve: its there, but sais `nomail, reason B`
-
Alex
looks like you have disabled it once. I can revert he checkbox
-
Alex
you also maybe alble to congigure it here yourself here: https://mail.jabber.org/mailman/admin/members/ or send commands to the list. Just let me know what you prefer
-
Seve
That's weird... Yes please do, Alex. Very appreciated!
-
Alex
resetted, I think you should be good now
-
Seve
Alex: thank you!
-
Seve
Alex, I have no password to edit it myself. I tried to see if I could ask for a new password and it says `Your subscription request has been received, and will soon be acted upon.` I wonder if that has some relation to it?
-
Alex
Seve: lets see if you get new messages to the list. If not then please contact me again and we try to figure it out. To me it looks all good now.
-
Seve
Sure, Alex. Thank you very much for your time, I will let you know :)
-
jonas’
in-band bytestreams. is there a way to close an IBB with an error?✎ -
jonas’
in-band bytestreams. is there a way to close an IBB with an error while the peer is *not* sending to you? ✏
-
Ge0rG
jonas’: remember the last incoming message id?
-
flow
jonas’, can't you always send a session-terminate (if we are talking Jingle based IBB)?
-
jonas’
flow, no, plain IBB
-
Link Mauve
jonas’, AFAIK you can’t even do that if they’re sending to you, since they could use the <message/> transport.
-
MattJ
<message type='error' id='...'>
-
Ge0rG
Speaking of which, can we get error messages stored in offline storage, because Carbons and multi client?
-
MattJ
Yes
-
Ge0rG
MattJ: In prosody 0.10?
-
MattJ
"LOL"
-
Holger
Ge0rG: You mean in MAM?
-
Ge0rG
Holger: MAM is not needed if you have per device offline storage queues
-
Holger
Hah.
-
Holger
Why proper solutions if we can have ugly hacks!
-
Ge0rG
And my evil secret plan is to defer implementing MAM in yaxim (and annoying MattJ with message loss) until he gives up and finishes client tracking
-
Ge0rG
Holger: MAM is an ugly hack.
-
Holger
How do you handle outgoing messages with offline storage? Wait whether the client enables carbons and then push them out?
-
Holger
How do you do paging?
-
jonas’
different use-cases
-
Holger
Hm?
-
jonas’
although
-
jonas’
ignore me, I want to see how this plays out
-
Ge0rG
Holger: how do you handle sync of messages between MAM and offline? Just drop all offline messages before sending presence?
-
Holger
That's what Conversations does, the alternative is de-dup, obviously.
-
Holger
Whatever that has to do with my question.
-
Holger
I think MAM becomes problematic to implement if you *don't* want full-sync. If you do, like you'd get with per-device offline storage, it's trivial. I don't get why you wouldn't just want to implement this.
-
Ge0rG
Holger: MAM is *also* a dirty hack. Is it better now?
-
Holger
Ok, so that's go for a worse hack instead.
-
Ge0rG
Holger: because it's complicated with my current code base
-
Ge0rG
Holger: MAM is the worse hack.
-
Holger
Why?
-
Ge0rG
Actually sending out Carbons from offline is a I nice idea
-
Holger
Haha.
-
Ge0rG
Holger: it's full of race conditions!
-
Holger
For example?
-
Ge0rG
You don't need paging if you do full sync.
-
Ge0rG
Holger: between querying MAM and dropping offline history
-
Zash
It's dirty hacks all the way down to the silicon
-
Ge0rG
Holger: also between completing your MAM sync and receiving first live messages
-
jonas’
Ge0rG, isn’t bind2 there to solve all those races?
-
Ge0rG
jonas’: yes
-
jonas’
purge offline, enable carbons, give you the id of the last stanza in MAM
-
Ge0rG
jonas’: also magically enable / resume SM
-
Holger
Until we have that, de-dup should be trivial using stanza-IDs.
-
Ge0rG
Holger: you mean unique ids?
-
Ge0rG
Will MAM inject ids into offline storage?
-
Holger
mam:2 guarantees that, yes.
-
daniel
Fwiw Conversations would handle the dedup just fine. But I don't like the extra traffic
-
Ge0rG
But if you just drop offline history, you'll get message loss if your MAM is "contacts only"
-
Holger
Yes, I don't know why we offer that option.
-
daniel
Yep
-
Ge0rG
And dropping before MAM sync is lossy
-
daniel
Or disabled
-
Holger
You get even more message loss if MAM is disabled.
-
Holger
Right.
-
daniel
I'd like the mam preference to be announced in disco
-
daniel
That could help circumvent that problem
-
Ge0rG
daniel: you drop offline history if MAM is disabled???
-
Holger
I'd like to see the "contacts only" option ditched.
-
daniel
Ge0rG: yes
-
Ge0rG
daniel: ...
-
Holger
> You don't need paging if you do full sync. You might need it for traffic throtting. Otherwise the server will flood you with messages and if you're not fast enough with acknowledging it, you'll exceed 0198 queue size limits and the server will kill your connection.
-
Holger
*throttling
-
Holger
I open yaxim once in a few weeks, it would become unusable if I implemented that thing.
-
jonas’
Holger, FWIW, Conversations *is* unusable when you open it only once in a few weeks.
-
Zash
and Gajim
-
jonas’
or even once a week
-
jonas’
I plan for like one hour or maybe two for it to sync when I haven’t used it for a week
-
Holger
jonas': Hm no I didn't run into that.
-
jonas’
maybe it’s just me or my device?
-
jonas’
ever since that full text search index each message takes like 0.5s to process
-
jonas’
you can do the math with a few public MAM’d MUCs.
-
Link Mauve
Zash, Gajim fixed that (for public MUCs only) in their latest release from today.
-
jonas’
it’s terrible in any case.
-
Zash
Link Mauve: By some random coincidence, I can't start Gajim anymore
-
Ge0rG
XMPP is terrible.
- Ge0rG &
-
jonas’
fg
-
Link Mauve
That may be related, you should report this bug at gajim@conference.gajim.org.
-
Link Mauve
Maybe they’ll do a 1.1.1 fixing it.
-
Zash
I think it's some Python search path thing
-
lovetox
yes the user can set a threshold now for public mucs how much gets synced
-
lovetox
and the default is 1 day, if you join 20 mucs, you still can expect around 30 seconds until everything is joined and everything is synced
-
lovetox
problem is, you absolutly have to sync everything at start with MUC
-
lovetox
otherwise you just plain accept not delivering messages to your user that he might want to read
-
lovetox
im not seeing how we can optimize that in any way
-
daniel
The problem is that 1 day is pretty random. On some days you just have one message in the last 24h on some days you have 1000
-
daniel
I'm considering - for public mucs - to just ditch the entire history instead
-
daniel
Then normal backlog scrolling works as intended
-
daniel
Instead of trying to fill gaps or what ever
-
daniel
But nothing is ideal. There is no good solution
-
lovetox
so not storing messages in public muc to db, and making it completly load on demand
-
daniel
Yes
-
lovetox
yes the only way back scrolling can work i think
-
daniel
*in public with mam
-
lovetox
but this is probably acceptable for a mobile client, but if i do this in Gajim people will scream
-
daniel
Why?
-
lovetox
they have there 200 MB "i have logs back to 1990" dbs
-
lovetox
and want to search them
-
lovetox
but yeah indeed nothing speaks against making it default not storing, and if a user wishes he can store for some mucs
-
lovetox
but then no backscrolling there
-
lovetox
maybe thats a good solution for both worlds
-
daniel
Yeah I haven't thought this all the way through yet. It's just that idea I'm having
-
daniel
Especially for mobile and like short outages you might still want to have a local history
-
daniel
But certainly not catch up with a week or so
-
lovetox
and the whole backscrolling thing can get pretty easy if client devs could depend on the server using sequential mam ids
-
lovetox
then its trivial to fill a whole
-
lovetox
i still think whatever reason that was why this was dismissed in the XEP, was not worth it at all
-
lovetox
but mam exists a long time now, maybe we should ask around, and if there is no implementation that depends on mam ids not beeing sequential (because they technically can not do it) then just ditch this, there is no need for something that limiting us, that nobody plans to use anyway
-
daniel
It's complicated on a database level
-
daniel
Either pretty expensive or impossible in clusters
-
lovetox
hm doubt it seriously :D
-
lovetox
its just that it would be probably considerable more work to make it so
-
lovetox
but then again, where are these clusters, are we writing xeps for that one provider in X years that sets up a cluster
-
lovetox
or for the 1000s who do not
-
lovetox
but i guess we had this discussion, the conclusion was, add a disco feature
-
lovetox
"sequential-ids"
-
lovetox
if i see this i offer back scrolling, if not i dont
-
Holger
Well there certainly are clustered setups in practice and I wouldn't want to tell people "sorry XMPP doesn't support this".
-
lovetox
is ejabberd not a bad example, as you offer sequential ids :D
-
Holger
lovetox: I forgot, you actually need sequential IDs or are increasing IDs (i.e. ejabberd's timestamps) good enough to solve the problem?
-
daniel
If the use case is to know the gaps you need sequential and not just increasing
-
lovetox
maybe im getting my definitions wrong, but sequential and increasing are not counterpars
-
Holger
lovetox: Yeah these days we just ignore the clustering issue because it's somewhat academic in practice. With microsecond timestamps you won't end up with non-unique IDs, or if you ever manage to, then wow you have a message loss/duplicate. This is XMPP after all.
-
daniel
And that's complicated even on an single db
-
daniel
I mean can you tell me the sql command for insert with id=max(I'd) +1?
-
Holger
Don't SQL engines have this built-in? But that'll obviously be expensive on a cluster, yes.
-
daniel
I think the bad ones do
-
Holger
lovetox: Sequential is 1,2,3,4, incrementing is 1,4,394,1039.
-
lovetox
then incrementing is enough
-
daniel
But from my understanding you try to avoid this in db design
-
daniel
lovetox: how do you find gaps then?
-
lovetox
yeah this fixes just the message ordering problem
-
lovetox
you still have to track gaps somehow
-
Zash
I started writing a thing based on linked lists once
-
Zash
So what problem can I solve by tagging each message with the id of the previous message?
-
Holger
You solve the same problems and run into the same problems as with sequential IDs, no?
-
Zash
Given a bag of unordered messages, you can shuffle them into sequences, no?
-
Holger
I guess what you do these days is DAGs, i.e. you can add a merge message that has multiple parents once the cluster notices the conflict. Leave it to clients to cope with it.
-
lovetox
the problems we are facing are two fold, 1. have a way to determine where you have a gap in your local storage and fill it efficiently by requesting from mam 2. If you start your client, display all messages in the correct order
-
lovetox
2. can be solved by just increasing IDs, or just microtimestamp
-
flow
> 1 day is pretty random
-
flow
make mam allow query the last N stanzas?
-
Zash
flow: ... <before/N>
-
lovetox
we can do this already
-
Zash
wait no, before="" max=N
-
Zash
high resolution timestamps has problems too
-
Zash
like like being unavailable from C stdlib
-
lovetox
maybe the server can solve 1. for us, what if we have a query i give 2 mam-ids, can the server tell me if there are messages in between?
-
Zash
and also having no guarantee of being strictly increasing
-
flow
lovetox, then why 1 day and not, say, 100 messages?
-
lovetox
Zash its enough if its most unlikely to produce duplicates
-
lovetox
i can live with a duplicated timestamp 1 out of a million messages
-
flow
Holger, are you talking about Matrix? :)
-
flow
but serious, this sounds appealing
-
Holger
Zash: The C standard doesn't return the current time at all, no? So you can't implement MAM with it anyway.
-
lovetox
flow it can be done, but its not the same thing, last 100 can only be done by backpaging
-
lovetox
you get the last 10
-
lovetox
then 10 before that etc
-
Holger
flow: Yeah Matrix and I think various other distributed DBs are doing it that way.
-
lovetox
while from a date, gives you all messages orderd from old to new
-
Holger
And all those DCVSes ...
-
lovetox
and this is pretty important, because i need the messages sent ordered to me
-
flow
lovetox, ahh so MAM is missing a "give me the last N messages starting with the oldest" query?
-
lovetox
i dont know if it needs it .. but yes i guess would be nice
-
flow
(I think we possibly have been there before)
-
lovetox
i more and more think, maybe we dont need this at all, internet gets faster and faster, if i join a muc i show a loading screen and count the messages with a nice UI
-
Zash
flow: I don't think MAM is missing query related things like that
-
lovetox
so the client needs 30 seconds, if you dont start it a week, so what?
-
lovetox
show me an application that does it much better
-
flow
Zash, possibly, possibly not
-
flow
lovetox, na, that's not what drives me, but I can see why one could be happy with that
-
Zash
Fetch the last chunk of messages and show them. Then do the sync thing quietly in the background.
-
flow
Zash, fetch using <before/> and max=N?
-
Zash
flow: right
-
lovetox
i could pull with before say 20 messages, but dont store them to db then sync the db in the background
-
flow
Dunno, I think you run in all kinds of oddities with current MAM
-
lovetox
but there is no "background"
-
lovetox
there is only one connection to the server
-
lovetox
and it will be slow to the user if i fetch stuff contstantly
-
lovetox
it would be nice to know what the user wants to do and priorities that
-
lovetox
but he could switch to any muc instantly and then i need the full stuff there
-
flow
lovetox, do small chunks of background sync and pause them once such "high priority" things happen?
-
lovetox
and all that seems rather complex, instead of just a loading screen
-
lovetox
:D
-
flow
or just do small chunks and see if it turns out to be a real issue
-
flow
before we are talking about potential solutions for non-issues ;)
-
lovetox
joining 20 mucs is also slow if you dont fetch MAM at all
-
Zash
It is
-
flow
hmm, dunno, my poezio joins the ~15 MUCs reasonably fast I'd say, but YMMV
-
lovetox
yeah can you give me a time on that?
-
lovetox
just so i have something to compare Gajim with
-
flow
lovetox, a few seconds I'd say, but it is really hard to tell as the UI elements are already seen even if the MUC is still in the process of joining
-
lovetox
hm other topic, nickname conflicts when joining a muc how do clients handle these
-
lovetox
gajim does a popup and the user has to choose another nick
-
lovetox
but im thinking i dont want to ask the user anymore and just join with a added "_" or something like that