Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

owmods-gui: init at 0.15.0 #369213

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Conversation

Bwc9876
Copy link

@Bwc9876 Bwc9876 commented Dec 29, 2024

A GUI mod manager for the game Outer Wilds. Uses webkit2gtk to render the frontend, requires Mono in order to run the mod loader.

Homepage: https://github.com/ow-mods/ow-mod-man/tree/main/owmods_gui

Things done

  • Built on platform(s)
    • x86_64-linux
    • aarch64-linux
    • x86_64-darwin
    • aarch64-darwin
  • For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)
    • sandbox = relaxed
    • sandbox = true
  • Tested, as applicable:
  • Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
  • Tested basic functionality of all binary files (usually in ./result/bin/)
  • 25.05 Release Notes (or backporting 24.11 and 25.05 Release notes)
    • (Package updates) Added a release notes entry if the change is major or breaking
    • (Module updates) Added a release notes entry if the change is significant
    • (Module addition) Added a release notes entry if adding a new NixOS module
  • Fits CONTRIBUTING.md.

Add a 👍 reaction to pull requests you find important.

@NixOSInfra NixOSInfra added the 12. first-time contribution This PR is the author's first one; please be gentle! label Dec 29, 2024
@github-actions github-actions bot added 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin 10.rebuild-linux: 1-10 labels Dec 29, 2024
pkgs/by-name/ow/owmods-gui/package.nix Outdated Show resolved Hide resolved
pkgs/by-name/ow/owmods-gui/package.nix Outdated Show resolved Hide resolved
pkgs/by-name/ow/owmods-gui/package.nix Outdated Show resolved Hide resolved
pkgs/by-name/ow/owmods-gui/package.nix Show resolved Hide resolved
@aucub
Copy link
Contributor

aucub commented Dec 29, 2024

nixpkgs-review result

Generated using nixpkgs-review.

Command: nixpkgs-review pr 369213 --extra-nixpkgs-config '{ allowUnfree = true; android_sdk.accept_license = true; }'


x86_64-linux

✅ 1 package built:
  • owmods-gui

@ofborg ofborg bot added the 8.has: package (new) This PR adds a new package label Dec 30, 2024
@ofborg ofborg bot requested review from loco-choco and Spoonbaker December 30, 2024 05:40
@ofborg ofborg bot added 11.by: package-maintainer This PR was created by the maintainer of the package it changes 10.rebuild-linux: 1 labels Dec 30, 2024
@wegank wegank added 12.approvals: 2 This PR was reviewed and approved by two reputable people 12.approved-by: package-maintainer This PR was reviewed and approved by a maintainer listed in the package labels Dec 30, 2024
@keenanweaver
Copy link
Member

keenanweaver commented Dec 30, 2024

Getting this Mono error. Doesn't seem to be wrapping. Tried the outer-wilds-mod-manager and the .wrapped version. (I don't have mono installed system-wide)

image

Screenshot_20241230_074823
Compared to another 'wrapped' package. Maybe it needs makeWrapper?

Also seeing an error with Mesa in the logs, could be harmless.

