Gothub: Alternative front-end for GitHub written with Go
codeberg.org
codeberg.org
I get frustrated by pull request tab performance on real Github - those turbolinks are buggy as hell. But I can’t see myself using Gothub because it doesn’t support PRs at all!
Shame, because just the tracking of comments which doesn’t suck would be a boon, to see nothing of seeing what’s actually changed since the last review beyond “this file has changed”
Paying users can turn off the button on PR descriptions (and free users have some flexibility on where it goes). I hope you understand we can't provide the service free and secretly :D
Frustrations with GitHub's PR performance, limitations, and overall clunky UX are the main reasons people choose to use CodeApprove instead.
https://gothub.frontendfriendly.xyz/microsoft/vscode/tree/ma...
I'm probably missing something here - what?
Now, if there were something like this but for Gitlab, whose UI is distractingly slow and just plain weird in a lot of ways, then I'd be very interested.
The same page is perfectly viewable over plain html on gothub[2] though.
Github also seems to be hiding their "Assets" (binaries et al) on the "/releases" page for some projects behind javascript(especially older versions).[3] Something else that wasn't the case about ~1.5 years ago.
Would be great if gothub could unshackle the links to those as well[4], but that doesn't seem to work at the moment[5] .
This project appears to be a more performant(measurably so), more privacy friendly(as Microsoft won't have a record of your interest in certain projects) alternative front-end for "non logged in" github users.
I like it, but it still needs work.
[1] https://github.com/mackyle/sqlite/blob/18cf47156abe94255ae14...
[2] https://gh.bloatcat.tk/mackyle/sqlite/blob/18cf47156abe94255...
[3] https://github.com/mikf/gallery-dl/releases
"Add to" being the keyword there. Not "in lieu of".
You want to add javascript to enhance UI/UX outside the scope of what can be accomplished with plain html? Great!
You want to use javascript to add a feature that simply can't be done over plain html? Great!
You want to use javascript to hide a bunch of text on a public webpage, so those who have javascript disabled on their web browsers can't see the text, and will be forced to enable javascript, just to look at some text on a webpage? Unforgivably garbage design!
I will remind you that github used to work perfectly fine without requiring javascript merely a year ago. At least for basic perusal.
I think it is extremely silly design if I'm required to enable javascript, just to look at some text on a public webpage.
Again, nothing against javascript. But don't make it mandatory is what I'm saying, especially for casual browsing.
If it performance poorly, as with anything else, let's hear it. But I do seriously wonder: Is there a sport in breaking a websites legs and point at it, while it's lolling on the floor?
I am not feeling it.
Reinventing links detracts from the UX. You can't hover over the link and see where the link goes. Modifier keys often aren't respected meaning you can't open a link in a new window/tab with just one click. Fake links also break things like screen readers.
Reinventing the text widget means you're invariably going to miss something. Maybe you'll miss a "power user" feature like keyboard navigation. Maybe you'll miss something esoteric like rendering Chinese characters or find on the page. Maybe you'll break a rarely used feature like scrolling. Maybe you'll just display random characters.
To me it seems like a large part of the pain of requiring javascript is less about breaking nojs and more that devs are using javascript to poorly/partially reimplement key browser features. I'm reminded of the "Just normal web things" post the other day.
In terms of performance, pages were slow to render because Github reinvented the textbox widget. Even searching within the page was fucked because redrawing was so slow. We're talking nearly a second of lag even though this virtualization bullshit was done ostensibly "so that the page is faster to load and snappier responsively".
The UI itself is increasingly cluttered with random widgets. A symbol explorer that cannot cope with non-default branches. A news feed of github.com related news that I can't dismiss. A personalized news feed full of repositories I'm not even remotely interested in. Ads for copilot.
The whiz bang text widget failed to account for multibyte characters. Emoji and non-Latin characters weren't displayed properly, and in one of the feedback threads an end user had to explain how strings work in Javascript.
The site itself is completely broken in the version of Safari that I use. Elements get positioned off the page.
There are tons of visual distractions e.g. that symbol explorer pops up when you click on some symbols, making text selection more difficult.
Keyboard navigation doesn't work (as it's not been implemented in their custom whiz bang text widget). I saw a few complaints that the whiz bang text widget randomly adds parens and indents and becomes blurry while scrolliing (as there are occasionally mismatches between the Github custom whiz bang thing and what the browser does).
The nav bar is a mess. The initial public release even eschewed any branch navigation, so if you scrolled down you couldn't easily jump to another or tell what branch you were on. Now they only hide branch navigation some of the time, depending on which size navbar you're allowed to have at the moment. As you scroll through a page the navbar itself jumps all over the place and changes size a few times.
The hyperlinks generated from Markdown are broken in a variety of ridiculous ways, the hyperlinks from the site itself are often no longer anchor tags (breaking accessibility and common sense).
Like everything else, code search is not branch aware. Given how much Github was hyping up the new search I really hope the ability to search a non-default branch is just hidden. But given how much the Github UX team loves scattering notification badges everywhere to highlight new features, I doubt it. Searching within the page got similar treatment and is more or less incompatible with the whiz bang text widget (Firefox only seemed to find things that were on the currently visible section of the page).
I've no idea if it's related but issue search has become nearly useless (for me). If I search for a term there's an awful good chance it isn't actually used in any of the issues returned.
My favorite comment was this:
https://user-images.githubusercontent.com/24989439/258012882...
For someone locked into a Github workflow, an alternative front end might be a nice thing to have.
I guess. I've felt that Github's UI has been on a downward trend for a while, call it "enshittification" or "feature churn" if you'd like. A few things I can remember now: the redesign of the old dashboard; nothing improved, things just became harder to find, and maybe a designer at Github got a promotion. The dreaded "For you" tab that Github tried to force to be the default for a while. Profile "achievements". The latest changes to the editor/file browser have slowed down my workflows. Ah, and the latest UI refresh that shifted tabs around and forces a *hamburger menu on desktop viewports*.
There's a lot to like for sure; I still prefer Github to Gitlab. But there's also room for improvement, hence why people make these frontends to begin with.
The code div is restricted to something like 50 characters, leading to line wrapping, if the browser window is at a width allowing about 150 characters; huge and unnecessary margins there, particularly awkward for code.
Looks like it may be nice and useful though, especially if it had a working search on top of browsing: GitHub's new search is tiring to use for skimming a new codebase now, and cloning large repositories for such skimming is inconvenient.
[1] https://gothub.frontendfriendly.xyz/microsoft/vscode/tree/ma...
To exemplify this, here's the same markdown from Gitea's home page on both Github and Gothub at the lowest browser zoom (Firefox) that fills the entire viewport.
I've used the GitHub APIs on CodeApprove (https://codeapprove.com) to replace the part of GitHub that bothered me the most: Pull Requests.
> Someone pushed to production. Just kidding, that's probably not what happened
Don't try to be funny in error messages, this is not helpful.
https://gothub.frontendfriendly.xyz/microsoft/vscode/tree/ma...
- It does not display the contents of subdirectories if one is selected.
- Perhaps, add a slash at the end of directory names so that you can tell that it is a subdirectory more easily.
- Is it possible to list the available branches, issues pull requests, forks, etc?
- Can the style be changed? I don't like it to use its own width instead of using the window size.
https://github.com/golang/go/issues/21498
they put this randomly in the middle of the page:
> 456 hidden items
> Load more
you click it, then you get this:
> 396 hidden items
> Load more
seriously, what is this? how is this better than pagination? with pagination, I can see the first page, and if I want to also see the last page (which this UI seems to be trying to do) I just click the link to the last page. what is so awful about pagination that we have ended up with this horrible excuse for a forum?
Yeah, a company that does over a billion API requests per day, they're not going to load 500 comments on a page, if you need that and I don't think you do, use the API, it has pagination...
with pagination, each page has a fixed number of comments, which means an expected amount of memory/CPU/network transfer. with inline loading, everything is loaded into the current page, which means the CPU and memory use essentially become unbounded, so the more you load the slower it goes.
> The last comments are loaded, you just gotta hit the page down key.
that's not how GitHub works. as I mentioned in the previous comment, this hidden comments are in the MIDDLE of the page, so page down doesn't make any sense here.
> The only thing that isn't loaded are the middle comments, and all you have to do there is tap load more comments link.
this only loads 60 comments, so in the example page I linked you'd need to:
1. click load more
2. scroll down until you find the end of the 60 new comments
and then repeat this process 7 more times. with pagination, the page links are always at the bottom, not randomly in the middle of the page, making for faster navigation.
> Yeah, a company that does over a billion API requests per day, they're not going to load 500 comments on a page
no one is asking them to do that. that's what the current system allows for. I am asking for pagination, which would split all the comments across pages, which would only be loaded on request.
load_more?after_cursor
Where do we see cursors? Typically in pagination. So it's obvious if you want to see everything and load everything, you can do so and it's devoid of javascript so you can ctrl-f all day.
https://github.com/golang/go/issues/21498/partials/load_more
You get pagination in both API's, go write some code.
you seem to be making my own point for me. you're essentially saying, the website is so terrible, that users need to write their own frontend to make it usable. I agree!
They aren't even links. They are buttons that trigger JavaScript which makes a network request. That's quite different from an actual link that just loads some html
No thanks. Infinite scrolling is never the answer.
gh issue view 21498 -c
Which loads every comment and gives you grep or rg for your searching pleasure. I hope your life is easier now.Also, Lazy loading is pagination. You're getting the best of both worlds, you're not loading everything, and you never have to go back. I'm not understanding the problem people are having here at all.
you're getting the worst of both worlds. you cant see everything at once, the load more is in a random spot in the middle of the page, and its impossible to load everything at once.
compared to pagination, where you can jump to any random page you want. you just click the page number and boom it loads. I think we are looking at a culture clash, where younger people who dont have any actual experience with true pagination are trying to comment on it. if you had experience, you would know that its worlds better than whatever hellscape we currently have.
They're literally using pagination to display the issues, you can see it yourself. You think I'm a younger person because I disagree with you? That's classic. You're the only one I see complaining, I have no issues with it. If anything it sounds like you don't understand GitHub and you're unwilling to learn anything new or or even try to overcome your old and decrepit ways with tools that are readily available and simple to use. Whatever..., btw I'm well over the hill.
I am not going to prove your own point for you. if you have some link, you should provide it.
> You're the only one I see complaining
ooh yeah brother, great argument:
https://philosophy.stackexchange.com/questions/29811/identif...
> If anything it sounds like you don't understand GitHub and you're unwilling to learn anything new or or even try to overcome your old and decrepit ways
I am willing, I have been using the "load more" interface for as long as its been around. its terrible. from my EXPERIENCE with both systems, pagination is the more pleasant experience. with pagination, you can even link to a specific page, to direct someone to the beginning of an important sequence of comments. you might have this with the new system, but before you know it you're running into a load more again, making Ctrl+F useless.
I don't think most people come across a 500 comment issue and need to
start in the middle.
a.) The threshold for reducing clutter is well less than 500, and comments disappear for a variety of reasons besides. If Github deems a comment irrelevant they'll try to collapse it.b.) Yes, I often want to start in the middle. If I'm searching for a specific error message or class some of the search results include issues where that keyword was only mentioned in a hidden comment.
the gh cli tool
If your site is so awful that you're forced to use the command line to navigate it, something is quite wrong. You're seriously suggesting that it's an acceptable workflow to go from your browser to the command line just to preserve infinite scrolling?There's already an issue search feature on Github, why shouldn't that be improved to return relevant search results?
My solution was to dial back my engagement with github (e.g. using a project's gitweb) and move to a different platform for hosting my own stuff.
Also, Lazy loading is pagination.
No, it's not. Infinite scrolling means you're loading all of the content instead of a page at a time.When I use the search feature for text in the hidden comments, it brings me to that issue. As a pointed out below, you're also wrong and you can easily see that the comments are not loaded, are paginated, and that the loading of more comments only happens when you click the link to display more. The fact that it only displays 60 comments at a time and wont load any additional comments unless you click for more is why it's not infinite scrolling because after 60 comments, you're at the bottom of the page, unless you click, not scroll, for more.
You think GitHub is just a website at this point?
I never said that. I do a lot of work in the terminal so I for one
The cheese stands alone. You're (deliberately?) missing the point. There's nothing inherently wrong with a command line workflow. What's wrong is breaking a workflow (e.g. browser) and then suggesting it's appropriate to simply fall back to the command line for part of that. As a pointed out below, you're also wrong
Well, no. You're focused on the API (which nobody commenting here cares about one whit) and not the interface. While the comments may be loaded in batches they're not paginated within the browser.Look, you prefer the command line and that's great for you. That preference doesn't justify gimping the site.