I don't think much has changed in the threading code for a while. I would expect that the patch would apply pretty cleanly to 2.4.x.

On 07/19/2016 02:58 AM, Gabriele Bulfon wrote:
Wow! This is really interesting!
What minimum version of cyrus sources can I use for these changes?
At the moment I'm running servers with 2.4.12, on our illumos based distro XStreamOS.

----------------------------------------------------------------------------------------
*Sonicle S.r.l. *: http://www.sonicle.com <http://www.sonicle.com/>
*Music: *http://www.gabrielebulfon.com <http://www.gabrielebulfon.com/>
*Quantum Mechanics : *http://www.cdbaby.com/cd/gabrielebulfon

------------------------------------------------------------------------


*Da:* Ken Murchison <mu...@andrew.cmu.edu>
*A:* gbul...@sonicle.com info-cyrus@lists.andrew.cmu.edu
*Data:* 14 luglio 2016 17.14.18 CEST
*Oggetto:* Re: thread=refs


    I went ahead and committed an implementation of THREAD-REFS:
    
https://github.com/cyrusimap/cyrus-imapd/commit/16747e608f32f9dd9348988d3f83cb8f1b037ff6

    Per the draft, grouping by subject is skipped and threads
    (toplevel messages) are sorted by INTERNALDATE, while the messages
    within the threads are still sorted by SENTDATE.

    I confirmed that THREAD=REFERENCES is still correct, but I have
    nothing to compare THREAD=REFS results to. The current threading
    in Thunderbird is close, but it might be using INTERNALDATE
    throughout.


    On 07/12/2016 04:44 PM, Ken Murchison via Info-cyrus wrote:
    Gabriele,

    The attached patch is what I was thinking in terms of
    implementation. It skips the grouping by subject for REFS, but I
    didn't do the REFS-specific date handling. Contrary to what the
    THREAD=REFS draft says, I'm not sure if the special date handling
    should be done in step 4 or 6. I would have to did deeper into
    the code to see where is belongs.


    On 07/08/2016 11:36 AM, Gabriele Bulfon via Info-cyrus wrote:
    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 <mu...@andrew.cmu.edu>
    *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 <mu...@andrew.cmu.edu>
        *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
            <info-cyrus@lists.andrew.cmu.edu>
            *A:* Ken Murchison <mu...@andrew.cmu.edu>
            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
                <http://www.sonicle.com/>
                *Music: *http://www.gabrielebulfon.com
                *Quantum Mechanics :
                *http://www.cdbaby.com/cd/gabrielebulfon

                
------------------------------------------------------------------------


                *Da:* Ken Murchison <mu...@andrew.cmu.edu>
                *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 <mu...@andrew.cmu.edu>
                    *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 <mu...@andrew.cmu.edu>
                        *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 <br...@fastmail.fm>
                            *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 Murchison
                            Principal Systems Software Engineer
                            Carnegie 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 Murchison
                        Principal Systems Software Engineer
                        Carnegie 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 Murchison
                    Principal Systems Software Engineer
                    Carnegie 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 Murchison
            Principal Systems Software Engineer
            Carnegie Mellon University


-- Kenneth Murchison
        Principal Systems Software Engineer
        Carnegie 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 Murchison
    Principal Systems Software Engineer
    Carnegie 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 Murchison
    Principal Systems Software Engineer
    Carnegie Mellon University


--
Kenneth Murchison
Principal Systems Software Engineer
Carnegie 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

Reply via email to