Mainly web clients, installed clients usually implements threading internally to overcome problems with the original references algorithm that is often confusing. The problem with references is that it includes subject grouping, that is an old netscape model of the 90s: today, we just need references within the headers ids, or we may take a wrong message in the thread just because it has a similar subject (for example automatic mails with same subjects would be treated as a thread, which is wrong). Now, we're staring to implement threading view on our web collaboration software, running on cyrus. So we are investigating how RoundCube is doing threading on a dovecot installation, and we found it to be the same as the client algrithm of Thunderbird, which is fine. Looking at the protocol, it uses REFS first, probably because it has no subject grouping by definition, and it should have a better date sorting. Should, because I found that Dovecot does not sort it reversed... Maybe I will ask Dovecot guys why they choose to keep sort same as references: I suspect that claim to support refs, but actually the do the same references functions, but never do subject grouping. ---------------------------------------------------------------------------------------- Sonicle S.r.l. : http://www.sonicle.com Music: http://www.gabrielebulfon.com Quantum Mechanics : http://www.cdbaby.com/cd/gabrielebulfon Da: Ken Murchison A: gbul...@sonicle.com info-cyrus@lists.andrew.cmu.edu Data: 8 luglio 2016 17.17.32 CEST Oggetto: Re: thread=refs On 07/08/2016 11:08 AM, Gabriele Bulfon wrote: Ok, sure, but still two issues remain other than the draft: - we need to get rid of subject grouping in REFS, it only brings disorder, merging stuff that is not related I believe that the parameterization of the core functions should be able to handle this. - I would try to guess why dovecot does not change sorting in REFS, keeping it same as REFERENCES I would contact that Dovecot authors and find out which version of the THREAD=REFS draft they based their work on. BTW, which clients use THREAD=REFS? ---------------------------------------------------------------------------------------- Sonicle S.r.l. : http://www.sonicle.com Music: http://www.gabrielebulfon.com Quantum Mechanics : http://www.cdbaby.com/cd/gabrielebulfon Da: Ken Murchison A: gbul...@sonicle.com info-cyrus@lists.andrew.cmu.edu Data: 8 luglio 2016 16.39.17 CEST Oggetto: Re: thread=refs Is there an actual RFC? All I find is draft-ietf-morg-inthread-01. Looking at that draft, the only difference between REFS ad REFERENCES is this: THREAD=REFS sorts threads by the most recent INTERNALDATE in each thread, replacing THREAD=REFERENCES step (4). This means that when a new message arrives, its thread becomes the latest thread. (Note that while threads are sorted by arrival date, messages within a thread are sorted by sent date, just as for THREAD=REFERENCES.) This being the case, I don't think we need two copies of the threading functions. I'd modify the exiting functions to take an additional parameter to specify whether we're doing REFS or REFERENCES and then have 2 wrapper functions which call the main function with the parameter set appropriately for the given algorithm. On 07/08/2016 10:03 AM, Gabriele Bulfon wrote: Ok, it works :) but checking against dovecot implementation, it looks like they have refs order same as references, but without subject grouping. AFAIK the RFC on refs says ordering of dates within the group should be reversed. Am I wrong? ---------------------------------------------------------------------------------------- Sonicle S.r.l. : http://www.sonicle.com Music: http://www.gabrielebulfon.com Quantum Mechanics : http://www.cdbaby.com/cd/gabrielebulfon Da: Gabriele Bulfon via Info-cyrus A: Ken Murchison info-cyrus@lists.andrew.cmu.edu Data: 8 luglio 2016 15.22.56 CEST Oggetto: Re: thread=refs Testing ;) and checking against a dovecot machine with refs and same messages. Will let you know ---------------------------------------------------------------------------------------- Sonicle S.r.l. : http://www.sonicle.com Music: http://www.gabrielebulfon.com Quantum Mechanics : http://www.cdbaby.com/cd/gabrielebulfon Da: Ken Murchison A: gbul...@sonicle.com info-cyrus@lists.andrew.cmu.edu Data: 8 luglio 2016 15.02.38 CEST Oggetto: Re: thread=refs On 07/07/2016 02:03 PM, Gabriele Bulfon via Info-cyrus wrote: I can finally get back to this after so many months! I checked the sources, and I actually see it doesn't look very hard. Looks like: - renaming all functions like "index_thread_ref" into "index_thread_references" - duplicate them as "index_thread_refs" - let "references" alg call the "references" funcs - add support for "refs" in thread_algs and let them call the "refs" funcs Makes sense. then: - completely remove the call to "ref_group_subjects", we don't want it at all in refs - change the sortcrit to use the SORT_REVERSE modifier As long as you mean making these changes for just the "refs" variant and not both. what do you think? may be fine? ---------------------------------------------------------------------------------------- Sonicle S.r.l. : http://www.sonicle.com Music: http://www.gabrielebulfon.com Quantum Mechanics : http://www.cdbaby.com/cd/gabrielebulfon Da: Ken Murchison A: info-cyrus@lists.andrew.cmu.edu Data: 5 ottobre 2015 14.04.02 CEST Oggetto: Re: thread=refs As far as I can tell, the last specification for thread=refs was here: https://tools.ietf.org/html/draft-ietf-morg-inthread-01 To implement this you want to look at index.c in the Cyrus source and add another entry to the thread_algs[] array. I'm guessing that you can reuse a lot of the existing index_thread_ref() code (which is probably needs to be renamed to index_thread_references()). On 10/05/2015 06:07 AM, Gabriele Bulfon wrote: Great, Ken. Can you give me some advice / pointer to the sources I should look at? Gabriele Da: Ken Murchison A: info-cyrus@lists.andrew.cmu.edu Data: 2 ottobre 2015 19.08.04 CEST Oggetto: Re: thread=refs On 10/02/2015 10:53 AM, Gabriele Bulfon wrote: Nice, it's not a big deal for us to upgrade to new versions, surely easier than porting to Dovecot! ;) So, maybe we can help with the implementation. In my mind, it's almost about changing the "thread=reference" and let it omit the subject matching, change sorting and...maybe just this? How much hard do you think it is? That sounds about right from what I remember of THREAD=REFERENCES (which I co-authored and implemented) and THREAD=REFS (which I think was last documented in 2010). Da: Bron Gondwana A: info-cyrus@lists.andrew.cmu.edu Data: 2 ottobre 2015 12.59.08 CEST Oggetto: Re: thread=refs No, there isn't. The conversations work in 3.0 beta contains a lot of what would be required to efficiently implement THREAD=REFS, but nobody has done the work to implement it. It certainly will never be backported to the 2.4 series, which is only getting security updates and fixes for major bugs now. Regards, Bron. On Fri, Oct 2, 2015, at 18:40, Gabriele Bulfon wrote: Hi, we have systems running cyrus 2.4.12, where thread algorithms are only references and orderedsubject. Is there support for the thread=refs algorithm? Thanks Gabriele ---- Cyrus Home Page: http://www.cyrusimap.org/ List Archives/Info: http://lists.andrew.cmu.edu/pipermail/info-cyrus/ To Unsubscribe: https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus -- Bron Gondwana br...@fastmail.fm ----Cyrus Home Page: http://www.cyrusimap.org/ List Archives/Info: http://lists.andrew.cmu.edu/pipermail/info-cyrus/ To Unsubscribe: https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus -- Kenneth MurchisonPrincipal Systems Software EngineerCarnegie Mellon University ----Cyrus Home Page: http://www.cyrusimap.org/ List Archives/Info: http://lists.andrew.cmu.edu/pipermail/info-cyrus/ To Unsubscribe: https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus -- Kenneth MurchisonPrincipal Systems Software EngineerCarnegie Mellon University ----Cyrus Home Page: http://www.cyrusimap.org/ List Archives/Info: http://lists.andrew.cmu.edu/pipermail/info-cyrus/ To Unsubscribe: https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus -- Kenneth MurchisonPrincipal Systems Software EngineerCarnegie Mellon University ----Cyrus Home Page: http://www.cyrusimap.org/ List Archives/Info: http://lists.andrew.cmu.edu/pipermail/info-cyrus/ To Unsubscribe: https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus -- Kenneth MurchisonPrincipal Systems Software EngineerCarnegie Mellon University -- Kenneth MurchisonPrincipal Systems Software EngineerCarnegie Mellon University
---- Cyrus Home Page: http://www.cyrusimap.org/ List Archives/Info: http://lists.andrew.cmu.edu/pipermail/info-cyrus/ To Unsubscribe: https://lists.andrew.cmu.edu/mailman/listinfo/info-cyrus