--
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
> - definitive, simple, integrated package managementLeiningen and Cake?
> - a better REPL experience out of the box (esp. Jline support)Slime/Emacs? I only use the REPL in very rare cases and aren't
bothered by a lack of JLine.
> - a simpler, more useful stack trace
Slime?
> - abstracting away Java concepts like excessive hierarchies for packageYou don't have to use this convention. Personally I keep things
> definitions (src/com/mycompany/wow/this/is/getting/long/my-library.clj)
shallow.
> - better discovery for existing, well-tested libraries.You can search on http://clojars.org/. This works well for me.
However, the key to well tested libraries is having people give
feedback if a library breaks or is badly documented or doesn't meet
their needs.
I come from the Ruby world, and Ruby isn't even a 2.0, so my perspective is definitely colored.
Three problems with the REPL:1. The standard way Clojure tells me to get a REPL is using the java command. This makes Clojure not feel like a first-class language.
2. Once I do get a REPL, either through the java or lein or cljr commands, it has no indentation or Jline support. It feels messy.
3. I use Vim, so Emacs/Slime isn't really something I want to do. (And I don't want to have to use a specific editor in order to use the language of my choice.)
> - better discovery for existing, well-tested libraries.
As I say, I really enjoy coding in Clojure, but the process surrounding coding is not always very polished. I see too much Java and not quite enough integration to think of it as a "2.0" yet, though I do think we can get there.
On Feb 23, 2011, at 2:58 PM, Saul Hazledine wrote:
> Below are suggestions to the shortcomings you mention. I'm genuinely
> interested in how they don't meet your needs.
>
> On Feb 23, 8:42 pm, David Jacobs <develo...@allthingsprogress.com>
> wrote:
>> - definitive, simple, integrated package management
> Leiningen and Cake?
Both seem great but neither plays nice with an editor/IDE/workflow that works well for me. Eclipse/CCW is my current favorite and while there are ways to use lein in conjunction with Eclipse projects they are seriously non-intuitive. I was initially very excited about TextMate/cake but some basic things failed to work and my posted issue on the textmate-clojure github site got no reply so I cooled on this and went back to Eclipse/CCW. I'm a long-time emacs user but the installation/configuration issues are infuriating, especially in a teaching context (which is important for me), as are some of the decades-old UI conventions.
>
>> - a better REPL experience out of the box (esp. Jline support)
> Slime/Emacs? I only use the REPL in very rare cases and aren't
> bothered by a lack of JLine.
See above. I'm looking for a non-emacs solution (or maybe I'd be happy with a fail-proof simple Aquamacs-for-clojure single-click-download+installer). I use REPLs all the time and want them to have basic features like parentheses matching, language-aware indentation, and the ability to scroll through history.
>
>> - a simpler, more useful stack trace
> Slime?
See above.
>
>> - better commandline integration
>
> https://github.com/gar3thjon3s/clargon
Not actually a concern of mine.
>
>> - abstracting away Java concepts like excessive hierarchies for package
>> definitions (src/com/mycompany/wow/this/is/getting/long/my-library.clj)
>
> You don't have to use this convention. Personally I keep things
> shallow.
Some tools force or strongly encourage such conventions (and they vary among tools). If I recall correctly NetBeans/Enclojure uses fairly deep hierarchies. Eclipse's are shallower, I think, and the default for new projects in cake is somewhere in between. I gather that keeping things completely flat is somehow impossible or bad in the Java ecosystem in general, but the variation among all of the popular tools is indeed bothersome.
>> - better discovery for existing, well-tested libraries.
>
> You can search on http://clojars.org/. This works well for me.
> However, the key to well tested libraries is having people give
> feedback if a library breaks or is badly documented or doesn't meet
> their needs.
I'm still surprised sometimes even by things that are in core or contrib that I hadn't seen previously. Clojure.org doesn't help much with this, in my experience. I've found some of the newer documentation sites (like http://clojuredocs.org/) to be quite good but again this is sort of scattered, with a bunch of things of different levels of completeness and quality and not a lot of guidance to the newcomer about where to go to get oriented. If this situation could be firmed up for core+contrib, and then expanded to other libraries, then that would be fantastic.
Just my e cents or so.
-Lee
I'm currently working on something that might help fill this space.
It's not yet complete and shouldn't be used except for testing at this
stage.
> - better discovery for existing, well-tested libraries.You can search on http://clojars.org/. This works well for me.
However, the key to well tested libraries is having people give
feedback if a library breaks or is badly documented or doesn't meet
their needs.To me, Clojars is not the most discoverable interface in the world, though I do appreciate that it exists. It doesn't have download counts or any other sort of quality indicator. What's more, some entries are domain-qualified and others aren't, and it's hard to know exactly what I'm getting when I install any package from Clojars.
Side question (also relating to the ecosystem feeling rough), what's with all the "SNAPSHOT"s on Clojars?
David
> Thanks for the suggestions. I should say that I was only giving you my impression of using Clojure re: it's version number. I'm not saying any of the things I listed are not doable, just that they feel very ad-hoc and not quite ready for a "2.0".
I agree. My gut tells me "2.0" implies promises about the ecosystem and ease-of-adoption. Clojure 2.0 would be overpromising. Better to underpromise and overdeliver, as they say.
-----
Brian Marick, Artisanal Labrador
Contract programming in Ruby and Clojure
Author of /Ring/ (forthcoming; sample: http://exampler.com/tmp/ring.pdf)
www.exampler.com, www.exampler.com/blog, www.twitter.com/marick
But "1.3" may overpromise and underdeliver backward compatibility.
How do you suggest we resolve this dilemma?
On Feb 23, 2011, at 3:06 PM, David Jacobs wrote:
> Thanks for the suggestions. I should say that I was only giving you my impression of using Clojure re: it's version number. I'm not saying any of the things I listed are not doable, just that they feel very ad-hoc and not quite ready for a "2.0".I agree. My gut tells me "2.0" implies promises about the ecosystem and ease-of-adoption. Clojure 2.0 would be overpromising. Better to underpromise and overdeliver, as they say.
Python officially has a more relaxed interpretation [5]. My understanding is that in practice the Python community was very concerned about backwards compatibility among the late 2.x releases because 3.0 was going to introduce big changes.
> Python versions are numbered A.B.C or A.B. A is the major version number – it is only incremented for really major changes in the language. B is the minor version number, incremented for less earth-shattering changes. C is the micro-level – it is incremented for each bugfix release.
The Wikipedia article on software versioning [6] covers some other concerns such as marketing. I guess that takes into account the idea that "2.0" should be a major improvement.
As I said, I personally like the concept of semantic versioning. If Rich wants to do something else, I can live with an incompatible 1.3. In any case, it would be useful for the Clojure Core team to document the Clojure version policy.
[2] http://apr.apache.org/versioning.html
[3] http://wiki.eclipse.org/index.php/Version_Numbering
[4] http://www.osgi.org/wiki/uploads/Links/SemanticVersioning.pdf
[5] http://docs.python.org/faq/general.html#how-does-the-python-version-numbering-scheme-work
I agree. One thing we should keep in mind is that if we're going to
follow semantic versioning, we should not plan *any*
backwards-incompatible changes in the near future. In other words, after
2.0, we should be done changing the language for a while, or we'll risk
bumping major versions on every release.
It seems like if the ecosystem surrounding a language is another
concern in the semantic versioning equation that can't be sufficiently
be expressed by the existing scheme, there should be a another
digit(s) or a whole other semantic version system for it (e.g. 1.2.0.0
or perhaps 0.1.0_2.0.0 for Clojure 2.0 with a basic, whatever that may
mean, ecosystem surrounding it.)
My points may also be a moot point, since it seems to make this SemVer
compatible we might have to call it SemVer 1.1.0, or 2.0 depending on
how people thought the extra digit(s) would affect the compatibility
with the SemVer spec as it stands. (Is it SemVer 1.0.0 right now?)
All this being said, I like the idea of semantic versioning and I wish
more languages/software at least attempted some sort of version number
scheme transparency. #(+ 1 %) to semantic versioning.
TL;DR Can an ecosystem be properly versioned? Can that version be
cleanly expressed by the current SemVer scheme?
I fully recognize that we could call the next iteration of Clojure "2.0"
and would be well within our rights. My point has been that calling it
2.0 may give people the impression that developing in the language is
seamless and well-polished. When they find out that it's not, Clojure
may experience some backlash.
(What's more, if Clojure wants to continue adding backwards-incompatible
features at the same rate that it is now, it would not be advisable to
bump the major version just yet.)
That said, I don't have a real problem saying the language itself is
2.0-worthy.
David
I also agree with David that 2.0 has a popular connotation of
shiny-ness that came with the whole infamous Web 2.0 branding
phenomenon.
I am now at conflict internally, because I'd like to see Clojure
widely adopted, but I like the idea of the language having the agility
to do radical things to make itself better in a way that Java no
longer posses. So 1.3 still has its advantages. Clojure always has the
choice to stay the transition to semantic versioning until Rich feels
that it's at a place that semantic versioning makes sense.
I believe I've thought myself in a circle and need some hammock time on this.
> I fully recognize that we could call the next iteration of Clojure "2.0"
> and would be well within our rights. My point has been that calling it
> 2.0 may give people the impression that developing in the language is
> seamless and well-polished. When they find out that it's not, Clojure
> may experience some backlash.
Without commenting on the validity of the above at all, I seem to recall that the application of the "1.0" version label prompted the same sort of concerns.
- Chas
> --
> 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
--
And what is good, Phaedrus,
And what is not good—
Need we ask anyone to tell us these things?
> But "1.3" may overpromise and underdeliver backward compatibility.
It depends, I suppose, on whether people who are already using Clojure 1.2 will blindly upgrade to 1.3/2.0 without having read anything that will warn them what to expect.
I like semantic versioning myself, but I think considerations are different for peripheral libraries like mine than they are for the foundational core of the whole shebang.