Ok, thanks a million Alex

On 31/01/2020 21:13, Alex Miller wrote:
Datafiable is not special, the guidelines (recently refreshed with Rich's input at https://clojure.org/reference/protocols#_guidelines_for_extension) still make sense, but are still just guidelines for your thinking not Laws whose breakage will land you in Clojure Jail.

If you want to make protocol extensions for java time objects to datafiable and put it in a lib, go for it. No one is making anyone else use it. Maybe some day we'll do that in core, maybe not.

I'm certain that copying Datafiable to your own version however would lead only to a) confusion and b) a certainty that no one else would actually use it, and that seems like a waste of time.


On Friday, January 31, 2020 at 1:24:09 PM UTC-6, Jim foo.bar wrote:

    I tend to agree with you in where the benefit is - it's just that
    the way the protocol docs are phrased, and some of the language
    used in that mailing discussion from 10 years ago (from
    authoritative sources like Rich and Stuart), implies that /no
    library is to extend clojure.core protocols to core Java objects/,
    and that only Clojure itself is allowed do that. The example
    Stuart gave back then with the english/spelling-corrector VS
    spanish/spelling-corrector is pretty telling...

    Could it perhaps be the case that `Datafiable` is somewhat special
    in that, it was conceived for the purpose of open extension by
    third parties, and that the protocol extension guidelines don't
    really apply to it (or perhaps not as strictly)?


    Thanks for taking the time :)

    Dimitris


    On 31/01/2020 01:23, Sean Corfield wrote:

    If your library is intended specifically to provide the ability
    to datafy/nav java.time objects then it is something optional
    that users can choose to opt into.

    The section you meant to link to
    https://clojure.org/reference/protocols#_guidelines_for_extension
    <https://clojure.org/reference/protocols#_guidelines_for_extension>
    says: “To minimize conflicts, consider these guidelines”

    So they’re a) guidelines and b) just given as a caution to
    minimize conflicts.

    There are libraries out there already that exist specifically to
    give users the option to extend protocols from one library (such
    as clojure.java.jdbc or next.jdbc) to Java types to provide
    customized behavior, above and beyond the “base versions for
    common targets” mentioned in that section provided by the
    original library.

    I see benefit in libraries that extend Clojure’s datafy/nav to
    new domains as a narrow purpose that users can opt into. I see
    much less benefit in providing the same protocols and function
    names that core already includes, targeted to new types, in an
    isolated way such as this. Perhaps that is because I’m already
    using datafy/nav and I find their utility is enhanced by being
    extended to other Java types?

    Yes, if multiple people write multiple libraries A, B, C that
    extend datafy/nav to java.time types and then other libraries X,
    Y, Z start pulling in those extenders, consumers of X, Y, Z can
    be in trouble.

    Sean Corfield -- (904) 302-SEAN
    An Architect's View -- http://corfield.org/

    "If you're not annoying somebody, you're not really alive."
    -- Margaret Atwood

    *From: *dimitris <mailto:jimpil1...@gmail.com>
    *Sent: *Thursday, January 30, 2020 9:58 AM
    *To: *clojure@googlegroups.com <mailto:clojure@googlegroups.com>
    *Subject: *Re: Feedback on datafy/nav project

    Well, the official Clojure guidelines are to NOT extend
    protocols, unless you own either the protocol of the type(s) [1].

    In particular these lines:

    /If you are a library developer, you should not extend if you own
    neither the protocol nor the target./

    /You should take particular care when extending protocols
    included with Clojure itself./

    Kind regards,

    Dimitris

    [1]: https://clojure.org/reference/protocols#_extend_via_metadata
    <https://clojure.org/reference/protocols#_extend_via_metadata>

    On 30/01/2020 17:50, Sean Corfield wrote:

        Is there a reason you’ve mirrored those
        protocols/implementations rather than just use Clojure’s
        built-in versions?

        As it stands, your library wouldn’t work with other tooling
        that builds on Clojure’s datafy/nav (REBL, for example).

        Sean Corfield -- (904) 302-SEAN
        An Architect's View -- http://corfield.org/

        "If you're not annoying somebody, you're not really alive."
        -- Margaret Atwood

        *From: *dimitris <mailto:jimpil1...@gmail.com>
        *Sent: *Thursday, January 30, 2020 9:05 AM
        *To: *Clojure <mailto:clojure@googlegroups.com>
        *Subject: *Feedback on datafy/nav project

        Hi folks,

        I'm looking for honest and constructive feedback on [1] - not
        so much

        about the actual implementation (even though these are
        welcome too), but

        rather about the general idea of basing everything on top of
        (mirrored

        versions) `datafy` and `nav` (in this way). There is a TL;DR
        section at

        the very bottom that describes the approach in 4 short sentences.

        Many thanks in advance,

        Dimitris

        [1]: https://github.com/jimpil/jedi-time
        <https://github.com/jimpil/jedi-time>

