On 2/24/07, Stephen D. [email protected] wrote:
I may have a wrong impression of Maven, but if I do, it’s not my fault:
- I don’t use Java, so I don’t need Maven.
- The OP’s description of Maven was so overblown and useless as a
description that I went to the Maven website.
- The Maven website is nothing but marketing-speak on the “about
Maven” pages. I expect to find useful information somewhere for a
project that isn’t excessively large to deal with.
Nothing on the Maven website suggested that it isn’t trying to solve
problems that simple Don’t Exist in the Ruby world, and that trying to
take a Maven approach to Ruby problems is AT BEST misguided.
I also think that the OP is approaching his project the wrong way up
front. How large is too large? Instead, ask what the minimum
functionality can be logically delivered in each piece. Don’t look at
dividing an application in to twenty parts: look at making reusable
functionality as libraries.
These aren’t things that software can help you do; you have to do them
yourself. You can then have software help you manage those libraries,
but a good source control system can deal with them.
There are some Maven functionalities that I’d like to see for Ruby (or
maybe I just don’t yet know how to do them). I’d like an easy
mechanism to have RubyGems store gems in a per-user location instead
of globally be default (I’m sure this is possible, but I just haven’t
taken the time to do it yet).
I wouldn’t ever want this by default. However, “gem help install”
points out the --install option where you can specify a gem
repository. What I don’t know is how you would tell RubyGems about
this repository in your includes, or if RubyGems supports a per-user
repository to be read before the system repository. These would be
good questions to raise on the rubygems-devel list or, better yet, to
investigate in the source and provide patches to make it happen if you
really need it.
I don’t, and I can’t see any reason to run the software that way.
Then, I want a simple way to list the
gems my project depends on and run a Rake task to install those
dependencies.
That’s actually very simple for you to add to your own Rakefile. If it
works well enough, you can suggest it as a standard rake task or offer
it to Ryan for hoe.
The purpose here is to do the equivalent of what
running mvn eclipse:eclipse does for a Java project: allow me to check
a project out, run a single command, and then be ready to start
developing. I don’t know what the typical approach here for Ruby is.
That really depends on the project. Unless things started showing up
in hoe to enable what you’re talking about, I doubt that any of my
projects would be set up to work this way, for the most part. (That
is, if you wanted to contribute to PDF::Writer, you would have to make
sure you have Transaction::Simple and color-tools[1] installed
yourself. I’m making changes to the PDF::Writer source, though, to
make it easier to run the demos from the checkout tree without getting
your already-installed version.)
Of course, I suspect that most people who would start hacking on a
project would have used the project first, so they would start by
installing a project’s gem – and get its dependencies automatically.
I’d also like to have Hoe work equally well if I’m using Rspec vs.
test/unit. On the documentation front, I’m pretty certain there are
features of the Maven site tools that I’ll miss in Ruby, but I haven’t
put in the work yet to learn how it’s done in the Ruby world to say
for sure.
I don’t use rspec and I doubt that I ever will (I can’t see any point
to it; on the projects where testing can make any meaningful
difference, I already use TDD to a T). I’ve seen nothing that suggests
that hoe won’t run well with rspec, though. Documentation-wise, I
doubt it. Documentation in Ruby is achieved primarily through rdoc.
If you want project tracking, use Trac or possibly one of the
up-and-coming Rails replacements for Trac.
And, if I’m undersanding you correctly (and I think I am based on the
marketing speak on the Maven website), it seems that Maven is a
combination of a command-line tool to help you managed projects where
you use the projects and a website to help you manage stuff similar
to Trac. This is overengineered to me. It’s trying to do entirely too
much.
It’s a very Java approach to a problem that should be much simpler,
but because Java isn’t simple, nothing that comes out of Java is
simple.
I do think that with Ruby there can be a better/cleaner version of
Maven, but I still feel that Ruby does need a Maven. 
Then build one. If people agree, they’ll use it too.
-austin
[1] Soon to be color.