Playing tango with GShade

One teenager's fight against an anti-FOSS developer

posted 2023-02-05

Warning

This post was made a long time ago. The information inside of it may be outdated, and the writing may not accurately reflect my current self.

UPDATE, 02/06 @ 12:45 PM ET: I’ve been banned from the GPOSERS Discord after Marot put malware inside of GShade’s installer. I’ll continue this in a part two soon.

This is gonna be a fun one.

The problem

GShade is a closed source ReShade fork. Why is it closed source? Who knows!

They have forced automatic updates (disabling itself until you update), annoying devs, and a userbase that’s only large because “everyone else uses it”. Their FAQ post explaining why the updates are forced is specifically designed to waste time. They have annoying, obtrusive popups. Configs randomly reset every update. It sucks.

Their installer is a total mess that also is not open source. Of course, monkey see and monkey get idea - let’s install ReShade with the GShade shaders!

Enter GeezShade

GeezShade is an open source shader/preset downloader written in Rust. It’s broken right now (i’ll get into that later), but it’s important for the story.

It works by downloading .zip files from GitHub. Seriously.

Almost immediately I got a tweet from a popular preset creator telling me to exclude their work from this. How do you exclude a preset from a program that fetches a GitHub API endpoint? I dunno.

I also got accused of hosting and “distributing” shaders and presets, and even that doing this was conspiracy to commit a crime!. Maybe those who said that should reread what that word means.

Marot responds

Marot, a.k.a. “The CEO of GShade” (I made that title up), after fighting me in my Twitter notifs (Marot, you’re shadowbanned on Twitter, by the way) comes up with the ultimate plan - add a LICENSE.md!

You can see it here. Note the automated downloading part. :^

Some other things I built

Here’s some other things I did to troll Marot while I got bored:

GShade Tango - the ultimate tool

I also made a CLI tool that I never released anywhere that had several features - download ReShade and GShade, patch the update check out of the GShade DLL, and download shaders/presets (including pinned before they added a license!)

The output of the tool

The final straw - GShade Patcher

I also made an online patcher tool to patch the update check out of GShade! It’s borked right now - I’ll fix it someday if I have the energy.

Marot gets mad

I wake up one morning to a glorious version 4.1.1 of GShade. It:

I’ll fix it eventually, but I’m not in the mood right now.

This moves the GShade shaders and presets to a self-hosted web URL, password protected by a probably-not-legally-binding password claiming that “I indeed accessed this from the official installer”. Incredibly sad that Marot would intentionally break tools opting for a more open replacement for GShade.

So what now?

I’m getting bored of this. It was funny, though!

If I were you, still trying to use GShade on ReShade, I’d give this script a look - specifically presetAndShaderUpdate’s calls to curl, and the two variables at the top of that function. Have fun!

If you’re reading this, Marot: you really need to pick better things to do with your time than fight 16 year olds on the Internet. I’ll be back to fight for FOSS someday, but I’ve got more important things to do like schoolwork. Thanks for making a clear stance your software practices are evil, though.

This blog post was written in Vim, built with Zola, hosted through NGINX on Debian Linux through Proxmox. How’s that for open source!