Goal
Publish both Homebrew casks — ksail (CLI) and ksail-desktop (GUI) — to Homebrew's official homebrew/cask tap, so users can brew install --cask ksail / ksail-desktop without tapping the third-party devantler-tech/homebrew-tap first.
Scope decision: everything ships as a cask to homebrew/cask. We will not publish anything to homebrew/core (no formula). homebrew/core requires building from source under a DFSG/OSI open-source license, which KSail's PolyForm Shield 1.0.0 (source-available, non-compete) does not satisfy — and we are not relicensing to pursue it. homebrew/cask imposes no license restriction, so it is our only official target, for both artifacts.
This is a tracking issue. We cannot submit yet — see blockers below. Revisit when the criteria are met.
Current state
Both ship as casks to devantler-tech/homebrew-tap and the release pipeline drives them to merge automatically:
ksail cask — .goreleaser.yaml (homebrew_casks:), a binary-only cask (binary "ksail", macOS + Linux tarballs)
ksail-desktop cask — .goreleaser.desktop.yaml, a GUI cask (app "KSail.app", macOS arm64)
.github/workflows/cd.yaml homebrew job — promotes both draft cask PRs and merges them post-publish
The destination changes (third-party tap → homebrew/cask); the artifact shape does not — both stay casks. Nothing becomes a homebrew/core formula.
Blockers
1. Notability — blocks BOTH (the gating blocker)
Homebrew rejects "obscure" submissions. Because we are the project maintainers, the self-submission (3×) thresholds apply — meeting any one clears it:
| Metric |
Self-submit threshold |
Current |
| Stars |
≥ 225 |
147 |
| Forks |
≥ 90 |
10 |
| Watchers |
≥ 90 |
2 |
We currently meet none. (A non-affiliated community member could submit at the lower 75★ / 30-fork / 30-watcher bar — 147★ would pass — but that cannot be self-driven.)
2. ksail CLI cask — binary-only-cask policy risk
homebrew/cask policy says an open-source, CLI-only cask (uses only the binary artifact) "should be a homebrew/core formula instead." Our ksail cask is exactly that shape (binary "ksail"), so reviewers may push back and try to redirect it to core.
Our position: core is off the table — PolyForm Shield is not a DFSG/OSI license and we are not relicensing — so the CLI cannot become a core formula. We will therefore pursue the ksail CLI as a cask on homebrew/cask, making the case that, since a core formula is impossible under our license, the binary cask is the only viable official-tap form for it. If reviewers ultimately reject the CLI cask, the fallback is to keep it on the third-party tap (we do not relicense as a workaround). ksail-desktop (a real GUI app cask) is unaffected by this policy point.
3. ksail-desktop — code-signing / notarization
The desktop cask strips quarantine on install (xattr -dr com.apple.quarantine, .goreleaser.desktop.yaml) because KSail.app is unsigned and un-notarized. Cask reviewers flag apps that don't pass Gatekeeper. Before submitting, sign + notarize the .app (Apple Developer ID) so the quarantine hack is unnecessary.
Acceptance criteria (revisit when all true)
References
Goal
Publish both Homebrew casks —
ksail(CLI) andksail-desktop(GUI) — to Homebrew's officialhomebrew/casktap, so users canbrew install --cask ksail/ksail-desktopwithout tapping the third-partydevantler-tech/homebrew-tapfirst.Scope decision: everything ships as a cask to
homebrew/cask. We will not publish anything tohomebrew/core(no formula).homebrew/corerequires building from source under a DFSG/OSI open-source license, which KSail's PolyForm Shield 1.0.0 (source-available, non-compete) does not satisfy — and we are not relicensing to pursue it.homebrew/caskimposes no license restriction, so it is our only official target, for both artifacts.This is a tracking issue. We cannot submit yet — see blockers below. Revisit when the criteria are met.
Current state
Both ship as casks to
devantler-tech/homebrew-tapand the release pipeline drives them to merge automatically:ksailcask —.goreleaser.yaml(homebrew_casks:), a binary-only cask (binary "ksail", macOS + Linux tarballs)ksail-desktopcask —.goreleaser.desktop.yaml, a GUI cask (app "KSail.app", macOS arm64).github/workflows/cd.yamlhomebrewjob — promotes both draft cask PRs and merges them post-publishThe destination changes (third-party tap →
homebrew/cask); the artifact shape does not — both stay casks. Nothing becomes ahomebrew/coreformula.Blockers
1. Notability — blocks BOTH (the gating blocker)
Homebrew rejects "obscure" submissions. Because we are the project maintainers, the self-submission (3×) thresholds apply — meeting any one clears it:
We currently meet none. (A non-affiliated community member could submit at the lower 75★ / 30-fork / 30-watcher bar — 147★ would pass — but that cannot be self-driven.)
2.
ksailCLI cask — binary-only-cask policy riskhomebrew/caskpolicy says an open-source, CLI-only cask (uses only thebinaryartifact) "should be ahomebrew/coreformula instead." Ourksailcask is exactly that shape (binary "ksail"), so reviewers may push back and try to redirect it to core.Our position: core is off the table — PolyForm Shield is not a DFSG/OSI license and we are not relicensing — so the CLI cannot become a core formula. We will therefore pursue the
ksailCLI as a cask onhomebrew/cask, making the case that, since a core formula is impossible under our license, the binary cask is the only viable official-tap form for it. If reviewers ultimately reject the CLI cask, the fallback is to keep it on the third-party tap (we do not relicense as a workaround).ksail-desktop(a real GUIappcask) is unaffected by this policy point.3.
ksail-desktop— code-signing / notarizationThe desktop cask strips quarantine on install (
xattr -dr com.apple.quarantine,.goreleaser.desktop.yaml) becauseKSail.appis unsigned and un-notarized. Cask reviewers flag apps that don't pass Gatekeeper. Before submitting, sign + notarize the.app(Apple Developer ID) so the quarantine hack is unnecessary.Acceptance criteria (revisit when all true)
ksail-desktop.appis code-signed + notarized (Developer ID), quarantine-strip hook removedksailCLI cask toHomebrew/homebrew-cask(argue the binary-cask case; fall back to the third-party tap if rejected — no relicensing)ksail-desktopcask toHomebrew/homebrew-caskhomebrew/core— no formula, no relicensing of the CLIdevantler-tech/homebrew-tapas a fallback/mirrorReferences
LICENSE(PolyForm Shield 1.0.0)