Lee Spector <lspec...@hampshire.edu> writes:

> FWIW for some JVM newcomers (like me when I started) #6 involves some
> mysteries related to where exactly the jar should be saved and how
> exactly the other code can be told to find it. It varies depending on
> how you run your code (e.g. whether you have to figure out how to
> construct a -cp argument or do other non-obvious things in a complex
> IDE, etc.) and then there's the hierarchical namespace/directory
> structure correspondence, which I found initially surprising and
> confusing.
>
> Bottom line is that I agree that leiningen makes all of this simpler,
> assuming that your editor and other tools play nice with
> leiningen. I'm just pointing out that the manual method is actually a
> little worse than you've implied, for people new to JVM programming.

Oh I totally agree.  Perhaps I was being misleading there.  I was
replying to Mikal's hypothesis that if library authors used a manual
release process instead of version control and build tools everything
would be considerably simpler for library consumers who know how to feed
jars to the JVM.  It's definitely worth questioning your assumptions
from time to time and I'm glad he brought it up, it is giving me some
ideas.  I don't think it's a good solution though because the tools at
the very least give us consistency.

I don't think the maven standard is perfect.  The whole "group id" thing
in my opinion is confusing and not quite right (which is why with
Clojars I deviated from how Maven Central uses it).  But at least we
have a way that all the tools (and people) can interoperate with each
other and I'm willing to live with some warts in order to get that.

The JVM does not make things fun.  It was only in Java 6 that the
ability to use wildcards in the classpath (-cp lib/*) was added for
example, in earlier versions you had to specify every single jar file
one by one.  But that's not the fault of build tools, the tools exist
precisely because the JVM does not ship with a good solution to this
problem.

Tools with a system install model like RubyGems and ez_install seem
deceptively easier when you're a beginner.   I think they do work
well in a highly structured and well curated ecosystem (eg Debian) but
that takes serious commitment.  Unfortunately once you get past the
beginner stage and start dealing with multiple versions of libraries and
such it quickly turns into a huge headache and you end up with awful
workarounds like RVM.

I work at a shop that uses both Ruby and Java.  For our Ruby projects
after much frustration we've just resorted to chucking all the gems for
a project into the project's version control and pointing at them with
GEM_HOME.  Some of our developers try to use Bundler but I find it to be
more trouble than it's worth (particularly when deploying to JRuby).
It's amazing how much time someone can waste messing around trying to
get Bundler to behave right.

Compared to that the Leiningen model as a default is downright blissful.

Clojure/core are pushing a third model.  Get all the good stuff into
contrib.  I guess you could compare that to something like FreeBSD and
in a sense the way the Linux kernel project works.  Ultimately that
very likely will result in higher quality output and is not bad for
beginner users.  But to get that quality it necessarily means a bigger
commitment and a higher barrier to entry for authors.

http://groups.google.com/group/clojure/browse_thread/thread/c40ff3e876b4b370

I'm glad to see that core are trying to make contrib model more
accessible.  For a long time with Rich as the sole gatekeeper it was
a pretty select club.  Even now though it could be better communicated,
the references to contrib on the website are pretty vague if you don't
already know what it is.

I've been fairly heavily following Clojure for a couple of years now, I
have signed the CA and I'm still not completely sure if I'd be welcome
to contribute to contrib.  It's intimidating.  Maybe that's just
timidity on my part though.

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

Reply via email to