Native Windows Brew prototype: request for guidance on small upstreamable abstractions #6860
Replies: 4 comments 4 replies
-
|
Thanks for the thorough writeup, and for asking before opening a large PR. Native Windows is firmly out of scope for Homebrew/brew, and Chocolatey, Scoop, or WinGet are better fits. Unlike the Linuxbrew merge, which kept the Unix assumptions almost intact, Windows breaks nearly all of them at once. Even the inert abstractions carry permanent maintenance and test burden for an unsupported target, so we would decline them as Windows enablement. Best kept as an independent project. |
Beta Was this translation helpful? Give feedback.
-
|
Hi @anubissbe. I gently disagree with @p-linnane here: we already have an OS level abstraction layer and Windows is more tolerant of Unix standards than it used to be. I don't think we'd ever be willing to e.g. replace all Bash/any Ruby with Powershell but we'll consider isolated, well-tested use of the existing I think what would probably make most sense is for you to "port" Homebrew to Windows entirely yourself first and then start submitting small (sub-500 lines diff) PRs bit-by-bit. Happy to discuss specifics PRs here. For specific questions:
Short-term yes, long-term no: particularly if a Windows installer installs Bash, Ruby, Curl, etc.
I am happy to discuss the fork in advance to make it easier to ensure you build it in a way that can actually be merged back one day and doesn't diverge too far.
Yes. You should have actual CI, binary packages, end-to-end testing and non-you users.
That would be how any "support" would start.
Not for now for all except extended Powershell support. We already support that as an optional user shell on macOS or Linux. |
Beta Was this translation helpful? Give feedback.
-
|
I'm not a maintainer, but I would really like this to come to fruition. Having a universal package manager that works on all major OSes would greatly simplify c/c++ development. |
Beta Was this translation helpful? Give feedback.
-
|
Thanks @MikeMcQuaid and @p-linnane for the steering. Two days on, the architecture you sketched is functioning end-to-end and I wanted to share progress while course corrections are still cheap. What changedv1's PowerShell-native reimplementation has been archived. The current
A Windows-native launcher ( Current state (verified on Windows 11)brew --version # Homebrew >=4.3.0
brew config
brew doctor # only legitimate Tier 3 warnings
brew tap euraika-labs/windows file:///<tap>
brew install euraika-labs/windows/ripgrep # built in 3 seconds
rg --version # ripgrep 15.1.0
brew list # ripgrep
brew uninstall ripgrep # clean reversePatch shape20 patches against a pinned upstream Homebrew commit, indexed in
Biggest categories:
Where this sits on your roadmapExplicitly: this is not ready for upstream PRs. Per your feedback I'm still in the "complete the external port first" phase. Specifically:
So this is a status update rather than a PR request. When non-author users + a public release + CI maturity exist, the smallest patches (probably Repo: Euraika-Labs/brew-windows. Happy to take "this is the wrong direction, stop" feedback while course corrections are still cheap. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hello Homebrew maintainers,
I am working on a native Windows prototype that tries to preserve Homebrew
concepts while running directly in Windows Terminal and PowerShell. This is not
a WSL bridge, not an MSYS2 runtime identity, and not a wrapper around WinGet,
Scoop, Chocolatey, npm, or
wsl.exe.I am not asking Homebrew to accept native Windows support today. I am asking
whether maintainers would consider a small sequence of no-behavior-change
abstractions that could make a future native Windows experiment reviewable
without disturbing current macOS/Linux behavior.
Prototype repo:
https://github.com/Euraika-Labs/brew-windows
Current release:
https://github.com/Euraika-Labs/brew-windows/releases/tag/v0.2.3
The current public demo path is:
What exists in the prototype today:
%LOCALAPPDATA%\Homebrew;.cmdand.ps1shims;codexpackage using official OpenAI Windows release assets.I have read the prior native Windows issue:
Homebrew/brew#14197
The concern about Unix/Bash assumptions is valid. The prototype was built to
gather evidence before asking for any upstream changes.
The proposed first PR sequence would be deliberately narrow:
brew.shenvironment contract.Unix behavior.
shims.
The full dossier and PR sequence are here:
Questions:
first PR?
Homebrew/brewuntil amuch later milestone?
maintenance burden?
out of bounds?
I am happy to keep this as a separate prototype if that is the right answer. I
would rather ask early and avoid wasting maintainer review time than open a
large "Windows support" PR.
Beta Was this translation helpful? Give feedback.
All reactions