Zed for Windows: What's Taking So Long?
44 points by WeetHet
44 points by WeetHet
Since someone mentioned forking, I suppose I’ll use this opportunity to advertise my fork of Zed: https://github.com/zedless-editor/zed
I’m gradually removing all the features I deem undesirable: telemetry, auto-updates, proprietary cloud-only AI integrations, reliance on node.js, auto-downloading of language servers, upsells, the sign-in button, etc. I’m also aiming to make some of the cloud-only features self-hostable where it makes sense, e.g. running Zeta edit predictions off of your own llama.cpp or vLLM instance. It’s currently good enough to be my main editor, though I tend to be a bit behind on updates since there is a lot of code churn and my way of modifying the codebase isn’t exactly ideal for avoiding merge conflicts. To that end I’m experimenting with using tree-sitter to automatically apply AST-level edits, which might end up becoming a tool that can build customizable “unshittified” versions of Zed.
No reliance on proprietary cloud services […] Components and features that strictly rely on non-selfhostable cloud services will be removed
No spyware […] Telemetry and automatic crash reporting will be removed
Priority on bringing your own infrastructure
Isn’t your choice of code forge in violation to these principles? This locks code, search, & collaboration behind an account-required, telemetry-collecting, non-self-hostable, proprietary platform to which there are many alternatives. I hope a migration is a part of the long-term goals since developers/collaborators are also users.
Developers and collaborators are also users, many of whom are on github and don’t want to make a new account, again, for another forge.
Github has a lot of undesirable properties that simply do not counterbalance its sheer popularity yet. Free (and fast) CI without worry of taking down some small FOSS group’s CI server is a big one.
Developers and collaborators are also users, many of whom are on github and don’t want to make a new account, again, for another forge.
Interestingly, some other forges now allow login with github. Including codeberg, which runs atop easily self-hostable software. I tend to agree with @toastal here; if I were building a project whose stated motivations include being free from cloud service lock-in and being able to BYO infrastructure, I’d host my primary repo elsewhere. The ability to use github auth should help people who don’t want to make a new account.
Reasonable solution, just requires picking the right forge; but things like CI remain an issue (Codeberg has CI i will note, but their CI capacity is naturally limited because they’re not a big budget tech company that can throw CI as a loss leader)
I at least would feel kinda bad leaning my projects on their CI, but my point of view is that of gamedev where ci means running multiple chonky game instances in parallel.
There is an increasing number than would love to delete their accounts but can’t practically until a majority of projects decide to actually move off (or at least mirror)—or users that never joined, or are blocked by US sanctions—not to mention most alternatives still have MS GH SSO as an option. The fact that this specific editor fork is pushing to be a moral/ethical fork is prime grounds to move the code off of the proprietary platform on the exact same moral/ethical principles laid out—not to mention the target audience that does care about these moral/ethical principles would be the most sympathetic & encouraging to a move.
The fact that this specific editor fork is pushing to be a moral/ethical fork
To be clear, that’s not what the author says, they are explicitly saying that it removes all the features they “deem undesirable”. They aren’t making an ethical or morality argument.
Zed really would’ve been one of the most interesting (probably the most interesting) text editor projects right now if it wasn’t so mired in chat bot garbage.
You can turn it all off now if you want.
I don’t want that garbage in my editor, and I don’t want to use an editor made by a team of people who demonstrates the extreme lack of judgement that’s required to build it all into the editor core. They are not to be trusted, in my book.
I mean just look at how hard that very article is pushing their “Agentic Engineering”.
I don’t want to use an editor made by a team of people who demonstrates the extreme lack of judgement that’s required to build it all into the editor core.
I’d be interested to hear why you think that’s the case?
Or is it just:
AI = Bad therefore Zed = Bad?
noevim (your editor of choice) has many optional ‘AI plugins’. If zed happned to make this a ‘plugin’ would your stance change?
What’s the difference between an (completely optional btw) feature baked into core vs a plugin I can install?
noevim (your editor of choice) has many optional ‘AI plugins’. If zed happned to make this a ‘plugin’ would your stance change?
Yes, I think there’s a huge difference between building AI garbage into the editor itself, and having a plugin ecosystem wherein some third-party people have made plug-ins which add AI garbage.
What’s the difference between an (completely optional btw) feature baked into core vs a plugin I can install?
Two things: 1) I can ignore plug-ins, but I can’t ignore on-by-default features, they have to at the very least be disabled; and 2) it indicates that the project has a set of priorities which is entirely incompatible with my own.
It’s the equivalent of building specialized support for implementing Solitaire into the core APIs of GNU C compiler.
It doesn’t require any moralizing about AI to say why this is bad engineering. It’s just tight coupling.
I’m just curious if there’s concrete proof of that in the source: https://github.com/zed-industries/zed
I’m fine with people being morally against something, but the technical coupling criticism seems pretty weak to me.
Grepping the source for ‘claude’ isn’t proof of tight coupling (if anything the results prove the opposite). But we’ll agree to disagree.
I disagree. Their API layer is too weak for a proper external integration with third-party products, so they just baked support for a handful of specific products directly into the core. A firm stance on keeping explicit support for 3rd party products out of the core as a matter of principle should tend to lead to a core which can serve everyone’s needs with bias or prejudice.
Since 3rd party products will change constantly for reasons outside the Zed team’s control, directly integrating support for specific proprietary products in their core eliminates the possibility of their having a stable core.
I disagree. Their API layer is too weak for a proper external integration with third-party products, so they just baked support for a handful of specific products directly into the core
Except this is possible https://zed.dev/docs/ai/llm-providers#openai-api-compatible
What’s included by default just makes it easier for people to get up and running with popular models, the same way they ship default popular LSP configurations (which you can override).
What’s the difference between an (completely optional btw) feature baked into core vs a plugin I can install?
The time and resources spent integrating slop-coding features into core could be better spent doing almost everything else, like completing support for running the editor on Windows, for instance.
The time and resources spent integrating slop-coding features into core could be better spent doing almost everything else
If the zed team makes $$$ from monetizing AI features that funds the ongoing development of the rest of the editor (which remains completely open source) I count that as a win.
The company behind Zed doesn’t lack judgement (they are not doing bad), but at the same time, they are also not to be trusted to make a good editor in the best interest of the user.
I read the release notes of vscode today: https://code.visualstudio.com/updates/v1_103
It is appalling how many of the points relate to some AI/Chatbot stuff…
Is there any maintained GUI editor not affiliated to AI?
I don’t know.
So far, I’ve been a happy user of Neovim in the terminal, but Neovim’s 3 sponsors are: an “AI terminal” an “AI developer productivity platform” and “AI code reviews”, so I’m sure it’s just a matter of time until I have to go back to Vim… Luckily, Vim has gotten a lot better since Neovim came about.
I have been appalled by VS Code for a long time: it’s so incredibly dishonest how its website describes it as an “open source text editor” (or these days, “The open source AI code editor”) when it’s literally closed source. It’s as if Google had described Chrome as “The open source browser” everywhere just because it’s based on Chromium. But for some reason, everyone has seemingly just accepted that this proprietary text editor is “open source”, and it has become the default “open source text editor”. This new AI push is just yet another (very big and significant) reason to dislike it.
Honestly, I miss Atom. It wasn’t flawless, but it was a pretty decent, user-friendly, cross-platform GUI text editor. I think, in retrospect, the whole Atom -> VS Code migration that followed Microsoft’s GitHub acquisition should be viewed as a big “embrace, extend, extinguish”. And now we’re all using a closed-source AI code editor owned by Microsoft which depends on proprietary Microsoft extensions to be useful instead of the open-source text editor developed by GitHub.
I don’t want that garbage in my editor, and I don’t want to use an editor made by a team of people who demonstrates the extreme lack of judgement that’s required to build it all into the editor core. They are not to be trusted, in my book.
Honestly, I miss Atom. It wasn’t flawless, but it was a pretty decent, user-friendly, cross-platform GUI text editor.
Fun fact: Zed was created by the people who created Atom.
Honestly, I miss Atom.
Always amazed when I read this. I kinda hated Atom and it never solved any problem I ever had.
All purely non-technical reasons aside, VSCode has never let me down in the “I can edit code” category. Not even sure I have it installed on any machine, currently, so I’m certainly not a heavy user.
I miss Atom for entirely non-technical reasons. I miss when the “default text editor” that all new programmers get introduced to, that universities guide people towards, etc. was an open source text editor. I think it’s a tragedy that the open source text editor has been completely displaced by a proprietary Microsoft text editor. Microsoft bought the company which made the open source editor and shut it down in favor of Microsoft’s own proprietary text editor, and that sucks.
I never used Atom myself, I had used Vim for years by the time Atom came about, so I don’t have any strong opinions about the technical aspects of Atom. From a purely technical perspective, I don’t doubt that VS Code is miles better.
So far, I’ve been a happy user of Neovim in the terminal, but Neovim’s 3 sponsors are: an “AI terminal” an “AI developer productivity platform” and “AI code reviews”
Neovim’s main sponsor is its community: as can be seen on https://opencollective.com/neovim , most of the money comes from non-corporate sponsors.
That’s not reflected on its website. The website shows 3 sponsors: Warp, Graphite and CodeRabbit. I think this matters even if the project has other sources of funding.
I’m sure it’s just a matter of time until I have to go back to Vim…
I’ve done just that.
Even started writing some Vim9 plugins (which I enjoy more than Lua now).
Is there any maintained GUI editor not affiliated to AI?
Sublime Text? Emacs? GVim/Neovim?
The “obscure” ones like Lite XL, CudaText, Textadept…?
As a former Vim user and current Neovim user, I think calling their graphical variants “GUI text editors” is a bit of a stretch. Aren’t they essentially just a distribution of Vim/Neovim with a bundled terminal emulator? I don’t know if that’s how they work technically, but that’s the impression I’ve gotten when I’ve tried to use GVim in the past.
I didn’t realize Sublime Text was still going strong, last I looked at them was before Atom came about and, from my perspective, seemed to eat their lunch. I thought they were Mac-only, but it seems they’re not anymore. That’s interesting. It’s still closed-source, but I mean, so is VS Code, so that shouldn’t be a problem for VS Code users who want to look for alternatives. And the complete lack of any mention of “AI” is encouraging.
Thanks for bringing it up!
Sublime Text have always had a Windows build so I’m surprised by the message. Vim doesn’t just package terminal, it actually stuffs the windows into GTK/Motif widgets. Neovim can use QT instead. But yeah, I’ve always used sublime for quick and dirty edits.
You could also look at Kate or Gedit.
Sublime Text has supported other OSes for as long as I’m aware… but it always felt like a Mac application dragged kicking and screaming onto everywhere else. Kind of like that old Safari-for-Windowe port.
As a former Vim user and current Neovim user, I think calling their graphical variants “GUI text editors” is a bit of a stretch. Aren’t they essentially just a distribution of Vim/Neovim with a bundled terminal emulator? I don’t know if that’s how they work technically, but that’s the impression I’ve gotten when I’ve tried to use GVim in the past.
Neovim has a protocol to communicate with the “core editor”, some clients like Neovide render it themselves. This was one of the headline features Neovim had when it first released.
I added GVim for completeness sake, but I guess it depends on the reader’s view of what counts as a “GUI editor”. :)
This prompted me to check out neovide, and it’s honestly pretty nice! Seems more responsive and slightly less janky than neovim in ghostty, and the animated cursor is absolutely bonkers but I surprisingly find it cute rather than annoying.
big neovide enjoyer, personally. i have this in my nvim config to turn off the animations because they get a little much when your eyes are tired:
if vim.g.neovide then
vim.g.neovide_position_animation_length = 0
vim.g.neovide_cursor_animation_length = 0.00
vim.g.neovide_cursor_trail_size = 0
vim.g.neovide_cursor_animate_in_insert_mode = false
vim.g.neovide_cursor_animate_command_line = false
vim.g.neovide_scroll_animation_far_lines = 0
vim.g.neovide_scroll_animation_length = 0.00
end
if anyone’s interested in a more gui (gtk4, specifically)-oriented nvim implementation there’s also neovim-gtk, which uses the same protocol ~FedericoSchonborn mentioned.
Is there any maintained GUI editor not affiliated to AI?
Kate is maintained, ships binaries for Mac, Linux and Windows, and is developed by the KDE project. It’s gotten pretty nice to use, lately. I still prefer vim/neovim, but it’s what I’d hand someone who doesn’t have too much vim or emacs muscle memory and wants a nice text editor.
BABLR/Paneditor are about to explode onto the scene. I’m just finishing up our release blog post, which will be out any day now.
Zed took their experience with Atom and threw all the lessons from its successes into the garbage to attempt to compensate for its failures. I took their experience with Atom and kept everything that made it successful while fixing the things that were holding it back.
In theory I agree with you (and I’m not using zed for this reasoning).
However, it just occurred to me, also in light of their recent announcement of yet more VC money sunk into them) that without the AI crap, it’s impossible to get a team funded to make a text editor, much less an open source one.
So the math boils down to: no AI crap, no zed - certainly not at the current development pace.
This is a systemic issue I also do not know how to solve but here we are. Nobody pays for open source development.
The extreme and seemingly knee-jerk skepticism around anything LLM-related (without regard to any sound reason, usually just pure FUD-based) among SOME in the dev space continues to amuse me.
As is usual with new tech developments, there are always tradeoffs, and some fools will rush in, and other fools will flat-out reject for too long, until some amount of time has passed.
I’ve found that a posture of “optimistic skepticism” is usually the most warranted. Maybe try some of that.
I can tell you that this stuff is not simply going to go away based on your indignation. There will always be “AI-free” editors, and Zed lets you hide all of that completely if you wish.
The rest of us are enjoying outputting the best slop that vibedebt can buy. ;)
I wish there was a config I could set to globally disable people complaining about AI in tangentially related discussions at every opportunity, much like Zed offers the option to disable all AI features.
People won’t complain about AI features in software which doesn’t push AI features.
That will stop as soon as AI stop being shoved (badly) in every single product and increasingly in every aspect of people’s lives.
Vscode has been enshittified by AI, now Zed has “agentic” coding. I wonder if I’d just be better off making my own text editor/IDE at this point.
You don’t have to build your own; you can fork Zed! It’s all open source: https://github.com/zed-industries/zed
As a sibling comment noted, an easier way would be to flip the turn off all the AI features switch if you don’t want to use them, but where’s the fun in that? ;)
I am aware it’s open source. VSC is also open source lol, but I don’t use it. In my opinion the IDE landscape is like this:
So maybe I might make my own editor LOL.
Neovim, (current choice), highly configurable, however has a steep learning curve, you have to spend a lot of time configuring if you want to have a IDE-like experience, but plugins sometimes don’t like to cooperate.
might have to take this opportunity to shill Helix: the editing model is similar to Vim but flips the operation order around (you select and then operate, rather than entering the operation and then the target, e.g. wd
over dw
). but more relevantly, it’s focused around being useful ootb, with a ton of syntax highlighting and LSP configuration ready to go. (I switched to Helix from Kakoune for similar reasons and have really enjoyed the ootb experience…though I am still using the Steel branch to add a custom hybrid file / buffer selector like VSCode’s Ctrl+P.)
VSC is proprietary too. If you want to use their extension marketplace and certain core extensions you need to download their proprietary binary with a bunch of telemetry to boot. If you compile from source, you’re getting a crippled version of the software.
Yeah but the core editor itself is open source, but yeah proprietary binary with telemetry is :/
How is Sublime being proprietary a negative aspect? It’s a fantastic tool with an impeccable decade-plus track record in terms of reliance and performance, yet people still feel entitled to its codebase somehow.
How is Sublime being proprietary a negative aspect?
In an obvious way? For instance, you can’t fix bugs that bother you.
yet people still feel entitled to its codebase somehow
This bad-faith reduction isn’t doing your point any favors.
It’s not about being “entitled” to codebase, but I must say that I feel a larger gravitation towards software which is foss, proprietary software irks me alot, with foss being the definition of collaboration (and also kind of altruistic service), proprietary software is completely closed, can’t know what’s going on, can’t fork it, if it enshittifies there’s no remedy.
Graphics isn’t the only thing that’s different on Windows; there are also unique restrictions on file system operations. In particular, you can’t overwrite an .exe file while it’s running. This meant we needed a new strategy for performing auto-updates. On macOS and Linux, we simply copy the new application bundle into place, overwriting the old one, after downloading an update. But on Windows, we must perform this step when Zed.exe is not running.
IDK if there are any Zed devs here, but you can rename a running exe and drop a new one in.
That absolutely was not historically true: executables were opened in read-exclusive mode (just like everything else), which would prevent renaming. Did that change? It’s been a minute since I did Win32 work
Executables aren’t opened in read-exclusive mode if by that you mean using FILE_SHARE_READ
in CreateFile
. The locking here comes when mapping the file into memory as an executable image. This denies writes and deletes but not moves.
I can’t recall if XP has this behaviour but 7 definitely does.
Well that’s awesome. I wonder if that’s always been true on the NT line. Back when I worked on Fog Creek Copilot, we were targeting Windows 98 forward, and I remember going through the same steps in the article and ending up writing an upgrade trampoline. I was definitely familiar at the time with rename-and-replace from Unix and I know I tried it, but I remember it not working for some reason. It’s very possible it was the classic Windows variant that was the issue.
Of course that will go poorly if something happens between those two steps.
But maybe you could write a startup script that just tries to load the main name then the backup name?
Even on the other platforms atomic rename should still be what’s actually happening, you don’t want to actually open the file and write over it because the running instances mmap it and actually overwriting the contents would cause problems
for anyone interested in starting this kind of work now: SDL3 has a new (~january) GPU API that wraps d3d12, vulkan, and metal
you still have to compile shaders for each target, and it’s only got vert/frag/compute shaders (no raytracing, mesh shaders, or the old geometry pipeline), but that should be totally fine for this sort of project
the main thing that would be missing is the glyph rendering. you’d have to roll that yourself or find a library
Do you have and idea how hard would it be to add raytracing/mesh shaders? How fixed/hard to tweak is the api abstraction in SDL3?
they don’t give you an escape hatch to the underlying API, so you’d presumably have to fork/vendor SDL in order to do it. (or do some pointer casting and hope they don’t change the implementation)
i haven’t wanted to do it, so i haven’t looked into how much of a hassle it’d be. it seems like a fairly thin abstraction, so it might not be that bad
The amount of things they were apparently surprised by gave me a good chuckle and I’m just someone who occasionally does some dev work and rebuilds on windows (and hates it with a passion).
Also kinda wild how many layers you seemingly need to touch to create an editor that’s not just reusing existing 2d parts of the OS windowing toolkit.
A fun thing with current builds of Zed for Windows is that at least on my Danish keyboard it is impossible to type }
and only }
you can happily type {
for example. This is a bit annoying when you are writing code, but I guess it is something that will be fixed at some point.
Has Zed finally fixed the font rendering issues? The last few times I’ve tried it, the font rendering ignored all system settings and looked totally atrocious on every platform. For a text editor, that is a dealbreaker to me. Something about fonts in Zed is just completely off and I don’t understand why they don’t use the font renderer(s) that are standard on the corresponding platforms. It’s jarring.
They’re using a GPU accelerated rendering library that doesn’t match platform form rendering yet. It looks pretty good on 4K displays and extremely blurry on everything else. I’ve been following this ticket for about a year.
As Zed’s biggest competitor, they are setting money on fire at a rate that blows me away. They’re doing all the x-plat work of making a browser, but at the end they won’t even have a browser. It’s like writing a whole browser and supporting it on every platform forever just to be able to render one website…
OK maybe I’m a bit slow, but I honestly don’t know what you want to say. Are you suggestion that they are doing most of the work necessary for a browser, because they are writing operating system specific gui-renderer that use the GPU? Am I misinterpreting what you are saying?
I recommend not engaging with conartist6 – he tends to vague-post about some revolutionary thing he created, which wastes people’s time
And honestly I think it has added up to a lobst.ers ban
e.g. asking for honest feedback here, and then continuing to be a “crank”
https://lobste.rs/s/viwe6p/open_source_can_t_coordinate#c_rretnt
https://gist.github.com/matklad/236b0be8822eedf3f96ad73783d8d7aa
To compare, I rebuilt the IDE experience in a browser, like they say is impossible to do well. So a huge percentage of their energy goes to platform support, while none of mine does.
Ohhh. So you are building either a web based editor or on something like electron. That makes your comment clearer, thanks.
But using a browser or electron or similar for a text editor is a hard no. Sublime and zed have shown me how fast a GUI browser can feel and the experience is much better than any “browser-based” alternative that I ever tried. I think they learned the right lesson from atom (you can ponder if the AI integration is right, but that’s not a lesson they took from atom)
I am indeed! My architecture is not like any that has come before it though. For example I invented a new core iteration protocol for JS just to squeeze every drop of perf and abstraction out of it that I needed. You might suppose that in choosing web I gave up on the idea of an editor with lightning-fast responsiveness to user input, but you would be incorrect.
The difference is in how my editor is fast. Zed is fast because it has insane throughput. For example Zed’s renderer does tons of needless recomputations, but it does them very fast because it’s close to the hardware. I write my logic at a much higher level making it have much lower throughput, but my tools can still feel just as good to use because I’ve focused my efforts on incrementality: doing or redoing the absolute minimum amount of work necessary.
Zed is fast because they’re writing their own shaders to render everything at 120fps instead of building an editor on top of the browser platform. “Needless recomputations” sounds like speculation to me instead of an actual bug report. You might be able to achieve similar performance using WebGPU, but you’re very much underestimating the lessons they learned from Atom.
The problems that kept Atom from being performant are very real, but had more to do with the way that it used Electron than it being impossible to write 120-fps-capable code for the web platform.
In particular Atom’s slowness was caused by its state layer Superstring, implemented in C++. Superstring is fast code written in a fast language, so how could it be slow?
For the same reason it’s slow to do a ton of DOM manipulations in JS: the script/native barrier is actually quite expensive to cross, like a long bridge you have to drive across to get between islands. Generally we deal with this by trying to minimize the number of times we need to cross that bridge. For example React’s Shadow DOM was a revelation for precisely this reason: it did the bulk of its work in JS-only code, and then only interacted with the DOM APIs once it had figured out the minimal number of DOM operations which were necessary.
VSCode faced a similar long-bridge problem with its state layer in C++ and solved it the same way as React: by moving as much of its state layer as possible to JS so that everything could “be on one island together” and again eliminate those costly bridge trips. They wrote about this at length here: https://code.visualstudio.com/blogs/2018/03/23/text-buffer-reimplementation
See also: https://lobste.rs/s/ytjc8x/why_i_m_skeptical_rewriting_javascript
I’m sorry, who exactly is “Zed’s biggest competitor”?
I recommend not engaging with conartist6 – he tends to vague-post about some revolutionary thing he created, which wastes people’s time
And honestly I think it has added up to a lobst.ers ban
e.g. asking for honest feedback here, and then continuing to be a “crank”
https://lobste.rs/s/viwe6p/open_source_can_t_coordinate#c_rretnt
https://gist.github.com/matklad/236b0be8822eedf3f96ad73783d8d7aa
I would argue most strongly against a ban, crank though I am.
Look I’ve been in a place multiple times where I’ve had a set of out-there ideas very different from the status quo, sounded like a crank for a while, but then delivered. I learned that you’ve got to find MVPs people can work with before they’re going to believe you.
The number of upvotes your comment is getting my is convincing me that I should seriously rethink my approach to interacting with people on this site. But I still don’t want to be banned. I am here advocating for change in good faith, and I take all the feedback I receive and incorporate it into my work. Anyway, I’m gonna stop commenting here for a while as a kind of self-moderation since I think I need a bit of a cooling off period.
Myself, Conrad, and my co-founder Stirling, together Silphium Labs. We’re building the editor Paneditor to compete with Zed and VSCode, and BABLR is a direct response to Tree-sitter. I tend to be a bit cryptic because I can afford to be as I’m in a commanding technological lead over them.
Where they’ve chosen to accept the status quo and additively build on top, I’ve chosen to try to shatter the status quo and try to refactor and experiment towards the creation of a radically simpler system, at which I have succeeded.
I’m not naive either. I have built datacenter infrastructure for Facebook. In my career I’ve reached the rank of Principal Engineer as a frontend dev. I’ve sat down to lunch with Nathan Sobo in Boulder where we both live and I know for sure that he doesn’t see a flicker of the potential I see for the future.
This comment pairs well with your user name. Fast talking, bold claims, name dropping miracle cure peddling. I’m not making any claims here, just commenting on style.
I sound confident because I am confident. I don’t know how else to say it except that when you’ve done the work and you meet someone who has not, you know. Had the name since I was 13 and signed up for Neopets
It’s all open work. Go check it out! https://discord.gg/NfMNyYN6cX and https://github.com/bablr-lang