Does wasabi2d==1.2.0 bend/break rule no. 2 ?
wasabi2d==1.2.0
(log in to comment)
Comments
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.
- Others need to have "reasonable opportunity" to use the library. But, if the library is still very immature, or if major features are added the week before PyWeek, then others don't have "reasonable opportunity" to familiarise themselves those features, or seriously consider it in their choice of library. To take this to the logical extreme, what prevents someone from creating a very minimal game support library up on GitHub a month before the challenge, and then continuing to flesh it out right up until the moment of the challenge? Or, instead of releasing a new library, just adding new functionality to an existing library they happen to have somewhere?
- The rules use the word "release" and "release a version", whereas no actual release was cut and published, neither on GitHub nor on PyPI, or announced on this board. It can be argued that a GitHub commit hash is a "released version", but it's a bit of a stretch to me. I would apply the same standard to pygame-text (it was at least announced on this board, but no release was cut).
- The library needs to have had an actual release, preferably on PyPI—if not, it should be announced on this board.
- The game has to work on a version of the API released a month before the challenge, meaning bugs may still be fixed. This prevents relying on new features or major overhauls done after the 1-month deadline, but allows making use of fixes for bugs discovered after that deadline.
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
- The library needs to be publicly available on a versioned service such as GitHub or PyPI, at least 30 days before the competition.
- The documentation must be published 30 days before the competition, and must include an overview and API docs.
- Rely on versioning to ensure stability for users. Entrants can contribute to libraries during the competition period and use releases made as a result.
- Libraries must have an OSI-approved license in order to ensure a level playing field.
- As before, libraries may not include gameplay logic.
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.
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 [that]
Yep, rdb mentioned this on IRC. It's a great question. Consider some scenarios:
- An established, years old project starts a 2-month project to add comprehensive support for platform games, which is released on the day before of the competition, and the maintainer uses it in PyWeek.
- Someone creates a placeholder GitHub library just containing the function vec_to_polar() and its docstring. They push thousands of lines of crudely documented code for platform games on the first day of the competition.
- The maintainer of an existing library releases a bunch of new minor features during PyWeek specifically for their own PyWeek entry.
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
- Case 1 is allowed because it appears that the intention was to deliver the functionality in time for PyWeek, not to create an advantage in PyWeek
- Case 2 not allowed because it appears the intention was to get an advantage in PyWeek while complying with the library rules
- Case 3 is allowed only if the work was actually done during PyWeek. If it was then PyWeek has merely inspired or highlighted the need for features. If not then they have kept an personal codebase by way of unpublished changes. You could maybe guess which based on the repo history/timestamps, and nature and scale of the changes.
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.
tundish on 2019/10/02 18:17: