
Shovel: Rake for Python - dmishe
https://github.com/seomoz/shovel
======
tobych
Fabric isn't mentioned once in the README. Says "We didn't like the
alternatives out there." with no details.

Having said that, it looks like the HTTP server is the USP here. Being able to
have non-techies run Fabric tasks is definitely a goal that's passed me
fleetingly in the night. So, add this to Fabric and we're good.

EDIT: The author, Dan Lecocq is near me in Seattle so, what with it being a
small world and all, I just wrote to him (in case he's not the author of this
thread) via his blog to ask him what he didn't like about Fabric, and
suggested he respond here.

~~~
sophacles
As a user of and sometimes contributor to fabric, I would like to point out
that fabric is really good, but not perfect. No software really is. There are
times I have chafed against fabric -- sometimes I would like it to be
"heavier" doing more things automatically, and there are others I would like
it to be "lighter", getting out of my way so I can just do my stuff. I will
still reach for fabric first when I need tools, but it is nice to have
alternatives available for those times I need something else.

Similarly, it frequently benefits all projects to have a few alternatives and
different implementations for the same concept. Ideas can be explored
independently and features can be borrowed back and forth. If nothing else,
and provided that shovel gets to a fuller development stage, this could be a
good thing for all.

------
kuviaq
What does this solve that fabric doesn't? Read through the docs but didn't see
any comparisons.

------
herge
It doesn't seem to do task dependency like Rake, which is unfortunate. It's
the only thing missing from fabric.

I'm half a mind to write my own with pbs (<https://github.com/amoffat/pbs>)
thrown in...

------
mattdeboard
See absolutely no overwhelming cause to invest time switching from Fabric to
this. I think everyone (including fabric maintainers) would love some
alternative solutions in this space but this seems like a lateral move.

------
obtu
We already have Paver[1] in this space. It has task dependencies, can replace
distutils, is used at Mozilla.

[1] <http://paver.github.com/paver/>

------
jamesgeck0
One thing Shovel has going for it is that it appears to "just work" for
Windows users. Compare to the setup process for Fabric:

[http://www.jonnyreeves.co.uk/2011/08/getting-python-and-
fabr...](http://www.jonnyreeves.co.uk/2011/08/getting-python-and-fabric-
installed-on-windows/)

Windows doesn't support hashbangs, so Shovel does currently need a batch file
in Python's Scripts directory, but that's not a huge deal.

------
endlessvoid94
WHY CAN'T WE JUST USE MAKEFILES

~~~
phtrivier
Cause sometimes you need your tasks to have, you know, logic and stuff ? Or am
I the only one who want to do the equivalent of a "if" in a build script from
times to times, and feel completely helpless with Make ?

~~~
endlessvoid94
[http://sunsite.ualberta.ca/Documentation/Gnu/make-3.79/html_...](http://sunsite.ualberta.ca/Documentation/Gnu/make-3.79/html_chapter/make_7.html)

~~~
phtrivier
Thanks. Did not knew about this (I should have pointed that I haven't been
using Makefiles for a while).

However :

"Conditionals control what make actually "sees" in the makefile, so they
_cannot_ be used to control shell commands at the time of execution."
(emphasis mine).

So I get that is would not solve the kind of issues I had in mind... Never
mind.

~~~
snprbob86
You're not supposed to put significant logic in a makefile. You've already got
tons of tools for real logic. A makefile is a dependency graph. If statements
are for defining slightly different graphs in slightly different environments.

If you need to add real logic, write a shell script.

A well written Makefile has a small preamble of variable definitions, followed
by a couple of named convenience .PHONY targets (without any commands),
followed by a small handful of pattern rules, followed by the dependency
graph. Each edge in the dependency graph should include as few commands as
possible, preferably just one!

------
nigma
Interesting, but at this stage the only functionality it provides is tasks
discovery and argument passing.

What I would like to see is some facility to aid with writing meaningful tasks
that execute system utilities or perform work on remote servers over ssh.

The Web API is also a nice concept, but I would prefer a control panel over
Fabric-like tool rather than a dependency that I have to install on every
target host.

------
lost-theory
Right now it seems more comparable to argparse than Rake or fabric. The server
part is neat, but a lot of my fabric tasks would probably time out in the
browser (unless this can run tasks in the background, async).

------
schettino72
it seems the whole point is simplicity

> Tasks should be easy to define -- one decorator, no options

lets see how long it lasts... at some point they will realize they need a
build-tool. Rake is a build-tool. Shovel is not.

------
reuser
Python already has tools for this. IF I were interested in my working
environment becoming more like a Ruby working environment, why wouldn't I just
use Ruby?

