tools/guis: retire the curated third-party GUI list#2179
Conversation
In Git's early days, when the command line was a real barrier to adoption and third-party clients were scarce, this page served a genuine purpose: it was often the first stop for users looking for a friendlier interface. That world is gone. Git integration is now ubiquitous; virtually every major IDE ships with it, and one cannot credibly release a developer tool without it. The list, meanwhile, has grown well past what anyone is actually curating. Entries are not vetted for quality or maintenance, and the page has increasingly been treated as an advertising surface by GUI authors angling for placement. Presenting an unfiltered wall of options is arguably worse than presenting none at all: it implies a quality bar that no one is enforcing. The per-platform stubs under content/tools/guis/ are kept deliberately, so that inbound links to /download/gui/<os> and /download/guis/<os> continue to resolve; the ?os=<os> query string is now a harmless no-op on the new description page. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Only the retired list on /tools/guis ever invoked this shortcode. The page no longer does, and nothing else references it. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
data/guis/ held the metadata (name, project URL, platforms, license, thumbnail path) for the entries the retired list used to render. With the list gone and the shortcode that consumed it removed, these files serve no purpose. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
static/images/guis/ held the 588x332 thumbnails referenced from the per-client YAML files removed in the previous commit. Nothing else references them. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
The Downloads.filterGUIS / observeGUIOSFilter / observePopState paths existed solely to power the Windows/Mac/Linux/Android/iOS filter bar on the retired list. With that UI gone, filterGUIS and the helpers it called (getOSFromQueryString, getOSFilter, capitalizeOS) have no callers, and the observePopState indirection via onPopState (plus the module-scoped popped/initialURL state it read) becomes dead too. Downloads.init now only wires up postProcessDownloadPage, which handles the /downloads pages proper and is unrelated to the GUI list. DownloadBox.init keeps its per-OS #download-link rewrite (that button still exists on the Install pages) and drops the parallel #gui-os-filter attribute writes that targeted an element the new page does not render. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
ul.gui-thumbnails (in lists.scss) styled the thumbnail grid on the retired list, and a#gui-os-filter (in typography.scss) styled the "Only show GUIs for my OS" toggle that used to appear on the download page for readers on a detected platform. Both selectors are dead now that the list, its markup, and the JS that toggled the filter are gone. The shared img/margin block in lists.scss stays as it was, now on ul.video-thumbnails alone. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
The "Adding a new GUI" walk-through, the accompanying "To add new GUIs: data/" pointer in the directory-purpose list, and the stale /content/downloads/guis/ entry in the sparse-checkout example (the page moved to content/tools/guis in 0f8c255, "tools: move GUIs to tools section", 2025-09-29) no longer describe the repository. The list they targeted is gone. Assisted-by: Opus 4.7 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
The homepage Tools tile now advertises what the section still curates.
The parallel masthead sentence ("Git ... has a huge ecosystem of GUIs,
hosting services, and command-line tools") is intentionally left alone;
it is a general statement about the ecosystem, not a claim about what
this site catalogs.
Assisted-by: Opus 4.7
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
|
what motivated this change? (it seems reasonable, but what made you think of doing it now?) |
@jvns There was a recent flurry of PRs to add new GUI clients, most of which I never heard of...
So I took a look at the current list of GUIs:
I commend every person who can make any decision based on this long list. In other words: I find it quite useless, as there is no unbiased comparison, no guidance as to what tool might be the best-fitting for anyone's use case. |
|
I agree the list of current GUIs is a little hard to use. That said, this "let's try to curate a list of links to everything relevant" feels very early-2000s in a way that I find kind of nice. I appreciate a manually curated list even if in 2026 that list has become impossible to curate. How about (for now) just replacing "If you want to add another GUI tool to this list, just follow the instructions." with "This list is closed to new submissions"? Then it wouldn't require ongoing maintenance, and we could decide later how to handle it. (optimistically, maybe the explosion of new LLM-generated tools will settle down in 5 years or something) |
@jvns but I fear that it does, actually, already require maintenance. Have a look at giggle and Aurees, for example. They are no longer under active development, yet they are in the list. How is this useful? Vershd points to GitBreeze and therefore needs updating (or removing, given that GitBreeze has its own entry). https://gitviewer.com/ and http://gitdrive.com/ do not resolve anymore. The commandgit.com domain seems to be up for sale. In other words, nobody takes care of this list. Such a list is worse than useless, it is actively advertising tools that should not be advertised. Note: I am not volunteering to take care of this list, hence my proposal to simply remove it. |


The
/tools/guispage has outlived its usefulness. When Git was young it genuinely helped newcomers escape the command line, but today every major IDE ships Git integration and the curated list has decayed into an unvetted grab-bag that a handful of vendors have started treating as free advertising. Commit 1 lays out the full argument; this series removes the list and all the machinery that fed it.The whole series is deployed for review at https://dscho.github.io/git-scm.com/, so the new page and any of its historical URLs can be clicked through in place.
One invariant is worth flagging, given that the diff touches
data/,static/,layouts/,assets/, andcontent/: every URL the retired list ever served still resolves. The per-platform stubs undercontent/tools/guis/are kept (the?os=<os>query string is a harmless no-op on the new page), and everyaliases:entry survives. Hugo reports 362 aliases both before and after the series.