Hi Mark, I think this approach totally makes sense, and the alpha naming exists to inform this kind of decision-making.
For libraries where the use of spec does not have to be user-facing, I am putting specs in separate (Clojure) namespaces, and loading them in such a way that they can coexist with non (or maybe different) spec environments. But that is extra work for sure. Stu On Mon, Oct 2, 2017 at 3:35 PM, Mark Engelberg <mark.engelb...@gmail.com> wrote: > On Mon, Oct 2, 2017 at 7:55 AM, Stuart Halloway <stuart.hallo...@gmail.com > > wrote: > >> Hi David, >> >> Spec will be in alpha for a while. That is part of the point of it being >> a separate library. Can you say more about what problems this is causing? >> >> Stu >> >> > As a library maintainer, I am forced to upgrade and release my library any > time something I depend upon makes a breaking change. I don't get paid for > maintaining open source libraries, it's something I do in my spare time, so > I prefer to do it on my own schedule. When an underlying library makes a > breaking change, I get dozens of urgent requests from people who need me to > cut a new release ASAP, and by Murphy's Law, that often happens when I have > very little time to do it. It's a nuisance. > > Clojure is pretty good about not making breaking changes, but it happens > from time to time. Clojurescript is less good about not making breaking > changes, and therefore, maintaining Clojurescript libraries is more of a > headache. On the plus side, Clojurescript users seem to care very little > about backwards compatibility (most keep up with the latest version), so > sometimes it is easier to make a change to keep up with a change in > Clojurescript than one in Clojure, where I am expected to not only support > the latest breaking change, but also the last several releases. > > Anything that is labeled as "alpha" is waving a big red flag that there > could be breaking changes at any time with little warning. For my > libraries which depend on spec, there's no way I'm going to bring them out > of alpha status until spec comes out of alpha status. If I make an > official release of something that depends on spec, then I'm going to be on > the hook to rapidly cut a new release every time spec changes, which could > be at any time. I don't want that hassle. I don't want to make a promise > to the community to maintain a stable product if the thing I depend upon > has not made a similar promise. When spec reaches a point where the API > will not be changing, or rather, when we know that new changes will only be > additive, I can begin to trust that it won't be a huge maintenance headache > to release something based on spec. > > -- > 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. > -- 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.