I was not implying anything about what Rich have said. While the SPI term may be used in the 'enterprise' field too much (and in an unnecessary complicated manner), I think it has perfectly valid uses in Clojure. The API tells you what a function or a macro does for you, but SPI tells you what you have to do in order to integrate with existing functionalities.
BTW I think protocol methods should be in SPI too. (Stuart's components library made IMO a bit unfortunate decision to expose 'start' and 'stop' protocol methods directly) See http://kotka.de/blog/2011/07/Separation_of_concerns.html for a related write-up. Jozef On Sunday, December 28, 2014 4:18:47 PM UTC+1, adrian...@mail.yu.edu wrote: > > You're overlooking the fact that a "service provider interface" is simply > enterprise design pattern jargon for a subset of public APIs that expose > the underlying interfaces of the library to consumers. Saying that Rich is > saying protocols should "never ever" be part of the public API is both > misleading and false. > > On Sunday, December 28, 2014 2:50:06 AM UTC-5, Jozef Wagner wrote: >> >> Protocols should never ever be part of public API. Protocols can be part >> of the SPI, if custom extensions are to be supported. Otherwise they are an >> implementation detail. See Rich's talk at 4:30 http://vimeo.com/100518968 >> >> Jozef >> >> On Sun, Dec 28, 2014 at 8:11 AM, Mikera <mike.r.an...@gmail.com> wrote: >> >>> That depends if the protocols are part of your user-facing API or not - >>> a lot of the time I find that protocols are best hidden as implementation >>> details rather than exposed to users. >>> >>> In core.matrix, for example, users never see the protocols directly: >>> only implementers of new matrix libraries need to care >>> >>> On Sunday, 28 December 2014 02:32:44 UTC+8, Ashton Kemerling wrote: >>>> >>>> Changing old protocol names should trigger a major revision change in >>>> the minimum because it breaks backwards compatibility. >>>> >>>> --Ashton >>>> >>>> Sent from my iPhone >>>> >>>> > On Dec 27, 2014, at 11:18 AM, Michael Klishin <michael....@gmail.com> >>>> wrote: >>>> > >>>> >> On 27 December 2014 at 19:10:38, Jozef Wagner (jozef....@gmail.com) >>>> wrote: >>>> >> clj-time seems to be naming protocols inconsistently. It uses >>>> >> ISomething, Something and SomethingProtocol naming. >>>> > >>>> > I suspect it is because it has 60 contributors and most users never >>>> have to >>>> > extend the protocols. >>>> > >>>> > Feel free to submit a PR that standardises all names on Something. >>>> > -- >>>> > @michaelklishin, github.com/michaelklishin >>>> > >>>> > -- >>>> > You received this message because you are subscribed to the Google >>>> > Groups "Clojure" group. >>>> > To post to this group, send email to clo...@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+u...@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+u...@googlegroups.com. >>>> > For more options, visit https://groups.google.com/d/optout. >>>> >>> >> -- 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. For more options, visit https://groups.google.com/d/optout.