"GitHub" Is Starting to Feel Like Legacy Software
mistys-internet.website
mistys-internet.website
Actions and Codespaces have been huge and transformative, so it's disappointing that core functionality like code reviews hasn't seen the same level of improvement.
Basic features that Phabricator had nearly a decade ago are still missing: - highlighting copied/moved code blocks - gutter indicators for code coverage - stacked diffs - not collapsing large changes by default (what a ridiculous default! "A lot of code has changed here, meaning it's likely bugs may be here - I'll hide that for you to make your review easier!")
And I don't recall how well Phabricator supported it, but handling rebases sanely by carrying over comments and showing diffs from prior PR versions across rebases would be amazing. The number of times I have to re-review an entire PR in GitHub because it can't show what changed since the last review if the author rebases their branch...
The good news is that many people have built better code review interfaces on top of GitHub. My favorites:
- CodeApprove (I created it, so yeah I like it)
- Graphite
- Reviewable
- GitContext
Check them out! You’d be surprised how much better they are and how quick they are to set up.
Same thing seems to apply to Visual Studio Code. Sure they have a big changelog, but the actual experience of using it feels very much like when it first released.
I strongly agree, and it's weird how much hostility I encounter from folks who think the opposite. There are an endless amount of interesting and/or useful things to learn in this industry; spending time relearning how to do a mundane task in an app I've been using for a decade is a waste.
It's not just "in this industry," the problem is a societal one. It just goes to show you how unwise some people are. They like to "learn new things," so proceed to relearn the same thing over and over. They got brainwashed by the "new is better" meme.
I am sure Github will be around in the decade, but I am not sure at all it will still be everyone's default location to host source code. Which is a pity.
It has great extensions, lets you work on remote machines as if they were local, and supports language servers, notebook interfaces, and all manners of code intelligence.
So many teams with private repos only use GitHub for the basics (version control, access management) and then use third party compatible tools for the rest. Linear for issues, Buildkite for CI, Graphite for code review, etc.
The API allowed me to build CodeApprove (codeapprove.com), which is the code review interface I always wanted GitHub to have. And teams that share my preferences can use it a la carte without losing the rock solid foundation of GitHub.
I know it’s not great that we’re all locked into this platform that is owned by a megacorp that hasn’t always been friendly, but it’s at least a great platform.
Frankly, a lot of it feels like they were trying to deprecate and replace an older system with the shiny new thing, then realized halfway through that they couldn't and now we're stuck with two somewhat incompatible ones for the foreseeable future. They could really use a strong tech lead on this.
For me the API transition is even more bizarre since it’s almost trivial to wrap REST calls with GraphQL.
What it feels like to me is a mounting level of serious technical debt which isn’t being addressed, and if that’s not a sign of trouble in a product like GitHub, I don’t know what is.
Also granular PATs still don’t work everywhere.
But that really is about the management of the re-write, not the tech. Someone at github decided to not render off-screen content. That breaks expectations compared to how it worked before, and that is why it feels like the app is going downhill.
The bigger point being that if anyone is doing a re-write, and trying to match the existing UX... that needs to be a deeper match than just getting the pixels in the right place.
What means you can expect it continuing downhill until somebody higher up acts.
Not using React would be a much bigger performance optimization.
This feels like a quite dramatic framing for a bug that popped up in a very complex piece of software.
Absolutely amazing platform.
In fact, surprised it has remained high-quality even past acquisition and overwhelming adoption. I would expect scope creep to grow unboundedly.
I've been bitten by this one before as well. Looking at the files tab of a pull request, I hit ctrl-f and started typing the name of a file I knew was part of the PR, and...nothing. No hits. Couldn't find it.
It wasn't until I scrolled down a little bit that the JS on the page loaded more of the diff and THEN the file I was looking for appeared in the list and could then be clicked to scroll to that file.
This kind of lazy loading saves system resources for both client and server, but reduces usability.
The complete source file is likely a tiny fraction of the size of the React gunk to show it.
It's more they're trying to limit DOM size than download size, with a virtual view. And, unfortunately, HTML virtual views break things like find-in-page.
It's not always the most scalable approach, but I like the DTTCPW "dit-ka-pow": the Dumbest Thing That Could Possibly Work.
I use GitHub because it's still the best option, by quite some margin.[1] But I also think it has stupid bugs (that sometimes take ages to fix), some misdesigns, and at times complete misfeatures.
For example if you have a light colour scheme the GitHub actions log is shown as fairly low-contrast dark. This is quite unreadable for me; there's a reason I use the light theme. So I need to open the 'raw log' and check it from there. Is this doable? Yes. Do I absolutely hate having to use GitHub Actions because it's just such an annoying workflow? Also yes.
GitHub discussions is borderline useless. Try commenting on a larger thread; you'll struggle finding your own comment and seeing if anyone replied. Making a conversation UI that's more confusing and worse than Twitter is quite the achievement, but GitHub pulled it off.
Some of this is just mystifying; these are not new features, and pretty low-hanging fruit. Just like how the back button behaviour was just broken on issues for like half year or longer until they finally fixed it.
[1]: I haven't evaluated Gogs/gitea/Forgejo in a while though. Also the entire double fork thing is somewhat unfortunate.
The amount of regressions in modern frameworks can be staggering at times. Personally I would be embarrassed to work on a well resourced project that could handle such basic tasks, but I'm sure the redesign that introduced this regression was done with all sorts of buzzy frameworks and patterns that look great on a resume.
I've tried reporting some really obvious and annoying bugs to GitHub, and they even never got fixed, took months to get fixed, or got fixed and then broke again a while later. I stopped bothering.
GitLab is still tons worse, so there's that.
As for React, unfortunately there is a contingent of frontend developers who seem to think that everything must be React, that React is the only possible answer, and everyone not using React is a decrepit developer and probably a decrepit human being and quite possibly a registered nonce, and will generally just forever bang on about React until the entire world has converted to React. Your frontend will be assimilated.
React is not the only tech where this is a problem, but it is probably among the more frustrating because as a user I don't really care what language or database you use as I typically don't really interface with it, but I do interface directly with your frontend.
You’d need to some pretty serious “desktop style” (hate that phrase) UI complexity to demand React and I’m not fully seeing where GitHub needs that.
Maybe they want to make GitHub like VSCode in the browser?
It already is. Hit the “.” key in any repo and it literally opens the repo in VS Code in your browser.
They'll go and 'modernize' it, making it some nasty 10x slower and more bloated webUI, and move all the buttons and URLs about just for the sake of it.
One exception I have is for code reviews, arguably its most important usecase. Once there’s a little back and forth going on and a few rounds of things being fixed it becomes really hard to find a list of the comments. Maybe I’m just missing it somewhere but spread in the conversation tab it’s impossible to find things.
I’ve resorted to a couple of scripts that pull all the threads down into a file I can open in vim. Then I have a shortcut for jumping to the corresponding location in the code. Works well, but seems really unnecessary.
I don't exactly what you want, but if you want a better look of git blame, git show, git diff and so on I suggest delta. Delta formats the output of those git commands so you can see their output in prettier way. You can also use it as a human-readable diff replacement. More info: https://dandavison.github.io/delta/
However, even though git blame (and its graphical interfaces) is a quick and easy tool, it has some problems, and Git has better tools for code archaeology. Check this for more info: https://news.ycombinator.com/item?id=39877637
GitHub Actions are a major part of that. Codespaces, a solution for Mac CI, that you automate so much, store secrets, drive not CI but CD straight from GitHub now, etc. It's evolved a ton. Then you have the other things they are doing as company with copilot and vscode (and formerly atom).
Sure, code search is only moderately better, and maybe some of the core git features aren't getting as much razzle-dazzle in the UI, but it's evolved a ton.
Just hire someone who worked for Google and copy their internal code search.
(Preview available here: https://source.chromium.org/)
Technical caveat: To work effectively, it needs to be able to compile (parse into an AST) the code, which for many GitHub projects is challenging. I'd bet they could easily get to 80% compilation rate though and then use dumb text search on the rest.
However, even if it doesn't work, the server will send the JSON as a part of the HTML file, which contains all of the relevant data, so I wrote my own script which is much shorter and much faster than those in GitHub, which also avoids needing extra requests to download the scripts.
Also, it does support the git protocol so that can still be used, and there is also the API and fortunately it has good documentation, and that does work without JavaScripts (documentation should always be made to work without JavaScripts; if your web site has documentation and does not work without JavaScripts, please correct that, even if there are valid reasons why the other files might not work without JavaScripts (which is uncommon, because usually it is for no good reason)).
Still, it isn't very good that they have to do that; they should allow to design to work without such a mess. (How they describe in this article, it does have the problems described there and more; this is because of the messy of WWW, but they could avoid using much of the newer stuff, and make it more compatible and improve accessibility and avoid many problems where they need to add considerations that should not even be necessary to consider if it was designed properly (since then the client would be able to handle it automatically according to the user preferences, without needing to be told by the server).
Is a bit ironic to state given their blog design is reminiscent of OS X ‘brushed metal’ theme from 24-years ago
https://en.m.wikipedia.org/wiki/Aqua_(user_interface)#/media...
UX is about more than how something looks visually - equally (or more) important is how it behaves, how the user interacts with it, and how it gets out of your way and lets you do your actual work (or doesn't)
But it's the author who is implying that "legacy = bad"
Note: I genuinely love Windows 2000 UI/UX (and wish it still existed today)
My point is, it looks like the author found something that works... for over a decade and well. They wish GitHub would 'just work'
Whilst I do get the _motivation_ behind collapsing large files in diffs, because you want to keep the number of DOM elements low, come on... you really _cannot_ hide the lion's share of changes in the PR and get away with it. At least make the collapsed files stand out more so you don't actually miss them when reviewing. Or, I guess you didn't want me to expand them, or you did all that collapsing effort for no reason. So what was the point again?
Org gists were proposed like 10 years ago, but still not in place. Seems straight forward enough...
Not always legacy stuff means it bad or should be avoided. Actually, most of the time its kinda other way around. It means its stable and just helps you get the job done. The balance between legacy and progress is not that obvious imo.
> I’ve seen a lot of tools hit a plateau.
I consider that the ideal state, for development platforms. Constant tweaking can cause really big problems (which actually sounds like what happened, here). I have had Xcode fart on me, in a big way.
It certainly _seems_ like the GitHub interface should feel more like an 'app', and less a 'site'. Or just me?
I am just a data set of one, but I disagree. Github the website has worked pretty great for well over a decade at this point. As the author of the post says, it is more recently that some cracks have started to show.
It's not so much that it isn't an app, but that many of its goals should be similar to browsers.
People have used them in cons whereby they clone a legitimate project, add a backdoor, then buy the stars and SEO it to get people to clone the bad repo
As for the Ctrl+F issue, I could see that rendering giant files with syntax highlighting can tank performance on older computers, and that they're trying to fix it for people who use Github (on web - remember), thinking that if you need full greppability, you might clone the repo locally.
I don't know, maybe Github is screwing everything up behind the scenes, but this post doesn't make a compelling argument in my view.
Updating both Git and Git Extensions has seemingly fixed it for me, but the issues I was having were sporadic so maybe I've just been lucky
- Annotate for JetBrains
- GitLens for VSCode
- Magit for Emacs
Ctrl/Cmd-F is intercepted on blame/code pages and opens a custom find UI, which honestly seems fine to me. Browser find-in-page isn't meant for code search and it's pretty slow.
Maybe GitHub is switching to React (I don't know anything about that), but React doesn't mandate, or even natively support, culling offscreen content, so I'm not sure what the connection is there.
Wait
I don't think they are blaming react specifically. It is more that for them, it dawned that it might due to a rewrite when they remembered reading the front-end was rewritten in react.
For example, if you merge the middle branch in a stack of branches, gitlab will retarget the higher branches. Github just orphans them.
Am I the only one who is satisfied running `git blame` in my terminal, using `less` as the pager and searching by pressing `/`?
• each hunk has a link to the commit that changed it, as opposed to needing to copy a line’s SHA and then run a new `git show …` command
• each hunk has a link to view the `blame` as of that older commit, as opposed to needing to copy a line’s SHA and then run a new `git blame … path/to/same/file` command
• the code is syntax highlighted by default, without you needing to configure your local Git install to use https://github.com/dandavison/delta
These features lead to a better experience than `git blame`. Various IDEs, editor plugins, TUIs, and GUIs provide similar features.