--
        You received this message because you are subscribed to the
        Google

        Groups "Clojure" group.

        To post to this group, send email to clojure@googlegroups.com
        <mailto:clojure@googlegroups.com>

        Note that posts from new members are moderated - please be
        patient with your first post.

        To unsubscribe from this group, send email to

        clojure+unsubscr...@googlegroups.com
        <mailto:clojure+unsubscr...@googlegroups.com>

        For more options, visit this group at

        http://groups.google.com/group/clojure?hl=en
        <http://groups.google.com/group/clojure?hl=en>

        ---

        You received this message because you are subscribed to the
        Google Groups "Clojure" group.

        To unsubscribe from this group and stop receiving emails from
        it, send an email to clojure+unsubscr...@googlegroups.com
        <mailto:clojure+unsubscr...@googlegroups.com>.

        To view this discussion on the web visit
        
https://groups.google.com/d/msgid/clojure/d0db9e09-6419-2e13-3a0b-9bacf2bbf4fd%40gmail.com
        
<https://groups.google.com/d/msgid/clojure/d0db9e09-6419-2e13-3a0b-9bacf2bbf4fd%40gmail.com>.

-- You received this message because you are subscribed to the
        Google
        Groups "Clojure" group.
        To post to this group, send email to clojure@googlegroups.com
        <mailto:clojure@googlegroups.com>
        Note that posts from new members are moderated - please be
        patient with your first post.
        To unsubscribe from this group, send email to
        clojure+unsubscr...@googlegroups.com
        <mailto:clojure+unsubscr...@googlegroups.com>
        For more options, visit this group at
        http://groups.google.com/group/clojure?hl=en
        <http://groups.google.com/group/clojure?hl=en>
        ---
        You received this message because you are subscribed to the
        Google Groups "Clojure" group.
        To unsubscribe from this group and stop receiving emails from
        it, send an email to clojure+unsubscr...@googlegroups.com
        <mailto:clojure+unsubscr...@googlegroups.com>.
        To view this discussion on the web visit
        
https://groups.google.com/d/msgid/clojure/5e331755.1c69fb81.ff1ad.21cf%40mx.google.com
        
<https://groups.google.com/d/msgid/clojure/5e331755.1c69fb81.ff1ad.21cf%40mx.google.com?utm_medium=email&utm_source=footer>.

-- You received this message because you are subscribed to the Google
    Groups "Clojure" group.
    To post to this group, send email to clojure@googlegroups.com
    <mailto:clojure@googlegroups.com>
    Note that posts from new members are moderated - please be
    patient with your first post.
    To unsubscribe from this group, send email to
    clojure+unsubscr...@googlegroups.com
    <mailto:clojure+unsubscr...@googlegroups.com>
    For more options, visit this group at
    http://groups.google.com/group/clojure?hl=en
    <http://groups.google.com/group/clojure?hl=en>
    ---
    You received this message because you are subscribed to the
    Google Groups "Clojure" group.
    To unsubscribe from this group and stop receiving emails from it,
    send an email to clojure+unsubscr...@googlegroups.com
    <mailto:clojure+unsubscr...@googlegroups.com>.
    To view this discussion on the web visit
    
https://groups.google.com/d/msgid/clojure/3caceeee-a3e9-4b74-bb86-870d3012fa5e%40gmail.com
    
<https://groups.google.com/d/msgid/clojure/3caceeee-a3e9-4b74-bb86-870d3012fa5e%40gmail.com?utm_medium=email&utm_source=footer>.

-- You received this message because you are subscribed to the Google
    Groups "Clojure" group.
    To post to this group, send email to clojure@googlegroups.com
    <mailto:clojure@googlegroups.com>
    Note that posts from new members are moderated - please be
    patient with your first post.
    To unsubscribe from this group, send email to
    clojure+unsubscr...@googlegroups.com
    <mailto:clojure+unsubscr...@googlegroups.com>
    For more options, visit this group at
    http://groups.google.com/group/clojure?hl=en
    <http://groups.google.com/group/clojure?hl=en>
    ---
    You received this message because you are subscribed to the
    Google Groups "Clojure" group.
    To unsubscribe from this group and stop receiving emails from it,
    send an email to clojure+unsubscr...@googlegroups.com
    <mailto:clojure+unsubscr...@googlegroups.com>.
    To view this discussion on the web visit
    
https://groups.google.com/d/msgid/clojure/5e33818b.1c69fb81.42724.5d42%40mx.google.com
    
<https://groups.google.com/d/msgid/clojure/5e33818b.1c69fb81.42724.5d42%40mx.google.com?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com <mailto:clojure+unsubscr...@googlegroups.com>. To view this discussion on the web visit https://groups.google.com/d/msgid/clojure/2a321799-425b-424e-afd1-b7071d38de1d%40googlegroups.com <https://groups.google.com/d/msgid/clojure/2a321799-425b-424e-afd1-b7071d38de1d%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/1c378944-9c27-50d0-54d5-81f1d04411da%40gmail.com.

Reply via email to