Notes on a fork, and on the person who wrote its licence
Issue 0126 October 2026
Report
The fork is legal. That was never the hard part.
NotProton made Wine run inside Steam on the Mac. Bridgeplay used the same source, dropped the CrossOver licence requirement, and shipped 39 releases, 20 of them in fifty hours. The original author answered with an issue titled "This should not exist." Here is what actually happened, according to the commits.
Lineage
Nothing here started from zero. Every layer has an owner, a licence, and a reason to exist.
1993
Wine begins. Its code will become the floor under everything on this page.
2018
Valve funds Wine for Proton. The same pattern is used again eight years later, on another operating system.
2023
Apple ships the Game Porting Toolkit on top of Wine and D3DMetal. macOS gets an official way to run Windows games.
2025
Whisky stops. Its creator concludes that his own free project hurt Wine’s funding.
Sep 2026
NotProton folds Steam, hooks, and CrossOver into one app. Without a CrossOver licence, nothing runs.
Oct 2026
Bridgeplay uses the same WineCX source, builds its own engine, and removes that licence from the equation.
PositionThis lineage makes the claim that NotProton built everything from scratch hard to sustain: Wine came first, then Valve, Apple, and CodeWeavers each left code in the stack. NotProton may choose CrossOver; GPL does not automatically include the right to dictate what other people do. That is where the pro-NotProton side starts to sound like a gatekeeper standing on shared foundations.
Chronology
Four dates to hold on to: 8 October (first commit), 21 October (Threads launch), 22 October (#79), 24 October (concessions). Times are shown in WIB (UTC+7); hover a timestamp for UTC. Every row has a source you can open. Data is frozen at 26 October 2026, 14:00 WIB.
Phase one
Before anyone had the right to be angry
Up to 22 October, 11:06 WIB
The policy was already written. The fork already existed. Both ran for two weeks without addressing each other.
CodeWeaversOpinion
CodeWeavers writes Whisky’s obituary
Its CEO praises the project that just stopped, and hopes other people will build their own versions. The sentence will be quoted repeatedly over four days in October.
“We develop Wine so that anyone can use it, whether they buy CrossOver, download Proton, or build their own tools like Whisky.”
Add setup for Wine and GPTK 4 in steam without crossover
A pull request adds a free engine. Rejected three hours later: supporting things that are not CrossOver is not a design goal of this project. The author says the work was generated with Gemini Flash.
Add free WineHQ engine with DXMT as an alternative to CrossOver
Raymond’s first commit, two hours and nine minutes before the #37 answer was published. The commit subject already names the work: an alternative to CrossOver. Author and committer dates match, so this is not a backdated timestamp.
The answer names CodeWeavers as the only reason Wine exists on macOS, and refuses to take more than it gives. The text reappears as the body of issue #79, ten days later.
“Without CodeWeavers, we would not have Wine on macOS, it’s as simple as that.”
Add DualSense Bluetooth PCM, XInput rumble forwarding, and Game Mode support for Wine games
sn0wst0rm sends controller support. The maintainer responds warmly and says it will likely make the next major release. As of 26 October the pull request is still open and unreleased.
The target was Dino0005’s fork, not Bridgeplay, which did not exist yet. The stated reasons: it enables functionality he chose not to support, and it contributes nothing back upstream.
“That specific fork is parasitic (it enables functionality I specifically opted not to support + makes changes that are positive but does not contribute anything back upstream) and I would prefer not to directly link it here.”
fix(ws2_32): own host name no longer resolves to loopback first (TEKKEN 8 ranked)
The file name sounds like privacy spoofing. It is not: macOS returns loopback addresses first for the machine’s own host name, and TEKKEN 8’s matchmaking SDK takes the first result and hangs. The patch drops loopback and link-local results while a routable one remains, keeping the order.
The README gains the sentence that had only lived in issues: support for alternatives to CrossOver itself is not planned. This is the first commit to state it in the repository, three days after Raymond’s fork appeared.
feat: DLSS in Deadlock, crackle-free CoreAudio and forced vsync (ray.23)
The nvapi shim wraps a single query function, overwrites the driver version and branch, and forwards everything else to Apple’s nvapi. The fake driver version is what unlocks the DLSS option in games that keep a minimum driver list.
The question: could the installer offer a choice of CrossOver, GPTK, and Wine? The answer is three words, then a sentence about the price of Macs. It is the last answer given before the fork grew into its own project.
docs: Bridgeplay README with visuals from bridgeplay.dev
The README already names Bridgeplay as a fork of NotProton, two days before #79. The claim that credit was added in response to the backlash does not hold for this point.
The launch post sells Bridgeplay as a free way to play Windows games in Steam on the Mac, with no mention of NotProton. The research archive records no time, so only the date is certain. One day later #79 opens in this repository’s tracker.
An independent reviewer concludes the licence was not violated and attribution was present. One gap is recorded: the launch post on social media did not mention NotProton.
One issue, sixteen comments, two concessions, one sentence that cannot be taken back.
11.17.51 WIB
BridgeplayAllegation
Reference #79
This should not exist.
Opened by the original author in the fork’s own tracker. Its body copies the #37 answer. It accuses the fork of harming the Wine project, and asks that things like it not exist.
“Stop. These slop forks are not helpful. They harm the Wine Project.”
Raymond withdraws the 32-bit claim, acknowledges the debt to NotProton, and offers three commitments: upstream first, no pull requests to NotProton, credit stays.
“Bridgeplay wouldn’t exist without your work, and you’re right about more of this than I’d like.”
Status completed, two and a half hours after his reply. The discussion did not stop: the next comments from the NotProton side arrived at 20:33 and at 05:47 the following morning.
You’re a real piece of garbage. I wish you nothing but the worst.
A reply to Raymond’s conciliatory comment, with the suggestion that the reply was written by AI. The accusation was correct, and was admitted two days later.
“You’re a real piece of garbage. I wish you nothing but the worst.”
A release with feature plug-ins and prefix fixes, on the same day as the comment above. It contains no controller commits, so PR #90 is still unmerged.
The fork removed a feature, fixed its credits, and cleaned up its licences. The original author went back to work. Nobody conceded, and nobody stopped.
00.10.12 WIB
BridgeplayFact
Reference 561d0e7
docs: put the fork credit at the top of the README
The NotProton credit moves to the top of the README, eleven hours before open letter #693. The claim that credit only appeared after the backlash does not hold at this point.
docs(licenses): ship the LGPL text and list the WineCX runtime’s libraries
The full LGPL text for the Wine files the app carries lands in the bundle, with a list of every library in the WineCX runtime archive. NOTICE names its GPL parts (FFmpeg, x264, x265, libdvdcss, libdvdread, libdvdnav) and the written source offer now covers GPL files. The order is worth noting: six minutes before open letter #693 was filed.
The harshest criticism came from Indonesia and arrived as paragraphs, not jeers. aimardcr writes that the problem is not the use of AI but the way Raymond answers criticism. Twenty-three minutes later Raymond admits his replies were written by a bot.
“But what you are doing right now isn’t contributing”
fix(installer): stop shipping the WineCX runtime and fix the license notes
The installer stops carrying the WineCX runtime. The commit message gives the reason: the runtime bundles GPL libraries (FFmpeg, x264, x265, libdvd*) whose source neither dappermint nor Bridgeplay publishes, so setup downloads it and the installer drops to 45 MB. NOTICE also stops calling GPTK’s wine/ folder LGPL Wine; it holds Apple’s D3DMetal DLLs.
docs: plainer claims, full list of Steam changes, shorter copy
The README stops saying games run natively, in one click, or at up to 3x, and drops titles that are not in the compatibility list. It lists every change Bridgeplay makes to Steam, including the RTX 4090 identity games see for DLSS, and credits Leon Seemann, Proton, dappermint, and sn0wst0rm.
ilya-id writes a long thread. In it, Raymond says he contacted CodeWeavers before the blow-up and is still waiting for a reply. As of 26 October there is no public reply.
revert(controllers): take out the DualSense bridge, Steam rumble and game-mode host
sn0wst0rm’s work is removed from the code. The credit stays in NOTICE and the README, and the commit message says the work was kept on a parked/notproton-90 branch; that branch is not on the remote as cloned. Since PR #90 is still open and 1.2.1 does not include it, this is lost functionality, not cosmetics.
NotProton’s last commit as of 26 October. The product ships as usual. No change of stance toward the fork, and no answer to the previous day’s comment.
feat(app): name Leon Seemann in the copyright line and add the GPL notice to About
Leon Seemann, who owns the NotProton-WineHQ repository the work branched from, enters the app’s copyright line, and the GPL notice is added to the About screen. A concession readable in Info.plist rather than in a thread.
fix(compat): ignore invalid manifests before deduplicating installed games (#1108)
The last commit before the data was frozen. The repository is still moving on publication day: PR #1108 merged at 13:05 WIB. No new release, and no change of stance toward NotProton.
As of 26 October, CodeWeavers has published nothing about NotProton or Bridgeplay. The October blog archive stops before the drama, and no post mentions either name. Only the older Whisky position exists.
Raymond Chin's greatest deficiency in the eyes of critics is actually simple: he is too famous to forgive.
If this repo were forked by an ordinary person, no one would care at all. The "unethical" accusation is just a stage costume. Defending free software licenses every day, his software actually became free and went viral, then suddenly busy inventing things.
PositionThe chronology needs no extra drama. NotProton had written its policy, Bridgeplay already existed, and then #79 turned a technical rejection into a demand that the fork should not exist - with an old answer pasted into the body for good measure. After “you are a real piece of garbage”, this is hard to call a mere architecture dispute. The pro-NotProton side wrote its own punchline.
The public trial
Two rooms where this case was taken public: Threads, where Bridgeplay launched, and Reddit, where the maintainer’s demand was tested. The transcripts come from a local research archive, because direct access is blocked.
Threads posts
Launch post
Mac gabisa main game Windows? done ✅ Gw open source gratis cara paling seamless buat main Windows game di native Steam Macbook kalian. bridgeplay.dev monggo di star, test, contribute kalo mau.
One day before #79. Dated 21 October; the research archive records no time.
NotProton maintainer confronts influencer-backed fork Bridgeplay over macOS Wine sustainability; owner refuses to take down repo despite upstream’s demands
340+Upvotes
260+Downvotes
hundredsComments
Figures come from the 26 October research archive. Reddit shows a public score, not a breakdown of upvotes and downvotes, so these numbers cannot be reopened on the original page.
I do not think they are required to do what I want. The license I opted to use gives them the right to do what they are doing. But what they are doing is harmful. Not to me, but to CodeWeavers. I think that's a tragedy. So I asked them to not do it. I ask everyone who does this to stop. Most have opted to stop. Free software is freedom. Free speech. Free as in freedom. Not as in free beer. Forks like these offer free beer, but the only company producing beer is CodeWeavers, and if they get into trouble....we're all screwed. I continue to believe that the behavior of the social media influencer is disgusting and actively harmful. Additionally, they are end to end vibing a fork, merging in incomplete/unreviewed PRs and hallucinating issues.
Other voices in the thread
u/Particular-Treat-650Rejecting the demand124 upvotes
Does an upstream maintainer's request to stop distributing a fork carry weight? Absolutely, unconditionally, no. The license is the license. Not having a say and not being able to revoke it are the whole point.
u/SeanmclemRejecting the demand173 upvotes
That's open source.
u/y-c-cRejecting the demand
I'm a paying customer of CrossOver but I'm honestly kind of tired of all these whiteknighting of CodeWeavers... CodeWeavers didn't invent WINE. They built themselves around an existing open source software (WINE), which already had been around for years and the foundation built by lots of other contributors...
u/peckxetraRejecting the demand
Open source shouldn't mean 'you're free to fork my project, but only if I approve of what you do with it.' You can question Raymond's engineering decisions. You can criticize his reliance on AI... But if the fork complies with the license, demanding its deletion purely on ethical grounds? That's where I disagree.
u/Adventurous_Plum_656Criticism of Raymond
As for the Bridgeplay 'maintainer', all they seem to respond is with AI-written messages. I doubt they care at all, which is honestly my bigger issue with this whole discourse. If you can't even write for your own project, what is your project for? Robots?
u/rampancyCriticism of Raymond
The problem is people who just want to use AI to vibe code for them the full CrossOver software stack for free... Does the maintainer of Bridgeplay or folks behind the veritable baker's dozen of vibe coded WINE launchers out there have the chops to maintain their code, solve compatibility issues or fix bugs?
u/RoboErectusRejecting the demand
If a vibecoder surpassed what codeweavers has done, then they absolutely deserve to get supplanted... Projects that learn to use the new tools will thrive. This has always been the case.
u/itsjaseRejecting the demand
I think this post is gonna backfire, I only know Bridgeplay exists now because of this post.
PositionOn Reddit, NotProton says the fork is lawful but harmful, then asks everyone to stop. That is a political position, not a consequence of the licence. The funnier part is that the pro-NotProton thread meant to kill Bridgeplay makes people discover it instead. If this was an anti-publicity strategy, it worked like an advert.
The engine
The arguments on this page rest on code, so the code is shown. Every number comes from a local clone and a diff against merge-base 730f100; every engine patch was read, not assumed.
Three codebases
NotProton
Owner
NotProtonNot
Licence
GPL-3.0
Role
Steam hooks and the CrossOver runner
Size
201 commits, about 53k lines excluding vendor
WineCX / GPTK
Owner
CodeWeavers dan Apple
Licence
LGPL-2.1+ untuk Wine; GPTK proprietary
Role
The engine that runs .exe files
Size
WineCX 11.17, runtime 4.7.3
Bridgeplay
Owner
Raymond Chin
Licence
GPL-3.0
Role
Fork, free engine, and new features
Size
336 fork-owned commits, 39 releases
Side by side
Two products doing the same work in different ways. These rows come from the READMEs, manifests, and repository contents, not from claims in a thread.
Runner
NotProton
CrossOver 26.3. Without a licence, the app runs nothing.
Bridgeplay
WineCX 11.17 with MSync, downloaded separately at setup.
Graphics
NotProton
D3DMetal from GPTK, limited DXMT.
Bridgeplay
GPTK 4.0 beta 3, DXMT, DXVK-macOS 1.10.3.
DLSS
NotProton
Whatever D3DMetal reports.
Bridgeplay
nvapi-shim reports driver 595.41 so the DLSS option appears; the rest is forwarded to Apple’s nvapi.
Steam hooks
NotProton
notproton.dylib through Info.plist and a local signature.
Bridgeplay
The same mechanism, plus scripts for signature repair and the quarantine flag.
Installer
NotProton
CLI through a Homebrew cask.
Bridgeplay
Graphical Setup Assistant, engine downloaded at setup. Since 24 October, without the WineCX runtime.
AI agent traces
NotProton
None.
Bridgeplay
CLAUDE.md, AGENTS.md, and .claude state in .gitignore.
What the fork added to the inherited code
These figures are counted from Bridgeplay’s side: a diff against merge-base 730f100, the point where the fork split from NotProton. 444 files changed with +49,270 and −3,044 lines; the rows below are the largest parts.
The hook layer described as only an interface changed 37 lines across three files. The rest of the project’s value sits outside that layer.
dylib/hooks/hooks.c23
dylib/core/loader.c4
dylib/resolver/resolver.c10
Engine patch audit
Ten patches, read one by one. The label on each row judges whether a patch stands as engineering or changes something outside the project’s own code.
winemac retina203Defensible
NSProxy wraps the view so frames are measured in Win32 pixels; present is called before WM_SIZE.
ws2_32 own-hostname118Defensible
Drops loopback and link-local results from getaddrinfo for the machine’s own host name, keeping the order.
winebus SDL mappings30Defensible
Reverses the allocation order and always writes the NUL; the WineCX version writes past the heap boundary when the array is full.
wined3d driver version42Defensible
Environment override, four-component parser, off by default.
winecoreaudio buffer18With caveats
The device buffer is set to half a period for render. The change is one line, with no test.
d3dx11 CreateThreadPump51With caveats
A stub becomes a function returning E_NOTIMPL. All it removes is a crash.
hide-wine-exports84With caveats
get_proc_address rejects ntdll!wine_*; __wine_* stays. There is precedent in Wine Staging.
nvapi-shim125With caveats
Wraps one query function, overwrites the driver version, forwards the rest to Apple’s nvapi.
win32u driver version29Not defensible
Edits a string and a QWORD in win32u.so, then re-signs ad hoc. The only patch that touches the engine binary.
ngx-signer225Not defensible
Wraps CryptQueryObject and WinVerifyTrust so system32\nvngx.dll passes as the game’s sl.interposer.dll.
Two patches cannot be defended: win32u edits bytes inside the engine binary and re-signs it, and ngx-signer makes one Authenticode check stop meaning anything. The rest can be argued about as aggressive engineering. These two cannot.
PositionTechnically, Bridgeplay is not just NotProton with a new logo: the diff is 444 files and almost 50,000 added lines. Two patches still cannot be defended. Criticism of Bridgeplay can therefore be valid without accepting the whole NotProton narrative - and “slop” is still not a substitute for a code audit.
Three arguments
Each accusation is put next to evidence that can be checked. Some fall. Some stand, and the ones that stand are the least comfortable for both sides.
This is just an interface on top of other people’s work.
Partly
The hook layer is NotProton’s, and is barely touched: 23 lines in hooks.c, 4 in loader.c, 10 in resolver.c. But the diff against the merge base is 444 files and 49,270 added lines, including engine patches, a 2,600-line controller shim, and 2,521 lines of frame generation. Most of the project’s value sits outside the interface.
Evidence
444 files, +49,270/−3,044 against merge-base 730f100.
native-shim: 75 CHECKs and a real device report fixture. framegen: 60 CHECKs, two engines.
winebus fixes an allocation bug that WineCX ships.
The code was taken without attribution.
Partly
The pre-merge port is true and acknowledged: the port-after-merge rule was added on 22 October. “Without attribution” is false: sn0wst0rm’s credit stays after the feature was removed, and the revert message names its origin.
Evidence
e823152 adds the rule that ports wait until merged.
Commit 5df8a5f: “NOTICE and the README keep sn0wst0rm’s credit.”
Review #2, 21 October, found no licence violation.
bridgeplay.dev, opened 26 October: “Bridgeplay is a fork of NotProton”, with Leon Seemann, dappermint and sn0wst0rm named in the “Built in the open” section.
The criticism came from outside, an attack on an Indonesian developer.
Falls
Factually false. The harshest critics were Indonesian users, including the ones who opened the open letter and the pull requests to shut the repo down. The person who moved to a personal attack was the original author, in English, in a public tracker.
Evidence
Open letter #693, 24 October.
PR #702, #704, #712 and issue #727, all 24 October.
The #79 quote, 23 October: “You’re a real piece of garbage.”
PositionThe argument is lopsided: the pro-NotProton side wants freedom to mean permission to use, not permission to fork. GPL-3.0 has no “unless the result lets people use CrossOver for free” exception. Bridgeplay still owes attribution and process; that debt is not NotProton’s veto.
What we do not defend
The position on the cover only means something if this list ships with it. Seven items on NotProton’s side, four on Bridgeplay’s, each with a trail you can open.
NotProton
Demanding what its own licence allows
#79 asks that forks like this stop existing. In the same thread, the original author writes that the licence he chose gives people the right to make one. The two sentences cannot stand together.
“Yes, you have a right to make such a fork, the license I selected gives you that right.”
Gatekeeping for a paid product
The policy is consistent and public: CrossOver is required (#5), other engines are not a design goal (#18), and a choice of engines is answered “No. Never.” That is the product owner’s right. What cannot be defended is using GPL-3.0 for the same code while refusing the consequence that licence carries.
EvidenceCommit 30b65c0 writes the prohibition into the README on 11 October, three days after the first fork.
A personal attack, in a public tracker
After Raymond offered concessions, the reply was not a technical one. The sentence is still in #79, with no apology after it.
“You’re a real piece of garbage. I wish you nothing but the worst.”
Answering engine choice with “No. Never.”
NotProton has the right to make CrossOver its only supported engine. What we do not defend is answering the question with “Macs are also expensive”, as if the price of the hardware were a technical argument.
“No. Never. Macs are also expensive.”
Pasting an old answer into #79
The body of issue #79 copies the long answer from #37, then uses it to open the confrontation in Bridgeplay’s tracker. Criticism may be repeated; presenting it as a new argument makes the drama look fresher than its substance.
EvidenceThe #37 answer was posted on 8 October; #79 opened on 22 October using the same text.
Calling another fork “parasitic”
A comment on PR #90 calls Dino0005’s fork “parasitic” because it enables functionality the maintainer chose not to support and contributes nothing back. The target was not Bridgeplay, but the language still shows a conversational standard we do not defend.
“That specific fork is parasitic”
Treating “harming Wine” as a fact
Issue #79 alleges that the fork harms the Wine project and its funding, but this research found no evidence that funding shifted after Bridgeplay appeared or that CodeWeavers asked for intervention. The allegation can be recorded; its false certainty cannot be defended.
EvidenceThe funding argument was removed because it could not be proven; CodeWeavers has made no public statement.
Bridgeplay
A launch without its origins
The launch post on Threads sells the project as a free way to play Windows games, with no mention of NotProton. Independent review #2 records that gap as the only attribution problem, and the site and GPTK licence were fixed within hours.
“Mac gabisa main game Windows? done ✅ Gw open source gratis cara paling seamless buat main Windows game di native Steam Macbook kalian.”
EvidenceReview #2, 21 October: no licence violation, one attribution gap.
Using work that was not merged
sn0wst0rm’s controller work from PR #90 shipped while that pull request was still unmerged, then was removed on 24 October. The port-after-merge rule only became repository policy in e823152 on 22 October, after the work had been used.
Evidence5df8a5f, 24 October: “revert(controllers): take out the DualSense bridge, Steam rumble and game-mode host”.
Replies written by a bot
Raymond’s conciliatory reply in #79 was written by a bot, admitted in #693. The admission came after the person on the other side accused the reply of being AI. The accusation was correct.
“the way i responded is full AI and was a mistake to ask my bots reply as i was in between meetings.”
Twenty releases in fifty hours
Between v0.7.32 and v0.7.51 there are 20 releases in about 50 hours; on 20 October alone there are 99 commits. The numbers do not prove the code is bad. They show there was no time to check it on real hardware.
Evidencev0.7.32, 22 October 04:06 UTC; v0.7.51, 24 October 06:42 UTC.
PositionThis list separates two things that are being deliberately mixed. NotProton may dislike Bridgeplay; what we do not defend is the pro-NotProton side turning that dislike into a demand for deletion. Bridgeplay may say it was moving fast; that does not erase its own carelessness.
What we could not confirm
This list is not a formality. Anything we could not check was left out of the story rather than softened.
CodeWeavers’ reply to Raymond.
Raymond says he contacted them before the blow-up. A private reply may exist, but none is public as of 26 October.
Claims of religious or racial abuse.
Mentioned in discussion, but no screenshot, link, or archive can be checked. Not included.
Bridgeplay’s behaviour when running a game.
No build or runtime test was performed for this research. Every conclusion comes from source, diffs, and commit history.
The parked/notproton-90 branch.
Named in the revert message, but absent from the remote when the repo was cloned. The claim that the code is kept there cannot be confirmed.
PositionWe do not use what we cannot confirm to rescue anyone: CodeWeavers has not spoken, the runtime was not tested, and the parked branch is not visible. The pro-NotProton side cannot fill those evidentiary gaps with “definitely harmful”, and Bridgeplay cannot fill them with “definitely safe”.
Colophon
Method
Every finding comes from local clones of both repositories, their commit history, tags, and GitHub API responses. Nothing was built and nothing was run. Quotes are reproduced as they appear in issues and commits, spelling included. Times are converted to WIB, with UTC kept in the title attribute. Data is frozen at 26 October 2026, 14:00 WIB. Threads and Reddit quotes come from a local research transcript, because direct access is blocked. The bridgeplay.dev site was opened on 26 October and its contents checked directly.
Credit and limits
This page is not affiliated with NotProton, Bridgeplay, CodeWeavers, or Apple. Names and quotes are used to identify public statements. The raw research lives in the research/ folder, including JSON that can be compared against the commits.
Issue 01 published. Two corrections to the earlier research notes: Raymond’s first commit precedes the #37 answer, and #79 was closed by Raymond, not a bot.
The argument “This fork damages Wine’s funding” is dropped: there is no evidence that Wine’s funding shifted once this fork existed, and its connection to Bridgeplay cannot be shown. The accusation stays in the #79 chronology as a claim, not as an argument. bridgeplay.dev can be opened again, so the entry about its contents leaves the unverified list and is used as evidence in the attribution argument.
PositionOur final conclusion, for this case only: our criticism is aimed at NotProton and its defenders, who seem to be saying, “Free as in freedom... just not the freedoms I don’t like.” Infuriating. We are not discussing every open source project or every other case. We still criticize Bridgeplay, but in this matter we cannot accept the demand that a lawful GPL-3.0 fork should stop existing.