Skip to content

Commit 413b995

Browse files
committed
Update contributing.md to elaborate on project scope and standards
1 parent 1c7ed6b commit 413b995

File tree

1 file changed

+36
-10
lines changed

1 file changed

+36
-10
lines changed

CONTRIBUTING.md

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,24 @@
11
# Contributing to PySol FC
22

3-
You want to contribute? That's great! Welcome aboard. First of all see [these links](https://github.com/shlomif/Freenode-programming-channel-FAQ/blob/master/FAQ.mdwn#i-want-to-contribute-to-an-open-source-project-but-how-which-one-can-i-contribute-to)
3+
You want to contribute? That's great! Welcome aboard. Before submitting issues or PRs, please read the details below to make sure your contributions can be reviewed smoothly. First of all see [these links](https://github.com/shlomif/Freenode-programming-channel-FAQ/blob/master/FAQ.mdwn#i-want-to-contribute-to-an-open-source-project-but-how-which-one-can-i-contribute-to)
44
for general guidelines for contributing to open source.
55

6+
# Project Scope and Philosophy
7+
8+
PySolFC is a collection of single player solitaire and puzzle games, focused on maintaining a high-quality library of popular and unique games.
9+
10+
The goal is not to include every possible minor variant of each major game. While minor variants are allowed and very often added, we avoid bulk-adding games that differ only in trivial ways purely to inflate the game count. Instead, the project aims to maintain a curated selection of high-quality games with a consistent style and user experience.
11+
12+
Contributions are always welcome, including items that are not currently on the primary developers' roadmap. However, all changes are reviewed with respect to quality, scope, potential maintenance cost, and impact on existing user experience. Some features may be considered impractical given the current architecture or available resources. This does not mean they are forbidden, but they will be reviewed with additional scrutiny to ensure long-term quality and maintainability.
13+
14+
Because they require fundamentally different design considerations and features, multiplayer games are considered out of scope for this project.
15+
616
# Contribution constraints
717

818
- The [GitHub Actions CI build](https://github.com/shlomif/PySolFC/actions) and [AppVeyor build](https://ci.appveyor.com/project/shlomif/pysolfc) (which also run the test suite) should pass on each commit.
919
- Your contributions should be under [GPLv3+](https://en.wikipedia.org/wiki/GNU_General_Public_License#Version_3) or a [compatible free software licence](https://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses), but please don't put them under the [AGPL](https://en.wikipedia.org/wiki/Affero_General_Public_License), which adds additional restrictions.
1020
- The code should be compatible with Python 3.7 and above.
21+
- Changes should not remove, replace, or override existing features, without a clear, well-documented justification.
1122

1223
# How you can contribute
1324

@@ -25,6 +36,8 @@ for general guidelines for contributing to open source.
2536
- Make a monetary donation.
2637
- [Star](https://help.github.com/articles/about-stars/) or [Watch](https://help.github.com/articles/watching-and-unwatching-repositories/) the repository on GitHub
2738

39+
Display improvements are welcome, but can be subjective. Changes that affect the visual layout or presentation of the games should be introduced as an optional, toggleable settings where possible.
40+
2841
## Adding new games
2942

3043
First of all there is the "Solitaire Wizard" which may be used to generate many
@@ -35,6 +48,8 @@ Otherwise, the games' sources live under
3548
written in Python 3.x and you can try inheriting from an existing
3649
variant [class](https://en.wikipedia.org/wiki/Class_%28computer_programming%29).
3750

51+
Contributions adding new games should align with the project scope and design philosophy described above. While minor game variants are acceptable, not every possible variant is required. Creating new cardset types is a major change, and should be reserved for major releases.
52+
3853
In addition to adding the game's source code, be sure to add the game's metadata. At minimum, you should:
3954
- In html-src/rules, create a rules file for the game in question. Use an existing rules file as a guideline. Ideally, each set of game rules should be written in such a way that a non-PySol user can read the rules and know how to play the game with their own deck of cards. For games that are only slightly different from other games, referencing the more common variant's rules is okay.
4055
- In the pysollib/gamedb.py file, update the GAMES_BY_PYSOL_VERSION dictionary to include the new game's ID for the "dev" key. If the "dev" entry does not exist, add it.
@@ -47,6 +62,21 @@ or by submitting patches generated by [git diff](https://git-scm.com/docs/git-di
4762
to a developer's email (e.g [@shlomif's](https://www.shlomifish.org/me/contact-me/) ) or uploading it to a web service (e.g: a pastesite, dropbox,
4863
or Google Drive).
4964

65+
If the contribution resolves a particular issue, you can identify this by adding the issue number to the end of the commit description in parenthesis.
66+
67+
Note that larger or higher risk changes may require additional discussion or refinement before they are accepted.
68+
69+
## Review guidelines
70+
71+
Pull requests and patches will be reviewed with the following in mind:
72+
- Quality and polish matter. Features should be complete, and feel like a natural, integrated part of the application.
73+
- Existing features should not be removed or replaced without clear justification. In general, improvements should extend or supplement existing features rather than override it.
74+
- User-visible display changes should be implemented as toggleable options whenever it is feasible and reasonable to do so.
75+
- Features should be tested in a variety of scenarios. While testing every game is not required, changes should be validated against a representative range of different games and layouts, not just ideal or limited cases.
76+
- Maintenance cost is a factor. Features that significantly increase complexity or introduce unnecessary long-term maintenance burden may be rejected or require revision.
77+
- Ideas considered impractical may still be accepted if they are implemented cleanly and correctly, though they will be reviewed with additional scrutiny due to their inherent risk.
78+
- Larger or higher-risk changes may require additional discussion, testing, or refinement before being merged, and may be deferred to a future (major) release.
79+
5080
# The Release Process
5181

5282
Before publishing a release, please open an issue in GitHub, indicating your intent to do so, to confirm with any other developers if they have any objections, or any WIP features/tickets that should be included in the upcoming release. It's best to do this a week or two before you plan to actually publish the release. No responses on this for a couple weeks can be considered approval to proceed. Releases tagged without verifying with other developers may be removed.
@@ -69,12 +99,8 @@ In order to publish a new version, follow these steps:
6999

70100
# Long-term, large-scale, tasks
71101

72-
Support SVG cardsets.
73-
74-
An optional [REPL](https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop) (Read-eval-print loop)
75-
76-
Listen on a TCP / HTTP+REST port.
77-
78-
A web-based version.
79-
80-
Support a more secure saved-games format than the pickle-based-one.
102+
- Support SVG cardsets.
103+
- An optional [REPL](https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop) (Read-eval-print loop)
104+
- Listen on a TCP / HTTP+REST port.
105+
- A web-based version.
106+
- Support a more secure saved-games format than the pickle-based-one.

0 commit comments

Comments
 (0)