[07:39:37][INFO] Start of Outer Wilds Mod Manager v0.15.0
[07:39:37][DEBUG] Setup window state
[07:39:37][INFO] File Watcher Setup On Standby
MESA-LOADER: failed to open dri: /run/opengl-driver/lib/gbm/dri_gbm.so: cannot open shared object file: No such file or directory (search paths /run/opengl-driver/lib/gbm, suffix _gbm)
Failed to create GBM device for DRM node: /dev/dri/renderD128: No such file or directory
[07:39:38][DEBUG] Reading Config From /home/keenan/.local/share/ow-mod-man/settings.json
[07:39:38][INFO] File Watcher: Watching Filesystem
[07:39:38][DEBUG] Fetching Alert At: https://raw.githubusercontent.com/ow-mods/ow-mod-db/source/alert-v2.json
[07:39:38][DEBUG] Begin construction of local db at /home/keenan/.local/share/OuterWildsModManager/OWML
[07:39:38][DEBUG] Loading Mod With Manifest: /home/keenan/.local/share/OuterWildsModManager/OWML/Mods/JohnCorby.VanillaFix/manifest.json
[07:39:38][DEBUG] Loading Mod With Manifest: /home/keenan/.local/share/OuterWildsModManager/OWML/Mods/Raicuparta.QuantumSpaceBuddies/manifest.json
[07:39:38][DEBUG] Loading Mod With Manifest: /home/keenan/.local/share/OuterWildsModManager/OWML/Mods/_nebula.MenuFramework/manifest.json
[07:39:38][DEBUG] Fetching Remote DB At https://ow-mods.github.io/ow-mod-db/database.json
[07:39:38][DEBUG] Success, Constructing Remote Mod Map
[07:39:43][DEBUG] Begin construction of local db at /home/keenan/.local/share/OuterWildsModManager/OWML
[07:39:43][DEBUG] Loading Mod With Manifest: /home/keenan/.local/share/OuterWildsModManager/OWML/Mods/JohnCorby.VanillaFix/manifest.json
[07:39:43][DEBUG] Loading Mod With Manifest: /home/keenan/.local/share/OuterWildsModManager/OWML/Mods/Raicuparta.QuantumSpaceBuddies/manifest.json
[07:39:43][DEBUG] Loading Mod With Manifest: /home/keenan/.local/share/OuterWildsModManager/OWML/Mods/_nebula.MenuFramework/manifest.json
[07:39:43][DEBUG] Begin construction of local db at /home/keenan/.local/share/OuterWildsModManager/OWML
[07:39:43][DEBUG] Loading Mod With Manifest: /home/keenan/.local/share/OuterWildsModManager/OWML/Mods/JohnCorby.VanillaFix/manifest.json
[07:39:43][DEBUG] Loading Mod With Manifest: /home/keenan/.local/share/OuterWildsModManager/OWML/Mods/Raicuparta.QuantumSpaceBuddies/manifest.json
[07:39:43][DEBUG] Loading Mod With Manifest: /home/keenan/.local/share/OuterWildsModManager/OWML/Mods/_nebula.MenuFramework/manifest.json
[07:39:44][DEBUG] Begin construction of local db at /home/keenan/.local/share/OuterWildsModManager/OWML
[07:39:44][DEBUG] Loading Mod With Manifest: /home/keenan/.local/share/OuterWildsModManager/OWML/Mods/JohnCorby.VanillaFix/manifest.json
[07:39:44][DEBUG] Loading Mod With Manifest: /home/keenan/.local/share/OuterWildsModManager/OWML/Mods/Raicuparta.QuantumSpaceBuddies/manifest.json
[07:39:44][DEBUG] Loading Mod With Manifest: /home/keenan/.local/share/OuterWildsModManager/OWML/Mods/_nebula.MenuFramework/manifest.json
[07:39:44][DEBUG] Begin construction of local db at /home/keenan/.local/share/OuterWildsModManager/OWML
[07:39:44][DEBUG] Loading Mod With Manifest: /home/keenan/.local/share/OuterWildsModManager/OWML/Mods/JohnCorby.VanillaFix/manifest.json
[07:39:44][DEBUG] Loading Mod With Manifest: /home/keenan/.local/share/OuterWildsModManager/OWML/Mods/Raicuparta.QuantumSpaceBuddies/manifest.json
[07:39:44][DEBUG] Loading Mod With Manifest: /home/keenan/.local/share/OuterWildsModManager/OWML/Mods/_nebula.MenuFramework/manifest.json
[07:39:51][DEBUG] Begin construction of local db at /home/keenan/.local/share/OuterWildsModManager/OWML
[07:39:51][DEBUG] Loading Mod With Manifest: /home/keenan/.local/share/OuterWildsModManager/OWML/Mods/JohnCorby.VanillaFix/manifest.json
[07:39:51][DEBUG] Loading Mod With Manifest: /home/keenan/.local/share/OuterWildsModManager/OWML/Mods/Raicuparta.QuantumSpaceBuddies/manifest.json
[07:39:51][DEBUG] Loading Mod With Manifest: /home/keenan/.local/share/OuterWildsModManager/OWML/Mods/_nebula.MenuFramework/manifest.json
[07:39:51][DEBUG] Begin construction of local db at /home/keenan/.local/share/OuterWildsModManager/OWML
[07:39:51][DEBUG] Loading Mod With Manifest: /home/keenan/.local/share/OuterWildsModManager/OWML/Mods/JohnCorby.VanillaFix/manifest.json
[07:39:51][DEBUG] Loading Mod With Manifest: /home/keenan/.local/share/OuterWildsModManager/OWML/Mods/Raicuparta.QuantumSpaceBuddies/manifest.json
[07:39:51][DEBUG] Loading Mod With Manifest: /home/keenan/.local/share/OuterWildsModManager/OWML/Mods/_nebula.MenuFramework/manifest.json
MESA-LOADER: failed to open dri: /run/opengl-driver/lib/gbm/dri_gbm.so: cannot open shared object file: No such file or directory (search paths /run/opengl-driver/lib/gbm, suffix _gbm)
Failed to create GBM device for DRM node: /dev/dri/renderD128: No such file or directory
[07:39:52][DEBUG] Writing Config To /home/keenan/.local/share/ow-mod-man/settings.json
[07:39:52][ERROR] Error Received From Frontend: Can't Start Game: Failed to launch game: Os { code: 2, kind: NotFound, message: "No such file or directory" }. Is Mono Installed?
[07:39:52][DEBUG] Fetching Alert At: https://raw.githubusercontent.com/ow-mods/ow-mod-db/source/alert-v2.json
[07:39:53][DEBUG] Reading Config From /home/keenan/.local/share/ow-mod-man/settings.json
[07:39:53][DEBUG] Fetching Alert At: https://raw.githubusercontent.com/ow-mods/ow-mod-db/source/alert-v2.json
[07:39:53][DEBUG] Fetching Alert At: https://raw.githubusercontent.com/ow-mods/ow-mod-db/source/alert-v2.json
MESA-LOADER: failed to open dri: /run/opengl-driver/lib/gbm/dri_gbm.so: cannot open shared object file: No such file or directory (search paths /run/opengl-driver/lib/gbm, suffix _gbm)
Failed to create GBM device for DRM node: /dev/dri/renderD128: No such file or directory
[07:39:58][DEBUG] Writing Config To /home/keenan/.local/share/ow-mod-man/settings.json
[07:39:58][ERROR] Error Received From Frontend: Can't Start Game: Failed to launch game: Os { code: 2, kind: NotFound, message: "No such file or directory" }. Is Mono Installed?
[07:39:58][DEBUG] Fetching Alert At: https://raw.githubusercontent.com/ow-mods/ow-mod-db/source/alert-v2.json
[07:39:58][DEBUG] Reading Config From /home/keenan/.local/share/ow-mod-man/settings.json
[07:39:58][DEBUG] Fetching Alert At: https://raw.githubusercontent.com/ow-mods/ow-mod-db/source/alert-v2.json
[07:39:58][DEBUG] Fetching Alert At: https://raw.githubusercontent.com/ow-mods/ow-mod-db/source/alert-v2.json
thread '<unnamed>' panicked at /build/owmods-gui-0.15.0-vendor.tar.gz/glib/src/thread_guard.rs:88:9:
Value accessed from different thread than where it was created
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread '<unnamed>' panicked at /build/owmods-gui-0.15.0-vendor.tar.gz/glib/src/thread_guard.rs:107:9:
Value dropped on a different thread than where it was created
stack backtrace:

