Not my blog, but the author’s experience reminded me of my own frustrations with Microsoft GitHub.

52 points

There are quite a few things I don’t like about GitHub, but calling it legacy makes no sense.

permalink
report
reply
11 points
*
permalink
report
parent
reply
8 points

both of those aren’t websites. I use fork though and had no clue you could do that. I’ve needed that like 10 times in the last week alone haha

permalink
report
parent
reply
4 points

I am about to make you very happy.

alias gl='git log --graph --abbrev-commit --no-decorate --date=format:'\''%Y-%m-%d %H:%M:%S'\'' --format=format:'\''%C(8)%>|(16)%h  %C(7)%ad  %C(8)%<(16,trunc)%an  %C(auto)%d %>|(1)%s'\'' --all'
permalink
report
parent
reply
2 points

I use git log --graph --all --remotes --oneline whenever I need to shell into another computer, but it’s still too barebones for regular use.

permalink
report
parent
reply

For my fellow fish shell users: git log --graph --abbrev-commit --no-decorate --date=format:'%Y-%m-%d %H:%M:%S' --format=format:'%C(8)%>|(16)%h %C(7)%ad %C(8)%<(16,trunc)%an %C(auto)%d %>|(1)%s' --all

permalink
report
parent
reply
4 points

I was thinking “oh, network view, this is gonna be a good example”, but that comparison isn’t.

What specifically do you think is legacy in that comparison? The coloring? The horizontal layout? The whitespace?

The network view lays out forks and their branches, not only [local]/[local+1-remote] branches.

I don’t know what IDE that miro screenshot is from. But I see it as wasteful and confusing. The author initials are useless and wasteful, picking away focus. The branch labels are far off from the branch heads. The coloring seems confusing.

bg looks like the same

permalink
report
parent
reply
2 points

What specifically do you think is legacy in that comparison? The coloring? The horizontal layout? The whitespace?

Note: I’ve changed the first link from https://github.com/cxli233/FriendsDontLetFriends/network to https://github.com/zed-industries/zed/network. Still the same view, but just a different repo to highlight the problems

  1. It’s in a small non-responsive box
  2. Ridiculous spacing
  • If you want to see the commit messages, you either need to hover over a dot which increases visual scanning durations or you need to go to the commits view which only shows the commits on a single branch
  1. It doesn’t show commit messages
  2. It’s scrolling horizontally
  3. Branches cannot be collapsed
  4. Branches cannot be hidden/ignored
  5. No way to search for commits
  6. No way to select multiple commits
  • Which also means no way to diff any specific commits together
  • And there’s also no way to perform an action over a range of commits
  • And there’s also no way to start a merge/merge-request/pull-request/etc… between two commits
  1. No way to sort by date/topologically
  2. Keyboard controls only moves view instead of selecting commits

I’ll stop here at 10 reasons (or more if you count the dot points), otherwise I’ll be here all day.


The network view lays out forks and their branches, not only [local]/[local+1-remote] branches.

Yes, but the others can do that while still being usable.

I don’t know what IDE that miro screenshot is from. […]

It’s gitkraken

[…] But I see it as wasteful and confusing. The author initials are useless and wasteful, picking away focus. The branch labels are far off from the branch heads. […]

The picture doesn’t do it justice, it’s not a picture, it’s an interactive view.

You can resize things, show/hide columns, filter values in columns to only show commits with certain info (e.g. Ignore all dependabot commits), etc… Here’s an example video.

[…]The coloring seems confusing.

You can customise all that if you want.

permalink
report
parent
reply
3 points

Do either of those tools show logs across forks though? The first link is a totally different purpose than the second two.

permalink
report
parent
reply
1 point

The first link is a totally different purpose than the second two.

The first link is going to there because that’s the only graph view that github has.

permalink
report
parent
reply
1 point
Deleted by creator
permalink
report
parent
reply
51 points

I kinda got bored halfway through. From what I gather they’re salty that GitHub is switching to react? If that’s the issue then the headline is rather misleading isn’t it?

Surely legacy software is one that drifts into obscurity through lack of investment which is the polar opposite of GitHub rewriting their entire front end…

permalink
report
reply
28 points

they’re salty that GitHub is switching to react

there’s your tl;dr

permalink
report
parent
reply
4 points

Nah. They’re salty that only the visible sourcecode is searchable. Which is a bug, imo.

permalink
report
parent
reply
5 points

From what I gather they’re salty that GitHub is switching to react?

No, that is not the point at all. React is just an incidental detail she considered while trying to figure out what was going on.

permalink
report
parent
reply
15 points

It’s not an incidental detail when the text is almost entirely around the issue caused by this (mis-)use of react. The author doesn’t give another argument to support their view.

