When comparing Rake vs Jam, the Slant community recommends Jam for most people. In the question“What are the best open-source build systems for C/C++?” Jam is ranked 15th while Rake is ranked 19th. The most important reason people chose Jam is:
A central repository provides more guarantees about the availability of the package. With requiring directly from repository urls, the entire project could potentially be taken down on a whim.
Ranked in these QuestionsQuestion Ranking
Pros
Pro Powerful language
You can write code for your build system in Ruby. While not my choice for general programming, Ruby is powerful and expressive. Given some knowledge of Ruby, you can create powerful Rake extensions that result in your average target only needing a few lines in the rakefile in spite of having complex behaviors (Is the library for public consumption, or only for use within the current repo/tier? Compile certain files on certain platforms? Link to libraries published from other repos? etc.).
Pro Has a central package repository
A central repository provides more guarantees about the availability of the package. With requiring directly from repository urls, the entire project could potentially be taken down on a whim.
Pro Community is focused on client side javascript
Because Jam only manages Javascript and only works on the client side, you have the assurance that any packages listed are AMD compatible for asynchronous loading.
Pro Architecture independent
Jam's only a front-end package manager, the rest of your server can be on a different architecture or framework. No matter what the architecture, Jam will integrate easily with it.
Pro Provides the best AMD compatibility allowing for better asynchronous loading
Jam requires AMD (Asynchronous Module Definition), which means faster package loading, as it can be done asynchronously.
Cons
Con Slooooow
For large codebases or with complex extensions, Rake can become quite slow. I'm aware of one codebase on which it can take 15 minutes to determine that no changes have been made and no recompilation is necessary.
Con Forced AMD compatibility means fewer libraries
AMD is currently not as popular as CommonJS modules, which means if a library isn't supported, you'll have to deal with it yourself.