@Bwc9876
Copy link
Author

Bwc9876 commented Dec 30, 2024

Ah yep! Seems we were adding the args in postFixup after the wrapper already ran, moved it to preFixup and it seems to work now.

@keenanweaver
Copy link
Member

Working better now. I have the game on Epic and use Heroic to launch it, but it doesn't seem to be able to. Launching the game manually shows OWML in the lower-left corner as anticipated, but it doesn't launch from the mod manager itself. Log:

┌───────────────────>
│keenan in .cache/nixpkgs-review/pr-369213-1 via ❄️  impure (review-shell) 6m26s
❄️ bsh ›
└─>./results/owmods-gui-x86_64-linux/bin/outer-wilds-mod-manager
[17:23:53][INFO] Start of Outer Wilds Mod Manager v0.15.0
[17:23:53][DEBUG] Setup window state
[17:23:53][INFO] File Watcher Setup On Standby
MESA-LOADER: failed to open dri: /run/opengl-driver/lib/gbm/dri_gbm.so: cannot open shared object file: No such file or directory (search paths /run/opengl-driver/lib/gbm, suffix _gbm)
Failed to create GBM device for DRM node: /dev/dri/renderD128: No such file or directory
[17:23:53][DEBUG] Reading Config From /home/keenan/.local/share/ow-mod-man/settings.json
[17:23:53][INFO] File Watcher: Watching Filesystem
[17:23:53][ERROR] Error starting Mods watcher: Error { kind: PathNotFound, paths: [] }
[17:23:53][ERROR] Error starting Mods watcher: Error { kind: Io(Os { code: 2, kind: NotFound, message: "No such file or directory" }), paths: ["/home/keenan/.local/share/OuterWildsModManager/OWML/OWML.Manifest.json"] }
[17:23:53][DEBUG] Fetching Alert At: https://raw.githubusercontent.com/ow-mods/ow-mod-db/source/alert-v2.json
[17:23:53][DEBUG] Begin construction of local db at /home/keenan/.local/share/OuterWildsModManager/OWML
[17:23:54][DEBUG] Fetching Remote DB At https://ow-mods.github.io/ow-mod-db/database.json
[17:23:54][ERROR] Error Received From Frontend: No such file or directory (os error 2)
At:
@tauri://localhost/assets/SettingsModal-Y-k0Z0Fu.js:1:7067
sO@tauri://localhost/assets/styles-DluToLsM.js:49:34076
@tauri://localhost/assets/BaseApp-Oqyvvex2.js:159:9495
div@unknown:0:0
@tauri://localhost/assets/BaseApp-Oqyvvex2.js:8:7054
@tauri://localhost/assets/MainApp-Ce_swwpl.js:2:22236
div@unknown:0:0
@tauri://localhost/assets/BaseApp-Oqyvvex2.js:8:7054
@tauri://localhost/assets/BaseApp-Oqyvvex2.js:21:24154
@tauri://localhost/assets/BaseApp-Oqyvvex2.js:8:7054
div@unknown:0:0
@tauri://localhost/assets/BaseApp-Oqyvvex2.js:8:7054
t@tauri://localhost/assets/BaseApp-Oqyvvex2.js:21:16398
@tauri://localhost/assets/BaseApp-Oqyvvex2.js:95:8756
Ty@tauri://localhost/assets/BaseApp-Oqyvvex2.js:122:8079
div@unknown:0:0
@tauri://localhost/assets/BaseApp-Oqyvvex2.js:8:7054
@tauri://localhost/assets/BaseApp-Oqyvvex2.js:94:30846
@tauri://localhost/assets/BaseApp-Oqyvvex2.js:122:12536
@tauri://localhost/assets/BaseApp-Oqyvvex2.js:8:7054
@tauri://localhost/assets/MainApp-Ce_swwpl.js:2:19354
@tauri://localhost/assets/SettingsModal-Y-k0Z0Fu.js:1:7467
Suspense@unknown:0:0
@tauri://localhost/assets/MainApp-Ce_swwpl.js:2:59172
div@unknown:0:0
@tauri://localhost/assets/BaseApp-Oqyvvex2.js:8:7054
@tauri://localhost/assets/BaseApp-Oqyvvex2.js:14:15651
br@tauri://localhost/assets/MainApp-Ce_swwpl.js:2:61323
div@unknown:0:0
@tauri://localhost/assets/BaseApp-Oqyvvex2.js:8:7054
@tauri://localhost/assets/BaseApp-Oqyvvex2.js:159:3576
nav@unknown:0:0
@tauri://localhost/assets/BaseApp-Oqyvvex2.js:8:7054
@tauri://localhost/assets/BaseApp-Oqyvvex2.js:21:24154
@tauri://localhost/assets/BaseApp-Oqyvvex2.js:8:7054
@tauri://localhost/assets/MainApp-Ce_swwpl.js:2:6255
Cr@tauri://localhost/assets/MainApp-Ce_swwpl.js:2:61803
@tauri://localhost/assets/MainApp-Ce_swwpl.js:7:2230
div@unknown:0:0
@tauri://localhost/assets/BaseApp-Oqyvvex2.js:8:7054
@tauri://localhost/assets/BaseApp-Oqyvvex2.js:14:15651
sO@tauri://localhost/assets/styles-DluToLsM.js:49:34076
@tauri://localhost/assets/BaseApp-Oqyvvex2.js:159:9495
py@tauri://localhost/assets/BaseApp-Oqyvvex2.js:122:4077
Wd@tauri://localhost/assets/BaseApp-Oqyvvex2.js:8:7274
@tauri://localhost/assets/BaseApp-Oqyvvex2.js:218:150
ba@tauri://localhost/assets/MainApp-Ce_swwpl.js:7:3108
Suspense@unknown:0:0
sO@tauri://localhost/assets/styles-DluToLsM.js:49:34076
CG@tauri://localhost/assets/styles-DluToLsM.js:60:337
[17:23:54][DEBUG] Success, Constructing Remote Mod Map
[17:24:01][DEBUG] Begin download of https://github.com/ow-mods/owml/releases/download/2.14.0/OWML.zip to /tmp/nix-shell-1156939-0/.tmpaWMRto/OWML.zip
[17:24:01][DEBUG] Begin extraction of /tmp/nix-shell-1156939-0/.tmpaWMRto/OWML.zip to /home/keenan/.local/share/OuterWildsModManager/OWML
[17:24:02][DEBUG] Skipping Analytics As The ANALYTICS_API_KEY Is Null (ModRequiredInstall)
[17:24:10][DEBUG] Writing Config To /home/keenan/.local/share/ow-mod-man/settings.json
[17:24:10][DEBUG] Fetching Alert At: https://raw.githubusercontent.com/ow-mods/ow-mod-db/source/alert-v2.json
[17:24:10][DEBUG] Fetching Alert At: https://raw.githubusercontent.com/ow-mods/ow-mod-db/source/alert-v2.json
[17:24:10][DEBUG] Reading Config From /home/keenan/.local/share/ow-mod-man/settings.json
[17:24:10][DEBUG] Fetching Alert At: https://raw.githubusercontent.com/ow-mods/ow-mod-db/source/alert-v2.json
[17:24:10][DEBUG] Fetching Alert At: https://raw.githubusercontent.com/ow-mods/ow-mod-db/source/alert-v2.json
[17:24:32][DEBUG] Writing Config To /home/keenan/.local/share/ow-mod-man/settings.json
[17:24:32][DEBUG] Fetching Alert At: https://raw.githubusercontent.com/ow-mods/ow-mod-db/source/alert-v2.json
[17:24:32][DEBUG] Fetching Alert At: https://raw.githubusercontent.com/ow-mods/ow-mod-db/source/alert-v2.json
[17:24:33][DEBUG] Reading Config From /home/keenan/.local/share/ow-mod-man/settings.json
[17:24:33][DEBUG] Fetching Alert At: https://raw.githubusercontent.com/ow-mods/ow-mod-db/source/alert-v2.json
[17:24:33][DEBUG] Fetching Alert At: https://raw.githubusercontent.com/ow-mods/ow-mod-db/source/alert-v2.json
MESA-LOADER: failed to open dri: /run/opengl-driver/lib/gbm/dri_gbm.so: cannot open shared object file: No such file or directory (search paths /run/opengl-driver/lib/gbm, suffix _gbm)
Failed to create GBM device for DRM node: /dev/dri/renderD128: No such file or directory
[17:24:37][DEBUG] Writing Config To /home/keenan/.local/share/ow-mod-man/settings.json
[17:24:37][DEBUG] Fetching Alert At: https://raw.githubusercontent.com/ow-mods/ow-mod-db/source/alert-v2.json
[17:24:37][WARN] Potentially failed to start game (exit code): Unknown
[17:24:37][WARN] Potentially Failed to Start Game (stdout): (objectpath '/org/freedesktop/portal/desktop/request/1_464/t',)

