Sean,

I've already done that ;)

I will publish to clojars either this weekend or the next - I just want to add some more tests...


On 31/01/2020 21:34, Sean Corfield wrote:

Dimitris,

As a follow-up to Alex’s comments: if you change your lib to extend the clojure.datafy version, I’ll almost certainly use your library 😊

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: *Friday, January 31, 2020 1:23 PM
*To: *clojure@googlegroups.com <mailto:clojure@googlegroups.com>
*Subject: *Re: Feedback on datafy/nav project

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
            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

            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

--
                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

                ---

                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.

-- 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
                ---
                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
            ---
            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
            ---
            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
    <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
    ---
    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 <mailto: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 <https://groups.google.com/d/msgid/clojure/1c378944-9c27-50d0-54d5-81f1d04411da%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
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/5e349d6a.1c69fb81.7e3ce.f725%40mx.google.com <https://groups.google.com/d/msgid/clojure/5e349d6a.1c69fb81.7e3ce.f725%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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/clojure/99702d68-7932-16a0-19a4-f64753d5db76%40gmail.com.

Reply via email to