was reviewing the Dino MAM code and it just pulls /everything/ from The Archive
eta
which is an interesting way of doing things
flow
eta, i'd assume most implementations do that
eta
hmm, reasonable
flow
just like mail clients sync their state of the imap server✎
pep.
Poezio doesn't, and tbh I'm not sure it will ever :/
eta
pep., does it only do MAM when you hit page-up
flow
just like mail clients sync their state with their imap server ✏
sonnyhas left
pep.
On join also
jonas’
eta, does it handle gaps though?
Zash
And that's why, the first time you start those clients, it produces one bazillion notifications
Guushas joined
sonnyhas joined
eta
Zash, yeah, that dino behaviour is very stupid
pep.
The smart thing would really just be to fetch when you open a tab, or to have something (that Inbox is.. somewhat?) that says "You have to fetch MAM here, here, here and here"
jonas’
pep., also the annoying thing
pep.
Yeah well..
eta
pep., I thought conversations did the fetch-when-you-open-the-tab thing
jonas’
no, conversations does a full sync when it comes online
jonas’
I painfully notice that every single time
eta
oh
eta
disappointing
Zash
Sync 😞
jonas’
eta, why?
jonas’
it is the right thing to do
jonas’
otherwise you’re going to miss/delay messages
eta
jonas’, I can't do things like open an old conversation and have it load scrollback
jonas’
and users don’t like that
jonas’
eta, huh?
jonas’
it has the history locally
pep.
jonas’, I don't think it's the right thing to do as I said above :x
pep.
Or let's agree there are multiple rights
jonas’
pep., so you prefer to require manual user interaction to get notifications for messages which wree sent while you were out of network coverage?
pep.
"to have something (that Inbox is.. somewhat?) that says "You have to fetch MAM here, here, here and here""
pep.
You can hint the user that there are unread messages in other tabs and that they can go look at them
eta
jonas’, it doesn't, because I installed conversations after the time that this conversation happened
lovetox
to do it per contact, is unnecessary complex, you have to reliaze that there are almost no mam messages if you start your client
jonas’
eta, ah, AFAIK it’ll try to fetch stuff when you scroll beyond the local archive
lovetox
on a normal connection you can download 1000 messages in about 3 seconds
pep.
lovetox, and fetching all the world is painfully slow and annoying for most people
lovetox
there will never be 1000 messages waiting if you start your client
jonas’
lovetox, tell that to my conversations.
jonas’
and the gazillion of MUCs
lovetox
of course MUCs are only fetched if you join the muc
eta
^
eta
the thing is, right
eta
I don't actually care about fetching the world
pep.
But you do join MUCs at startup :)
pep.
bookmarks etc.
pep.
poof 80 MUCs opened, MAM fetching, uuuuuuughhhh
eta
like you can totally do that in the background on a low-priority task or something
jonas’
pep., I am not
pep.
that
jonas’
I am in like five MUCs in C
eta
the thing which annoys me is when it makes the unread counts go to like 10000 on everything
eta
or generates notifications
eta
really, what we probably need is a XEP for read state sync
pep.
eta, agreed
jonas’
eta, agreed
pep.
Something that allows me to set the state in the past also plz
eta
it doesn't even have to be that hard
eta
an extra field in bookmarks + an extra field in roster
lovetox
there will not be many messages in MUCs
lovetox
you need a concept of a threshold
eta
lovetox, tell that to my high-velocity IRC channels
pep.
eta, so you only want to sync state in MUC? Not 1:1?
lovetox
up to you sync
lovetox
that means a public muc has a threshold of 1
eta
pep., and roster
lovetox
so you only sync one day
pep.
roster? :/
lovetox
a private muc has never many messages, so you sync everything
pep.
lovetox, that's your usage of private MUCs maybe
pep.
Not saying that I have, but I don't want to rule this out
lovetox
thats why you can change the thresold even for private mucs, if you have that one muc where 1000 messages a day are posted
pep.
If Snikket decides that their version of private MUCs will only have few messages and that's how they do MAM, then fine. But I don't want XMPP to decide that for me
lovetox
the one thing i learned is, you cant do this right without user interaction
lovetox
its impossible
eta
we need MUC categories!
lovetox
there is no magic algorythm that lets you do this in all circumstances right
eta
that way you can have a "low priority public MUCs" category
lovetox
you can simply choose the threshold per muc
pep.
eta, you don't exactly need to formalize that. Especially since they'll be different for different design guidelines
eta
true
eta
hmm, what would be the ideal primitive for read state sync though
eta
pubsub??
pep.
PEP probably
adiaholic_has joined
lovetox
and how do you store that
lovetox
on every received muc message update pep?
lovetox
and if multiple devices receive it
lovetox
all update it at the same time
Guushas left
lovetox
sounds not really nice
Zash
lovetox:
> there will never be 1000 messages waiting if you start your client
You haven't experienced infinitely persistent MAM, have you? It's super fun when your archive goes back to the beginning of MAM itself.
lovetox
does not mean you need to request it
Zash
But clients do this
Zash
And treats every message as new
lovetox
but i talked about your user archive
lovetox
not about mucs
adiaholic_has left
lovetox
mucs you need to manage per muc
Zash
So was I (personal archive)
adiaholic_has joined
lovetox
in a user archive will not wait that many messages, that you have to manage it per contact
pep.
Well, start a new Dino profile and observe
pep.
Or maybe that got better lately? I don't remember
eta
nope
lovetox
thats why i sync only 7 days at first start
lovetox
if the user wants all his history he can click a button that downloads it once
lovetox
with a progress dialog
adiaholic_has left
pep.
Yeah I'm not entirely fond of having arbitrary numbers like this. 7 days can still be empty and all of the chat happens on the 8th day or sth
lovetox
then hit the button :)
pep.
Weird UX :/
lovetox
not all, its easy to understand, and easy to implement
edhelas
Zash for the moment I never cleared MAM history on movim.eu :D
lovetox
its like whatsapp
lovetox
you set up a new device, and it will ask you if you want to sync your messages from google drive or something
Zash
I got the impression that Conversations fetches stuff per contact when you scroll up a bit
pep.
lovetox, who says whatsapp is good :p
eta
lovetox: the gajim history sync dialog is good, tbh
pep.
I haven't seen it in action, but from what I understand here, I'd rather fetch a set number of messages than a set number of days, at least
pep.
In poezio atm I try to have 2 pages of buffer at all times, so that I can display them instantly and only fetch previous to that
Guushas joined
Zash
pep. here's an inbox prototype thing that's waiting for a client to prototype something against: https://modules.prosody.im/mod_map.html
pep.
k, I might have a look at some point
pep.
Slightly similar to Inbox right?
pep.
How do you count?
Zash
How how?
pep.
What's the count you're returning? What does it mean
Zash
Number of messages
pep.
what messages
Zash
All messages
pep.
All messages in the archive? All unfetched messages? All unfetched on this device?
pep.
All unread messages? (but fetched nonetheless)
Zash
It's essentially a MAM query that doesn't return the results, only a summary
Zash
It predates the whole notion of per-payload stuff that might be what people refer to as inbox
pep.
k
pep.
So it's all of the archive?
pep.
If I wanted to use this I'd mostly use @jid and <end/> I guess..
pep.
Maybe
adiaholic_has joined
Zash
Supposed to get you everything you need to show a "recent conversations" list
eta
so on top of this we just need a "recent mentions / notifications" thing
pep.
Zash, only for 1:1?
Zash
Yes
adiaholic_has left
adiaholic_has joined
Zash
It's a MAM query that returns a summary. Not a thing that fixes MUC
pep.
:P
Zash
Best I can think for unaltered MUC (with MAM) is to join with history(maxstanzas=1), which gets you some of the same data
eta
reminds me to finish my protoXEP
eta
not that finishing the XEP will change anything though >_<
adiaholic_has left
adiaholic_has joined
adiaholic_has left
adiaholic_has joined
adiaholic_has left
adiaholic_has joined
sonnyhas left
sonnyhas joined
rionhas left
rionhas joined
sonnyhas left
sonnyhas joined
sonnyhas left
sonnyhas joined
sonnyhas left
sonnyhas joined
sonnyhas left
adiaholic_has left
adiaholic_has joined
lovetox
i wonder how many people use Gajim
lovetox
i just checked chocolatey, we dont maintain the package there, but it has 7500 downloads Oo
lovetox
and thats a nerdy package manager for windows
Guushas left
Guushas joined
pep.
Same person downloading it over and over again?
pep.
Or a single company downloading it for all their users? :P
adiaholic_has left
lovetox
hm no its 7500 since existence, the last version has 300
lovetox
thats a bit more expected
folahas joined
folahas left
ralphmhas left
ralphmhas joined
adiaholic_has joined
adiaholic_has left
sonnyhas joined
sonnyhas left
sonnyhas joined
sonnyhas left
sonnyhas joined
sonnyhas left
sonnyhas joined
sonnyhas left
sonnyhas joined
Zash
lovetox: https://qa.debian.org/popcon.php?package=gajim might be of interest as well
adiaholic_has joined
lovetox
damn
lovetox
only rank 99700
lovetox
need to improve that
sonnyhas left
Beherithas left
Link Mauve
“10:58:00 lovetox> there will never be 1000 messages waiting if you start your client”, tell that to my Dino, which I open maybe once a month, and is unresponsive for dozens of minutes while it fetches all of my pending messages.
I have a fast SSD, it’s limited by sqlite on a single thread.
lovetox
there even the first try not optimized at all, insert 23000 records into a database
lovetox
per second
Link Mauve
lovetox, https://github.com/dino/dino/issues/853
adiaholic_has joined
Ge0rG
Link Mauve: sqlite is not the bottleneck, it's just incorrectly used.
lovetox
lets agree on, the bottleneck is probably how they use sqlite
lovetox
:)
Ge0rG
so far, 99% of problems with sqlite were at layer 8. It's one of the most robust pieces of software out there.
Link Mauve
I didn’t find anything obvious last time I looked at Dino’s usage, maybe you’ll have more luck.
Link Mauve
I’m… not very good at SQLy things.
Link Mauve
Zash, lovetox, Pidgin just recently got installed more times than Empathy in Debian! https://qa.debian.org/popcon-graph.php?packages=gajim%2C+dino-im%2C+pidgin%2C+empathy&show_installed=on&want_legend=on&want_ticks=on&from_date=&to_date=&hlght_date=&date_fmt=%25Y-%25m&beenhere=1
lovetox
never used empathy, seems it was pretty popular
Link Mauve
It was preinstalled with GNOME.
Link Mauve
But I’m sure most people just ignored it and installed Skype or whatever popular thing there was back then.
lovetox
ah
Ge0rG
Link Mauve: there are four indexes and four triggers on the `message` table. But maybe it's still accessing something index-less? dunno