[17:24:37][WARN] Potentially Failed to Start Game (stderr):
[17:24:37][DEBUG] Reading Config From /home/keenan/.local/share/ow-mod-man/settings.json
[17:24:37][DEBUG] Fetching Alert At: https://raw.githubusercontent.com/ow-mods/ow-mod-db/source/alert-v2.json
[17:24:37][DEBUG] Fetching Alert At: https://raw.githubusercontent.com/ow-mods/ow-mod-db/source/alert-v2.json

I used the flake prior to this PR and didn't experience this issue.

QSB still doesn't work (never have gotten it to work on my setup), but I'm sure that's not an OWMM issue.

@Bwc9876
Copy link
Author

Bwc9876 commented Dec 31, 2024

Oh interesting, if it's patching the game to be modded that most likely means its just failing to invoke the Heroic games URI to launch it (com.epicgames.launcher://apps/starfish%3A601d0668cef146bd8eef75d43c6bbb0b%3AStarfish?action=launch&silent=true) this could be a few issues, some of them not being because of the manager.

@wegank wegank removed 12.approvals: 2 This PR was reviewed and approved by two reputable people 12.approved-by: package-maintainer This PR was reviewed and approved by a maintainer listed in the package labels Dec 31, 2024
@ofborg ofborg bot requested a review from loco-choco December 31, 2024 08:23
@keenanweaver
Copy link
Member

