Remix.run Logo
▲ the__alchemist a day ago

I had trouble reading more than the opening volley of the article due to popups. Am a Discord user, and rust application programmer: What GUI framework are they using? EGUI? GPUI? Something custom?

GPUI from comments? I meant to try GPUI, but backed off after an announcement pending its maintenance would be in question (?) a few months ago, and Zed broadly ending up being a false messiah, for my uses. (Not on the tier of JetBrains IDEs, a bug with a long thread they closed which (still I believe?) causes it to open cached versions of files, then clobber edits made since the cache, e.g. by other programs. I.e. the sort of bug which renders software too dangerous to use. I will not switch to a GUI framework from a group that ignores bugs of that severity reported by many people)

▲earthnail a day ago | parent | next [-]

They use GPUI. Says so on X.

" (And it's not Tauri, it's GPUI, so good guess everyone.) "

▲sphars a day ago | parent | next [-]

Which I believe GPUI is the same framework that Zed (the editor)[0] is using

[0]: http://zed.dev/

▲ethin a day ago | parent | next [-]

The fact they're using gpui is... Bad. Is someone trying to make it integrate with native accessibility frameworks? If not (and if they force the native app on us) this transition is going to lock out a ton of people who use assistive technologies.

▲tensor a day ago | parent | next [-]

Yes, see: https://github.com/longbridge/gpui-kit. I've been following these rust UI toolkits and things like accessibility have consistently been missing. This is the first time I've seen a UI library that appears complete enough to build a real product with.

▲ethin a day ago | parent [-]

Yeah, that's what worries me. Pretty much every Rust UI library I've seen which isn't wxdragon/Relm/GTK lacks accessibility. And most of them don't even have the primitives for it (given that most of them are abandoned).

▲ecshafer a day ago | parent | next [-]

This response doesn't make sense?

GP you asked if there is accessibility P response: yes, here You then respond that worries you and dismiss the proof?

▲ethin a day ago | parent [-]

> This response doesn't make sense?

Apologies. I was noting that the lack of accessibility worried me (well, and weird accessibility breakage too).

▲rat9988 16 hours ago | parent [-]

You are dismissing again the answer you are getting. Why do you think it is lacking accessibility despite using a framework claiming " GPUI Kit ships 75+ documented components and primitives, WebAssembly support, AccessKit accessibility"

▲d1sxeyes 14 hours ago | parent | next [-]

To be clear, GPUI Kit is not the same as GPUI. I am not sure if Discord is using GPUI Kit, but accessibility natively is possible with either.

It's reasonable to be concerned that Discord may not have focused on accessibility while rewriting.

It's less reasonable to be concerned that it may be impossible to write accessible apps using GPUI, as that is now possible (https://github.com/zed-industries/zed/blob/main/crates/gpui/...) although this is a fairly recent addition.

It's also less reasonable to assume that an app made with GPUI Kit will automatically be accessible. You still need to put effort into it.

▲somenameforme 9 hours ago | parent [-]

I don't know why people are ignoring the pink elephant here. For medium scale projects, like a Discord app is going to be, LLMs are now at a superhuman level of competence, including on higher level architectural/structural type decisions. I would be beyond surprised if the rewrite wasn't largely done by Claude (or similar). And in this context accessibility is also just a prompt away, if it wasn't included from the get-go, which it probably would have been.

▲ethin 8 hours ago | parent [-]

Accessibility isn't just something you one-shot. It takes a lot of back-and-forth and testing with actual screen readers/accessibility scanning tools to be good.

▲ethin 8 hours ago | parent | prev [-]

I'm not dismissing it, just uncertain how good it is. Quality over quantity and all that. You can have 75 or 100 or 200 UI components and some can be perfectly accessible while others might not be even things accesskit supports right now. Or Accesskit may only partially support a widget. As I've said downthread, I'm hoping that Discord using a UI toolkit like this will cause upstream effects with respect to Accesskit coverage, so we'll have to see when they start migrating people over to it.

▲marcprux a day ago | parent | prev | next [-]

