I think there's a philosophical bent in the Clojure community toward small, composable libraries, rather than monolithic pre-built combinations - across all domains. This has come up in discussions before, mostly around the "full-stack web framework" issue, and the consensus each time seems to be we're better served by doing a mix'n'match from the available libraries.
Scala is aimed much more squarely at the enterprise world of Java, which in turn is much more inclined toward the full-stack approach. FWIW, I ported my mature, popular, convention-based MVC framework FW/1 from CFML to Clojure and even tho' it's nowhere near full-stack, in the Clojure world it's already far beyond the norm of small, composable libraries, as it "bundles" Ring and Enlive and has its own route processing. In the CFML world, FW/1 was a reaction to the large, full-stack frameworks inspired by Spring, Rails etc, and those CFML frameworks have routing, security, DI/AOP, ORM, environment control, logging, test generation and all sorts of things built in... hundreds of files, tens of thousands of lines of code, massive documentation and so on. Even FW/1 (for CFML) has routing, some DI and environment control all built in! FW/1 for Clojure has no DI nor environment control (although that probably will get added at some point). I'm somewhat allergic to ORM, favoring thin, simple data mappers instead :) Sean On Fri, Jan 11, 2013 at 10:08 AM, Paul Umbers <paul.umb...@gmail.com> wrote: > My oopsie. You're right, it is 1.2.0. I was looking at the current head of > master, which I guess is 1.2.0-SNAPSHOT. > > As long as all projects stick to semantic versioning (a lot do), that > problem is not so great. > > The other problem though is that of which libraries to choose for a > particular function. I understand the choice is pretty wide, and that's a > good thing to some extent, but it means anyone new to Clojure has to > evaluate and choose almost every library they could use - which takes time & > effort. If I want to build a web app/service with Java I know I can just go > to Spring and it will have pretty much everything I need - tested & > compatible. The choice almost becomes a no-brainer. I don't have that same > ease of use with Clojure - if someone asked me to build a web app or service > now (commercially, so I'm on the Client's clock) I would have to factor in a > significant amount of time to choose, test & evaluate frameworks. > > I guess that kind of ease-of-use comes from maturity, and Clojure is still > relatively immature compared with Java. But then Scala is roughly the same > age and they have TypeSafe which, as a full-stack, has a more certain "feel" > to it than having to cherry-pick individual Clojure libraries (albeit those > that have become de facto standards). > > Still, clients pay me to know this stuff, and that was one of the reasons > for doing the project - to learn what works, what doesn't and how to go > about it. > > > On Friday, 11 January 2013 10:12:43 UTC-7, James Reeves wrote: >> >> On Friday, January 11, 2013 4:52:05 PM UTC, Paul Umbers wrote: >>> >>> For example, the latest vesion of Compojure (1.1.3) uses Ring 1.1.5 and >>> not the latest version of Ring (1.1.6) which has significantly better util >>> functions available - but I can't use them until Compojure catches up. >> >> Ring 1.1.6 doesn't have any new functions - it's just a patch release. >> You're thinking of Ring 1.2.0-SNAPSHOT, which should be released within the >> next month, and will go into beta soon. >> >> Both Ring and Compojure use semantic versioning (http://semver.org/), so >> Ring 1.2.0 is backward compatible with Ring 1.1.0. This means that you can >> quite happily use Compojure 1.1.3 with Ring 1.2.0-SNAPSHOT if you so desire. >> >> Semantic versioning solves a lot of the problems you describe, because if >> a library depends on version 1.0, you know it will work with version 1.1, >> 1.2, and so forth. Only major versions, such as a leap from 1.5 to 2.0, have >> breaking changes. >> >> - James > > -- > 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 -- Sean A Corfield -- (904) 302-SEAN An Architect's View -- http://corfield.org/ World Singles, LLC. -- http://worldsingles.com/ "Perfection is the enemy of the good." -- Gustave Flaubert, French realist novelist (1821-1880) -- 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