permalink
report
parent
reply
10 points

There seems to be a rando paragraph about AI as well,then it trails off that they’re looking for recommendations for git blame clients. I couldn’t really figure out how it was all GitHub’s fault or where the word legacy fits in.

permalink
report
parent
reply
1 point

There’s a difference between the author being mad that github is switching to react and the author being mad that github is misusing react. It is possible to use react without breaking browsers find in page functionality, which is ultimately what the author is frustrated about.

permalink
report
parent
reply
2 points

Exactly. The complaint is that a basic feature no longer works as expected.

permalink
report
parent
reply
4 points

Crappy old websites that don’t behave properly with my browsers search function sound like legacy though. I agree the headline is worded a little strangely but I can see their point.

permalink
report
parent
reply
1 point

But their issue isn’t the old website. They’re complaining about the new version?

permalink
report
parent
reply
1 point

Yes, but they said it reminds them of crappy old ones.

permalink
report
parent
reply
2 points

That’s another issue though. Will it get better or more bloaty webapp, like modern reddit vs. old.reddit?

permalink
report
parent
reply
35 points

My one complaint: Search code in a repo, and then there is no link to return to the repo home. Back, back, back, back…

permalink
report
reply
9 points

I got caught by this one today. I use the search feature all the time, and I don’t know why I didn’t notice that until today. I found the thing I was looking for, then wanted to go back to issues backlog for that repo, I clicked “Issues”, that just took me to a filtered view of my search term within issues. Deleting my search term didn’t help. I was clicking around for at least a minute before I realised there’s actually no way back to the main repo from that page.

permalink
report
parent
reply
20 points
*

The only issue they mention is browser page text search not working on rendered file view (blame).

The feels legacy conclusion doesn’t make any sense to me.

GitHub is not the only platform implementing virtual scrolling, partial rendering of rendered files. There’s a reason they do that: Files can get big, and adding various code highlighting and interactivity costs performance. It’s not a local code representation and rendered canvas. It’s rendered into a DOM and DOM representation, with markup and attached logic. Which at some point quickly becomes very inefficient or costly.

Not being able to use the browser text search is an unfortunate side effect.

I consider it a worsening modernization/feature addition. That’s the opposite of legacy. We’re moving forward (in a bad way), not stagnating.

When I click Blame, and then press Ctrl+F, it opens not my browser text search but the in-page in-file search. It works for me. (Not that I always use that search or like it.)

permalink
report
reply
6 points

It would certainly help if the GitHub code search wasn’t utter garbage.

permalink
report
parent
reply
0 points

There’s a reason they do that: Files can get big

Oh, boy. Wouldn’t it be great if servers had a way to discover the size of the files on their storage without having to read them?

adding various code highlighting and interactivity costs performance

Somebody, quick, there’s work to be done on language theory so that we learn how to do those things with a cost just proportional to the file size!

(No way! Who is that Chomsky guy you keep telling me about?)

permalink
report
parent
reply
3 points

Dude, his point is that if you did not implement partial rendering on a big file, the browser will have to work extra hard to render that shit. Not to mention if you add any interactivity on the client side like variable highlighting that needs to be context aware for each language… that basically turns your browser into VSCode, at that point just launch the browser based vscode using the . shortcut.

It’s not a matter of the server side of things but rather on the client side of things.

permalink
report
parent
reply
1 point

Don’t really get your point here.

They virtualize the file because it’s big. They know the size.

It does indeed scale with the size of the file. That’s exactly the problem.

permalink
report
parent
reply
14 points

I threw various keywords from that line into the browser’s command+F search box, and nothing came up.

When one clicks command+F while on the git blame, GitHub throws up their own search box. Not rendering everything at once is something a lot of stuff does.

permalink
report
reply
22 points
*

Honestly, the ability to override menu keys is really a long-running flaw in browser UI, IMHO.

Firefox acquired a not-so-obvious way to disable that for a given site:

Click the “lock icon” to the left of the URL in the URL bar. Click “connection secure”. Click “more information”. In the window that comes up, click the “permissions” tab. On that page, there’s an option to “override keyboard shortcuts”. You can click “Block”, and it’ll prevent that particular website from overriding your keybindings.

This had been a long-running pet peeve until I ran into someone explaining how to disable it. I still bet that a ton of people who can’t find the option put up with that. Like, lemmy Web UI keyboard shortcuts clash with GTK emacs-lite keybindings, drives me nuts. Hitting “Control-E” to go to the end of the line instead inserts some Markdown stuff by default.

permalink
report
parent
reply
10 points

fwiw in the case of Ctrl+F, you can usually press it twice in a row to invoke the browser’s search instead. Discourse forums are common use cases.

permalink
report
parent
reply
8 points

Firefox acquired a not-so-obvious way to disable that for a given site

Thank you for sharing that! It drives me up a wall when I tap a standard browser shortcut only to have a web site intercept it and make something else happen instead.

permalink
report
parent
reply
4 points

the ability to override menu keys is really a long-running flaw in browser UI

They have a reason to do so here though. OP evaded their search box and couldn’t find the content. Because it’s not fully rendered. Because code files can get big, and rendering them to DOM with inline highlighting and hover actions, sidebar with infos, and interactivity becomes a performance problem. So they implement partial rendering / virtual scrolling.

permalink
report
parent
reply
2 points
*

So, I’ve got no problem with having page-specific functionality and allocating some kind of space of keybindings to them, right? Like, okay. Say that browsers reserved the Control-Alt prefix for webpages, and then had a list of functions that webpages could implement, and when they do, adding a visible button in a toolbar and having a hover tip to find those. That visible toolbar would solve any issue of discoverability of such functionality on a webpage (and by implementing that in the browser, the browser could choose to have a more-minimal form, like just an indicator that a page supports keybindings.) So the webpage doesn’t have to grab the browser’s keybindings. Or maybe we introduce a “browser button” or something, the way Microsoft did the Windows key.

But what I don’t like is having access to native functionality blocked by webpages. I don’t think that they should have overlapping keybinding space.

Emacs has a shitton of keybindings, users who heavily configure it, and a ton of add-on software that needs keybindings. What they did was to reserve some keybinding space for the editor, some for major modes, some for minor modes, and some for user-specified keybindings. These all don’t collide, so that the user doesn’t get functionality blocked by another piece of software:

https://www.gnu.org/software/emacs/manual/html_node/elisp/Key-Binding-Conventions.html

Don’t define C-c letter as a key in Lisp programs. Sequences consisting of C-c and a letter (either upper or lower case; ASCII or non-ASCII) are reserved for users; they are the only sequences reserved for users, so do not block them.

Changing all the Emacs major modes to respect this convention was a lot of work; abandoning this convention would make that work go to waste, and inconvenience users. Please comply with it.

  • Function keys F5 through F9 without modifier keys are also reserved for users to define.
  • Sequences consisting of C-c followed by a control character or a digit are reserved for major modes.
  • Sequences consisting of C-c followed by {, }, <, >, : or ; are also reserved for major modes.
  • Sequences consisting of C-c followed by any other ASCII punctuation or symbol character are allocated for minor modes. Using them in a major mode is not absolutely prohibited, but if you do that, the major mode binding may be shadowed from time to time by minor modes.

I get that websites need to have keybinding space, and have a legit reason to do so. But I don’t think that they should share keybinding space with the browser’s native functionality. If we want to have a “search” shortcut, hey, that’s cool. But lets leave the browser-native functionality available.

In Firefox, I have:

  • Alt-f for find. By default, this is Control-f, but normally both Control- and Alt- are reserved for the browser, and I’ve swapped the Control and Alt prefixes so that the menu keys don’t crash into the GTK emacs-lite keybindings. Some websites override this, which is really annoying if I’m trying to navigate around using conventional search; in emacs, it’s common for users to use search constantly to navigate around in a document.

  • Slash. This opens a mini-find, because I’m using vimium, but only if I don’t have a text-editing widget active, in which case the OS’s text editor gets it.

So I’ve got two different search keybindings and both are inaccessible at various points, because other software packages want to use keybinding space and there’s no convention for avoiding collisions.

My preference would be that there should be keybinding space for Firefox itself, keybinding space for the OS to use in things like text widgets, keybinding space for the OS (Microsoft dealt with this by adding and reserving the Windows key and mostly using that, except for traditional pre-existing conventions like Alt-F4 or Alt-Enter), keybinding space for OS add-ons, binding space for Firefox add-ons, and keybinding space for websites, and that these shouldn’t overlap (and insofar as possible, and I realize that this isn’t always possible for non-modified keybindings, to not change based on modality, like “this functionality isn’t available if you have a text widget active”).

permalink
report
parent
reply
2 points

Neat! Does that also block right-click capture?

permalink
report
parent
reply
4 points

In Firefox, you can also override right-click capture by holding shift while right-clicking.

permalink
report
parent
reply
1 point

I don’t know; I’d guess not, but haven’t tried to find out.

permalink
report
parent
reply

Programming

!programming@programming.dev

Create post

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person’s post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you’re posting long videos try to add in some form of tldr for those who don’t want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



Community stats

  • 3.5K

    Monthly active users

  • 1.6K

    Posts

  • 26K

    Comments