> As I view and use Paver, it's kind of "console endpoint" for my apps
> - I want to invoke every functionality I can through paver. For my
> company, I maintain our "internal standard library" of specific paver
> tasks (they are
> at https://github.com/ella/citools/blob/master/citools/pavement.py
> [1] ).
> <snip>
Thanks, Almad for taking over the project. I know that volunteering
for an effort like this is no small commitment, and I appreciate your
time. We use Paver to manage build tasks for our applications --
especially tasks like building RPMs. Typically those sort of tasks
involve lots of copying of files, potentially parsing files and
replacing values in them (e.g. putting a version number into our spec
files), and then running external commands to build RPMs or run other
build scripts (e.g. Ant). Our needs may be different from the way that
most people are using Paver, but from our perspective I think we'd like
to see:
(1) More/better filesystem utilities. Things like <FileSet> or
<FilterChain> in Ant would be really powerful concepts for us in Paver.
(We also use Ant for some builds and find this to be an invaluable way
of creating reusable pieces of a build script.) Specifically, we often
need to work with collections of files (copying/parsing/etc.). A
pythonic implementation of these ideas seems tractable; if we are able
to devote time to implementing this, we'll contribute it back.
(2) Less built-in magic. E.g. the setuptools wrapping is not useful
for us (we would rather have a separate setup.py for
setuptools/distribute); we have had specific bugs with that
"transparent" wrapping that Paver does such that we don't feel safe
relying on it to be a 100% identical implementation. (Unfortunately, I
don't remember the specifics.) And it wasn't that beneficial for us in
the first place.
(3) Better commandline options/argument support. I'm just thinking
out loud, but allowing dependency tasks to also have commandline
options/args that are parsed would be really helpful. E.g. it'd be nice
to have a "setup" dependency task that takes a "--clean" option, so I
could just call paver make --clean and have that passed through to dep
task. Hope that makes sense. I think also just better
optparse/argparse support would be nice for tasks.
Obviously, these are just general thoughts and I realize that since I'm
not really volunteering time to help implement these that it's unlikely
for these to get implemented. It might be useful for discussion,
though, about the future of the project.
Thanks again for your time & involvement in this open-source project.
Hans
(3) Better commandline options/argument support. I'm just thinking out loud, but allowing dependency tasks to also have commandline options/args that are parsed would be really helpful. E.g. it'd be nice to have a "setup" dependency task that takes a "--clean" option, so I could just call paver make --clean and have that passed through to dep task. Hope that makes sense. I think also just better optparse/argparse support would be nice for tasks.
Very good ideas, I'd like to add (also in reference to the "external
task library") that some plugin support (via setuptools entry points,
like Paste does it) would be great, since then a simple easy_install /
pip would suffice to add an egg containing external tasks and
commands.
Towards project management, I see two things as essential:
* clear documentation on how to provide such external tasks or
contribute to the core, to keep the entry barrier low (i.e. describe
to people the needed git use-cases, including full commands). Too bad
we don't have a really standard DVCS in open source circles... Anyway,
making contribution easy will prevent Almad from being burdened with
all the work alone.
On top of that, if the code sits on a git server is possible to use hg
as a client
http://hg-git.github.com/
HIH,
Michele.
Those are good points. Additionally, I consider entry_point a bit like playing
with fire, as every installed package modifies behavior of whole system, which
can be quite awful.
(I recall some sphinx bug where Django, sphinx and PIL can interact in a funky
way just by being installed.)
However, it's up to plugin's authors. Perhaps we could just think about some
syntactic suger / standard way to declare plugins usage, something like
@using(['paver.debian', 'paver.rpm']), and decalre in docs some "standard
way".
> > Towards project management, I see two things as essential:
> > * clear documentation on how to provide such external tasks or
> > contribute to the core, to keep the entry barrier low (i.e. describe
> > to people the needed git use-cases, including full commands). Too bad
> > we don't have a really standard DVCS in open source circles... Anyway,
> > making contribution easy will prevent Almad from being burdened with
> > all the work alone.
Good point, writing on my list.
> While hg is still big in Python circles, I think that git has largely won,
> mostly due to GitHub. GitHub's pull requests are quite nice.
Yes. I regret it, as I think hg is much more accessible to new users, as well
as non-programmers (coders etc.)...but working with github is much smoother.
Also, handling the remotes is kinda smoother with git, which is important, as
pushing around on lot of places is much more usual.
> Kevin
Almad
On Tuesday 16 of November 2010 18:22:14 Hans Lellelid wrote:
> We use Paver to manage build tasks for our applications --
> especially tasks like building RPMs. Typically those sort of tasks
> involve lots of copying of files, potentially parsing files and
> replacing values in them (e.g. putting a version number into our spec
> files), and then running external commands to build RPMs or run other
> build scripts (e.g. Ant).
Would it be possible to provide rpm-build scripts? We're doing something
similar with debian, althrough we are planning to switch to stdeb.
I think having easy and standard way to do versioning and builds for common
systems (that would probably be mainly be .deb and .rpm, as .exe is well-
covered with distutils...perhaps some template generation for source-based
distros, putting together ebuild/PKGBUILDs should be easy) would be nice for
package authos.
> Our needs may be different from the way that
> most people are using Paver, but from our perspective I think we'd like
> to see:
>
> (1) More/better filesystem utilities. Things like <FileSet> or
> <FilterChain> in Ant would be really powerful concepts for us in Paver.
> (We also use Ant for some builds and find this to be an invaluable way
> of creating reusable pieces of a build script.) Specifically, we often
> need to work with collections of files (copying/parsing/etc.). A
> pythonic implementation of these ideas seems tractable; if we are able
> to devote time to implementing this, we'll contribute it back.
That would be awesome. I admit I don't know ant features much, during my brief
Java time I was just using it through some IDE generators.
> (2) Less built-in magic. E.g. the setuptools wrapping is not useful
> for us (we would rather have a separate setup.py for
> setuptools/distribute); we have had specific bugs with that
> "transparent" wrapping that Paver does such that we don't feel safe
> relying on it to be a 100% identical implementation. (Unfortunately, I
> don't remember the specifics.) And it wasn't that beneficial for us in
> the first place.
I think this is major architecture decision. I will dig deeper in how hard it
would be to make wrapping optional, but I do believe that providing setuptools
"default" significantly lowers entry barrier.
> (3) Better commandline options/argument support. I'm just thinking
> out loud, but allowing dependency tasks to also have commandline
> options/args that are parsed would be really helpful. E.g. it'd be nice
> to have a "setup" dependency task that takes a "--clean" option, so I
> could just call paver make --clean and have that passed through to dep
> task. Hope that makes sense. I think also just better
> optparse/argparse support would be nice for tasks.
Definitely. I personally woud like to see conditional post-dependencies
implemented, so doing some argparse on the way might make sense.
> Obviously, these are just general thoughts and I realize that since I'm
> not really volunteering time to help implement these that it's unlikely
> for these to get implemented. It might be useful for discussion,
> though, about the future of the project.
> Thanks again for your time & involvement in this open-source project.
Thanks for them.
I have not done anything yet, so save Your thanks until later ;) Paver is a
side project for me too, but I am willing to do the housekeeping work and help
it shape.
As for plans, I am used to use Trac roadmaps and github support for those kind
of things is...strange. But perhaps I'll try to fill ideas on wiki there and
create few tickets and see if it will be bearable in the long run.
> Hans
Thanks for Your feedback,
Almad