keenanweaver commented Dec 31, 2024

Oh interesting, if it's patching the game to be modded that most likely means its just failing to invoke the Heroic games URI to launch it (com.epicgames.launcher://apps/starfish%3A601d0668cef146bd8eef75d43c6bbb0b%3AStarfish?action=launch&silent=true) this could be a few issues, some of them not being because of the manager.

Interesting. I took a look around. The flatpak version prompts me to set the appropriate mime type:

Screenshot_20241231_153156

I don't get that with the nix package.... at least not before. Now I get prompted for it after doing it once with the flatpak version. Odd.

Regardless, it still doesn't launch for me with either nix or flatpak, so I'll chalk this up to something I'm doing in my setup.

EDIT: I found an issue upstream that basically fixes the issue for me. ow-mods/ow-mod-man#790 I did as this user did and created/selected an OW shortcut instead of Heroic. All issues resolved after that, so it seems like an upstream or Heroic issue.

@wegank wegank added 12.approved-by: package-maintainer This PR was reviewed and approved by a maintainer listed in the package 12.approvals: 3+ This PR was reviewed and approved by three or more reputable people labels Jan 1, 2025
pkgs/by-name/ow/owmods-gui/package.nix Outdated Show resolved Hide resolved
pkgs/by-name/ow/owmods-gui/package.nix Outdated Show resolved Hide resolved
pkgs/by-name/ow/owmods-gui/package.nix Outdated Show resolved Hide resolved
pkgs/by-name/ow/owmods-gui/package.nix Outdated Show resolved Hide resolved
@wegank wegank removed 12.approvals: 3+ This PR was reviewed and approved by three or more reputable people 12.approved-by: package-maintainer This PR was reviewed and approved by a maintainer listed in the package labels Jan 3, 2025
@keenanweaver
Copy link
Member

nixpkgs-review result

Generated using nixpkgs-review.

Command: nixpkgs-review pr 369213


x86_64-linux

✅ 1 package built:
  • owmods-gui

@keenanweaver keenanweaver added the 12.approvals: 1 This PR was reviewed and approved by one reputable person label Jan 5, 2025
@wegank wegank added 12.approvals: 3+ This PR was reviewed and approved by three or more reputable people and removed 12.approvals: 1 This PR was reviewed and approved by one reputable person labels Jan 5, 2025
Copy link

@Spoonbaker Spoonbaker left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@Bwc9876 Bwc9876 requested a review from pluiedev January 6, 2025 22:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
8.has: package (new) This PR adds a new package 10.rebuild-darwin: 0 This PR does not cause any packages to rebuild on Darwin 10.rebuild-linux: 1-10 11.by: package-maintainer This PR was created by the maintainer of the package it changes 12.approvals: 3+ This PR was reviewed and approved by three or more reputable people 12. first-time contribution This PR is the author's first one; please be gentle!
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants