etawas reviewing the Dino MAM code and it just pulls /everything/ from The Archive
etawhich is an interesting way of doing things
floweta, i'd assume most implementations do that
flowjust like mail clients sync their state of the imap server
pep.Poezio doesn't, and tbh I'm not sure it will ever :/
etapep., does it only do MAM when you hit page-up
flowjust like mail clients sync their state with their imap server
pep.On join also
jonas’eta, does it handle gaps though?
ZashAnd that's why, the first time you start those clients, it produces one bazillion notifications
etaZash, 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
etapep., 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
jonas’it is the right thing to do
jonas’otherwise you’re going to miss/delay messages
etajonas’, I can't do things like open an old conversation and have it load scrollback
jonas’and users don’t like that
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
etajonas’, it doesn't, because I installed conversations after the time that this conversation happened
lovetoxto 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
lovetoxon 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
lovetoxthere will never be 1000 messages waiting if you start your client
jonas’lovetox, tell that to my conversations.
jonas’and the gazillion of MUCs
lovetoxof course MUCs are only fetched if you join the muc
etathe thing is, right
etaI don't actually care about fetching the world
pep.But you do join MUCs at startup :)
pep.poof 80 MUCs opened, MAM fetching, uuuuuuughhhh
etalike you can totally do that in the background on a low-priority task or something
jonas’pep., I am not
jonas’I am in like five MUCs in C
etathe thing which annoys me is when it makes the unread counts go to like 10000 on everything
etaor generates notifications
etareally, what we probably need is a XEP for read state sync
pep.Something that allows me to set the state in the past also plz
etait doesn't even have to be that hard
etaan extra field in bookmarks + an extra field in roster
lovetoxthere will not be many messages in MUCs
lovetoxyou need a concept of a threshold
etalovetox, tell that to my high-velocity IRC channels
pep.eta, so you only want to sync state in MUC? Not 1:1?
lovetoxup to you sync
lovetoxthat means a public muc has a threshold of 1
etapep., and roster
lovetoxso you only sync one day
lovetoxa 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
lovetoxthats 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
lovetoxthe one thing i learned is, you cant do this right without user interaction
etawe need MUC categories!
lovetoxthere is no magic algorythm that lets you do this in all circumstances right
etathat way you can have a "low priority public MUCs" category
lovetoxyou 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
etahmm, what would be the ideal primitive for read state sync though
lovetoxand how do you store that
lovetoxon every received muc message update pep?
lovetoxand if multiple devices receive it
lovetoxall update it at the same time
lovetoxsounds not really nice
> 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.
lovetoxdoes not mean you need to request it
ZashBut clients do this
ZashAnd treats every message as new
lovetoxbut i talked about your user archive
lovetoxnot about mucs
lovetoxmucs you need to manage per muc
ZashSo was I (personal archive)
lovetoxin 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
lovetoxthats why i sync only 7 days at first start
lovetoxif the user wants all his history he can click a button that downloads it once
lovetoxwith a progress dialog
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
lovetoxthen hit the button :)
pep.Weird UX :/
lovetoxnot all, its easy to understand, and easy to implement
edhelasZash for the moment I never cleared MAM history on movim.eu :D
lovetoxits like whatsapp
lovetoxyou set up a new device, and it will ask you if you want to sync your messages from google drive or something
ZashI got the impression that Conversations fetches stuff per contact when you scroll up a bit
pep.lovetox, who says whatsapp is good :p
etalovetox: 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
Zashpep. 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?
pep.What's the count you're returning? What does it mean
ZashNumber of messages
pep.All messages in the archive? All unfetched messages? All unfetched on this device?
ZashIt's essentially a MAM query that doesn't return the results, only a summary
ZashIt predates the whole notion of per-payload stuff that might be what people refer to as inbox
pep.So it's all of the archive?
pep.If I wanted to use this I'd mostly use @jid and <end/> I guess..
ZashSupposed to get you everything you need to show a "recent conversations" list
etaso on top of this we just need a "recent mentions / notifications" thing
pep.Zash, only for 1:1?
ZashIt's a MAM query that returns a summary. Not a thing that fixes MUC
ZashBest I can think for unaltered MUC (with MAM) is to join with history(maxstanzas=1), which gets you some of the same data
etareminds me to finish my protoXEP
etanot that finishing the XEP will change anything though >_<
lovetoxi wonder how many people use Gajim
lovetoxi just checked chocolatey, we dont maintain the package there, but it has 7500 downloads Oo
lovetoxand thats a nerdy package manager for windows
pep.Same person downloading it over and over again?
pep.Or a single company downloading it for all their users? :P
lovetoxhm no its 7500 since existence, the last version has 300
lovetoxthats a bit more expected
Zashlovetox: https://qa.debian.org/popcon.php?package=gajim might be of interest as well
lovetoxonly rank 99700
lovetoxneed to improve that
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.
Link MauveI have a fast SSD, it’s limited by sqlite on a single thread.
lovetoxthere even the first try not optimized at all, insert 23000 records into a database
Link Mauvelovetox, https://github.com/dino/dino/issues/853
Ge0rGLink Mauve: sqlite is not the bottleneck, it's just incorrectly used.
lovetoxlets agree on, the bottleneck is probably how they use sqlite
Ge0rGso far, 99% of problems with sqlite were at layer 8. It's one of the most robust pieces of software out there.
Link MauveI didn’t find anything obvious last time I looked at Dino’s usage, maybe you’ll have more luck.
Link MauveI’m… not very good at SQLy things.
Link MauveZash, 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
lovetoxnever used empathy, seems it was pretty popular
Link MauveIt was preinstalled with GNOME.
Link MauveBut I’m sure most people just ignored it and installed Skype or whatever popular thing there was back then.
Ge0rGLink Mauve: there are four indexes and four triggers on the `message` table. But maybe it's still accessing something index-less? dunno