This is exactly why I started working on Day (https://daybrite.dev) as a successor to Skip (https://skip.dev). It uses platform-native toolkits everywhere, and so accessibility comes for free.

I haven't exactly "launched" it yet, but I'm already shipping apps through the App/Play Stores. See https://daybrite.dev/showcase/ for the 5-minute tour.

▲tommica 17 hours ago | parent [-]

Oh that looks fricking neat! Might wanna port my little diff-tool to this for funsies!

▲nextaccountic a day ago | parent | prev | next [-]

It was real world use by COSMIC that motivated Iced to add a11y support in the first place

So Discord using gpui could mean it may get the needed features

▲Klonoar 9 hours ago | parent | next [-]

COSMIC runs a fork of iced and things don’t make it back upstream nearly fast enough due to the one-maintainer-bus-factor.

You can’t exactly lump them together.

▲tensor a day ago | parent | prev [-]

I don't understand. You can do accessibility with GPUI today. I linked a repo that shows how.

▲ethin a day ago | parent [-]

Yes, and this is good progress (my comment downthread was before I just looked). According to it it uses accesskit, which is quite good already but still in development so accessibility would not be as good as using UIA directly. I am hopeful though that accesskit (which is also used in Godot) will keep getting better and these gaps can be closed.

▲tensor a day ago | parent [-]

Yeah, and big products like discord using them should help push that along.

▲selfmodruntime 5 hours ago | parent | prev [-]

Turns out the browser (electron) wasn‘t always horrible after all.

▲the__alchemist a day ago | parent | prev | next [-]

This is one angle. I do not see it as a deal breaker in the way you phrase it. I suppose we all have our own. If everyone's had to be satisfied, we'd have no software!

I think in the specific case of Discord, I.e. from a big company, I agree they should handle this properly. As a broader standard, I am not as concerned.

▲ethin a day ago | parent | next [-]

This is a dealbreaker for me even if I didn't want it to be. If your application does not either interact with a11y frameworks (UIA, AT-SPI, NSAccessibility, ...) or does not implement an equivalent that communicates with my screen reader, I literally cannot use your application. I could OCR your application, or use AI and have it use your app for me via screenshots, but neither are even remotely comparable to using the native platform accessibility frameworks.

▲veverkap a day ago | parent [-]

Could someone use AI to make the GPUI kit become accessible? You (or someone else) mentioned that it doesn't even have the primitives so is it a non starter?

▲ethin a day ago | parent [-]

No, I mentioned that most rust UI toolkits lack even the primitives. The primitives for even basic accessibility, without accessibility frameworks, would be things like focus events, carrot navigation, navigation in containers such as list/combo boxes, line/paragraph handling in multi-line edit boxes and the like. Adding native accessibility forces you to do a lot of this but just in a different way than routing text directly to a screen reader.

As for me doing it? According to prior comments in this thread it's already done, although I haven't tested it so I don't know how complete it is. Adding UIA support to a framework is different from making that support good (screen readers can be very picky). As an example, say you have a label of an edit box. If you position the label just right within it's parent container a screen reader will pick it up automatically and just announce it as you focus the edit box. But if you don't, all you'll hear is "edit <contents|blank>". There are ways around this (e.g., you can override label detection) but the "ideal" state is that the screen reader picks up that stuff automatically and you just give it the bounds of the various controls and UI elements.

▲Forgeties79 a day ago | parent | prev | next [-]

It’s potentially a dealbreaker for millions of people whether they want it to be or not unfortunately. For them accessibility is not optional or can otherwise be taken as a “wait and see” issue.

▲selfmodruntime 5 hours ago | parent | prev [-]

Neatly phrased comment, where „fuck the blind“ would have sufficed.

▲anthony-eid a day ago | parent | prev | next [-]

gpui does have a11y support for accessibility, Zed just hasn't piped it through yet. I'm also pretty sure Discord is using their own fork of gpui with patches to add any missing functionality they needed

▲ethin a day ago | parent [-]

I really hope Zed gets in the support, I'm curious to try it given all the good things said about it (particularly on HN :))

▲davkan a day ago | parent | prev [-]

Could maybe use the browser client as a workaround.

▲lsaferite a day ago | parent | prev | next [-]

Considering the fact that the gpui code only exists as a crate under the zed repo, I'd say you are correct.

▲porphyra a day ago | parent | prev [-]

weird how the website doesn't have a single screenshot on it, considering it's for a GRAPHICAL user interface. You'd think the examples page would have some screenshots, but in fact it's just example code snippets with no indication of what the code would render as.

[1] https://gpui.rs/

[2] https://gpui.rs/examples/

▲drcongo a day ago | parent | prev [-]

I've built a couple of desktop apps for myself recently using GPUI-kit [0] and it's been fantastic. I'm not a Rust programmer, so leaned heavily on Opus 5.5 for both, but the end result is two apps that are considerably faster than anything I could pay money for, and tailored to exactly what I need.

[0] https://gpui-kit.com

▲thisismyanon2 a day ago | parent [-]

I use gpui-kit because it's far and away the prettiest toolkit for Rust and because the underlying gpui crate provides the nicest abstractions over state and async.

But gpui-kit is slop for clankers. The name change from gpui-component to gpui-kit was messy with lots of dangling links remaining for weeks. What little documentation exists is impenetrable Claude speak or buried in "skills.md" files. The APIs are typically incomplete in a way that a human would've never signed off on. e.g. there's no way to enumerate the backing contents of combo boxes, there are multiple tooltip APIs (but even then only buttons can get tooltips). Mac support is clearly just a checkmark that no human has ever looked at (e.g. the way in which menus are mangled). The examples are unhelpful here because, well, see the second point.

Not a bad showing for what's mostly a one man show. But that raises the second problem. Zed's largely distanced themselves from the open source version of gpui and gpui-kit has one human developer. It's a rickety foundation for a commercial app (which is likely why Discord appears to have forked gpui).

▲drcongo 15 hours ago | parent [-]

Thanks for the extra context, definitely useful to know.

▲slashink a day ago | parent | prev | next [-]

We're using GPUI for this.

▲z0al a day ago | parent | next [-]

Are you using Zed's crate or a private fork?

▲slashink 18 hours ago | parent [-]

Based on Zed's gpui but we have applied a lot of patches so it's basically a private fork at this point. We're hoping to work with Zed to upstream these patches!

▲z0al 12 hours ago | parent [-]

> We're hoping to work with Zed to upstream these patches!

Yes please. The GPUI ecosystem is too fragmented

▲marcprux a day ago | parent | prev [-]

[flagged]

▲superdisk 20 hours ago | parent [-]

Looks like vibeslorp. Just checked the GitHub and I see you created it. Come on man.

▲indemnity 19 hours ago | parent | next [-]

[x] rule of three

[x] smallcaps headings

[x] it's not this, it's that

[x] comically overselling marketing language

[x] detached third person perspective

slop confirmed

▲marcprux 19 hours ago | parent [-]

Absolutely none of those bullet-critiques are accurate.

And do you really think that? Did you look at https://daybrite.dev/showcase/?

▲marcprux 19 hours ago | parent | prev [-]

Funny. Have you ever built anything?

▲superdisk 19 hours ago | parent [-]

Yes, check if you want. I don't even mind AI but snarkily recommending your own project (which has an extremely "default vibed" landing page) as if it's an established tool is bad manners.

▲marcprux 18 hours ago | parent [-]

There was no "snark" intended, Nick. GPUI is simply the wrong approach here. Read the dozens of other comments in this thread regarding immaturity, in-accessibility, and overall unsuitability of that kind of framework for this kind of application. If you have some kind of counter-argument to that, then make it.

How about you step back and take a 5-minute look at the project and check your own snark.

▲yownie 18 hours ago | parent [-]

that's loser talk right there.

▲selfmodruntime 5 hours ago | parent | prev | next [-]

I would also be wary of doing this in Rust because the GUI framework story is very much not finished

▲1024bits a day ago | parent | prev | next [-]

We've been using Iced for Totem [0], our cross-platform collaborative workspace app. Incidentally we took a similar route to what Discord is aiming to do, layering a rust engine with native UI (e.g. Swift on mobile) and it has been going well so far.

The one major concern I have with this framework, and with rust UI frameworks in general, is accessibility. That's something you get for free or nearly-free in other ecosystems but seems to require a fair bit of elbow grease here.

Still, I would wholeheartedly recommend Iced, with the one caveat that it hasn't yet hit 1.0 and version upgrades could be a little painful, and might bring big changes.

[0] https://thinktotem.com

▲hbn a day ago | parent | prev | next [-]

The Verge is paywalled now but the article really doesn't have much content other than "they're working on a Rust client and someone showed an early build using 290MB of RAM"

▲anthony-eid a day ago | parent | prev | next [-]

Could you link this bug report please? I would love to take a look at it to see if i could fix it

▲the__alchemist a day ago | parent [-]

https://github.com/zed-industries/zed/issues/38109

Opened a year ago. Still comments this week.

▲satvikpendem a day ago | parent | prev [-]

> I had trouble reading more than the opening volley of the article due to popups.

Why do people not use adblockers even this late since their introduction?

▲dmix a day ago | parent [-]

iPhone

▲satvikpendem a day ago | parent [-]

There are adblockers on phones including iPhones too.

▲dmix 19 hours ago | parent [-]

I use a DNS one but it's not perfect.

▲asimovDev 15 hours ago | parent [-]

please download uBlock Origin from the App Store