Does wasabi2d==1.2.0 bend/break rule no. 2 ?
While testing/judging, I noticed 2 games in the challenge are using:
wasabi2d==1.2.0
in their respective requirements.txt
Because I've not yet heard of that engine, I went to take a look pypi.org, and to my surprise I saw there, that v1.0.0, the first release on pypi, was released exactly on 22nd of September 2019 and the required version stated above was actually released on the 29th of September. Also the documentation of wasabi2d appeared first on September 21st, when the rules state the following: "You are allowed to use existing libraries that have been available for at least one month before the challenge (and are well documented)".
This is my first PyWeek and I'm no expert on those rules or how to interpret them accurately, let alone on how PyWeek entrants usually judge such circumstances. For what it's worth, I feel like the 2nd and 3rd paragraph of rule 2 are being bent if not outright broken by using this library, first released on pypi on the first day of PyWeek 28 and the final version used, released on the very last day of PyWeek 28. And also the part of "and are well documented" don't meet the requirements. If I had found this library 1 month before the competition, I dare say, I would've not considered using it, mostly because of a lack of documentation at that point.
I'm looking forward to see what other contestants have to say to this, before I decide whether to tick that box or not...
(edit: added also missing/sparse documentation until the first day of the challenge)
(log in to comment)
Documentation was included in the GitHub README; it only moved to Read The Docs a couple of weeks ago.
Releasing on PyPI isn't a requirement. For example, Cosmologicon's pygame-text, used in many PyWeeks (including this one?), has never been released there.
But in addition, wasabi2d has been linked from the PyWeek Handbook Libraries page since a month before the competition also. (Anyone can contribute to this page by making a PR.)
So, I'm very sure no rules were broken. But the real evidence is that another entry used the library for a completely different game, and submitted some issues, which I fixed for them. Clearly this is not a personal codebase created for private advantage.
I agree we should be clear on the rules, but I would change the rules in the opposite direction. The tools and discipline of maintaining open source libraries has changed a lot since the rules were written (in 2005).
There are a lot of usable libraries on GitHub, which have never been released to PyPI. Keeping documentation in your README is ubiquitous. For example, in What The Frog, I used earcut-python, which only exists on GitHub.
Some people use git submodules for version management.
So I would suggest
I agree with all you say about PyPI, git submodules etc. There is a certain way of doing things that maximises utility to most Python users.
However, I don't think the rules can codify that. Despite the drawbacks to users, people do publish their libraries purely on GitHub. I think this is even bigger in gamedev than in other applications; gamedev is either Unity, web, or custom stacks, so people publish libraries pretty agnostically. GitHub has a life of its own, beyond the regular Python community, and PyWeek is too little to stand in the way of the these global trends. We roll with them or die.
Plus, it isn't just the Python community. PyWeek is not limited to Python - at least not exclusively. I believe the rule is that entries must be mostly in Python, ie. >50%. But that leaves up to 50% of each entry able to be written in any language - with JavaScript and C/C++ strong contenders. We cannot mandate that library code be published to PyPI if that library code includes JavaScript and pure C++ libraries.
I even think it is basically Ok for someone to find a JavaScript library on GitHub and port it to Python during the competition. Why would this not be Ok if it has met the discoverability test?
On OSI licenses the requirement arises from the "level playing field" principle. I can imagine very few proprietary licenses that guarantee this. A library might be completely free to use, but unless the license is irrevocable and open to absolutely anyone for any purpose, it is still potentially unavailable to some entrant while it is to others.
also @rdb makes a good point about the hypothetical case of someone creating and documenting a stub library and then filling in the blanks in the week leading up to PW. I think there's no reason why someone shouldn't be allowed to write or port their own library during PW, but in no way should it be allowed to do what @rdb lined out in his second post, third paragraph.
On a sidenote, I also would be interested in hearing more detail about what you mentioned in a previous post about namespace packages. If I understood you correctly, you are referring to what pep 420 lines out and found its way into Python 3.3 and newer. But this feels like going off topic and probably should be discussed in its own thread.
Yep, rdb mentioned this on IRC. It's a great question. Consider some scenarios:
In law there's the test of mens rea, ie. intention. Let's assume the key rule is Rule 2.1 You can’t have a personal “library” codebase that you use during the competition, rule 2.2 is met, and rule 2.3 is met through semver.
I feel that
Because we can infer the intention of the author from their actions, we can distinguish between these cases. The argument that if we allow new library releases we have to allow people trying to give themselves an advantage, is a slippery slope argument.