During the pycon sprints of 2014 Nate Gentile and I took on the task of moving the edx-platform build system away from rake and use python based one instead. When we started there had already been some work done towards this task, and chosen tool for this migration was paver. After working with paver for some time we noticed that it had significant drawbacks, including:1) No support for namespaces, making grouping of tasks cumbersome
2) Buggy: While using it we came across several trivial bugs, including improper grouping of tasks when displaying help. We submitted pull requests to fix some of these issues and are yet to hear back.
3) It seems like there has been no activity in the paver repo since at least one year.
Instead, we decided to use invoke. It claims to be fabric's successor, and takes some design elements from Rake. It provides a very concise and clean API to declare tasks and its dependencies. Even though it is not perfect, there is active development going on (the maintainer, Jeff Forcier was at the pycon and is pretty responsive both in github and irc). Also, the docs are fairly thorough and provide enough depth to understand most of the API (there are some poorly documented features, such as per-task flags help, however I'm in the process of creating a pull request to fix that). Nonetheless, I'm overall pretty happy with the tool and have started the process of migrating things over. On what follows I quickly describe the work done so far:
On Friday, April 18, 2014 11:45:06 PM UTC-5, Leo Urbina wrote:During the pycon sprints of 2014 Nate Gentile and I took on the task of moving the edx-platform build system away from rake and use python based one instead. When we started there had already been some work done towards this task, and chosen tool for this migration was paver. After working with paver for some time we noticed that it had significant drawbacks, including:1) No support for namespaces, making grouping of tasks cumbersomeIs this a problem? (Would we have been better off just staying with rake after all? - see http://martinfowler.com/articles/rake.html for some perspective)2) Buggy: While using it we came across several trivial bugs, including improper grouping of tasks when displaying help. We submitted pull requests to fix some of these issues and are yet to hear back.I would expect that, like edx, you would want to link in a decision maker in the PR, when you are ready to ask for their attention: In https://github.com/paver/paver/pull/123 you call out PR #100, where a repo owner commented - try calling him out.Side note: your PR change seems dense, and not immediately obvious what it's purpose is, or what it's doing (obfuscated) - might want to comment and motivate, or future maintenance would be hard.3) It seems like there has been no activity in the paver repo since at least one year.I see recent activity: https://github.com/paver/paver/compare/master%40%7B4months%7D...masterIn fact, when the activity is limited to removing support for Python 2.5, an api and a few doc tweaks, I see this as active _and_ stable.Instead, we decided to use invoke. It claims to be fabric's successor, and takes some design elements from Rake. It provides a very concise and clean API to declare tasks and its dependencies. Even though it is not perfect, there is active development going on (the maintainer, Jeff Forcier was at the pycon and is pretty responsive both in github and irc). Also, the docs are fairly thorough and provide enough depth to understand most of the API (there are some poorly documented features, such as per-task flags help, however I'm in the process of creating a pull request to fix that). Nonetheless, I'm overall pretty happy with the tool and have started the process of migrating things over. On what follows I quickly describe the work done so far:So - if we're opening this up even as we haven't really settled into rake => paver transition, what about a discussion (or +/- spreadsheet, or...):
- rake (why did we get off of this?)
- paver (why are we dumping this before a complete transition into it?)
- shovel (http://devblog.moz.com/2012/03/shovel-rake-for-python/)
- pynt
- invoke
Perhaps the transparent discussion in rake=>paver is what was missing (or a cataloging of motivations / reasons / +'s & -'s)...
--
Bertrand Marron
On Apr 20, 2014 5:06 PM, "Leo Urbina" <leo.a....@gmail.com> wrote:
>
> Yarko, Ned, et al,
>
> Thanks for all the feedback. During the sprints the original intent was move everything from rake to paver. After dealing with paver for a while it became clear that it was very limited in comparison with rake.
It would seem...
> Furthermore, it was buggy in some very obvious ways (currently I have a pull request to fix one of those bugs here, and I'm yet to hear any responses). Finally, it seemed like the project hasn't had any activity for the last year.
As I showed in their github repo, there has clearly been activity just within the past 3-4 months (I wish you'd stop saying it hasn't had activity in the past year, even more so after I post a link to show recent commit logs!).
To get a response, ask a maintainer to review (as you would in edx repos). For example, try adding a comment on your PR, e.g.:
"@Almad, would you please review / comment?"
>
> Yarko, when we started to entertain the idea of switching to invoke I had some reluctance as well. Being this my first attempt at contributing to Open edX, I was not part of the discussion that went into choosing paver as a suitable replacement for rake.
Indeed, I don't recall seeing a discussion on Open edX (what I am opinionated on, you could say - I want to see this happening more).
> This was something that Nate and I discussed openly during the sprints, and it is perhaps on us for not asking the people on IRC, and you as it seems you are somewhat opinionated on this issue, for advice.
The advice I would have given is likely the same I gave privately - that is, to start a transparent discussion which would invite and be open to participation & feedback.
Which you are doing now - thank you !
>
> That aside, the bottom line is that we found invoke to be much better suited for the job, it is actively maintained, and takes a lot of its design elements from rake, making the migration more transparent.
How you came to this, specifics would help for the sake of discussion & transparency.
> It is far from perfect, and it has its own quirks (I did find a couple of small annoyances, such as the inability to call tasks programmatically from within other tasks, alas, after creating a bug on github I promptly received a reply, and we are currently trying to sort it out).
>
> Finally, I just want to say that not only this is my first attempt at contributing to Open edX, but also open source as a whole. I think this is a very exciting opportunity, and I look forward to any pointers, advice and comments to help me navigate the ecosystem, and to focus my efforts in the most efficient possible way.
Thanks for your efforts, initiative. I hope you'll have lots of fun contributing in open source!
> Thanks,
>
> -Leo
Kind regards,
Yarko
Leo -
Given this support, I suggest getting a PR in sooner - it doesn't have to be ready to bee seen and commented on (and helped with).
As an external contributor, I concur with Jay Zoldak - whatever gets us there and is stable (I'll be happy to work on the two files I've now PRd for both rake & paver).
Thanks again,
Yarko
I don't think that's ironic - just contributing to keeping the system improving (OK to do that on two fronts).
I think David B. is making a good move with doc update ( https://github.com/edx/edx-platform/pull/3434 ) - although with unreviewed (but highly used) wikis, it might be (?) good to have a wiki for a doc via link in case like this.
As for confusions etc. transparency & communication will go a long way. When there is to much of everything a structure will evolve as needed.