This VS Code Killer Just Went Open Source (Written In Rust BTW)

Theo - t3․gg
26 Jan 202432:32

Summary

TLDRThe video discusses the open-source code editor Zed, created by the original developers of Atom. It provides a comparison to VS Code, praising Zed's native performance, collaboration features, and UI focus while critiquing its lack of plugin support. The video explores Zed's strengths like git integration and typescript support as well as weaknesses like scrolling jankiness. Overall, it seems impressed by Zed given it doesn't lean on existing work but notes VS Code's ecosystem advantages. It hopes competition drives future innovation.

Takeaways

  • 😀 Zed is a new open source code editor created by the original Atom creators focused on performance and collaboration
  • 👀 It has native-level performance compared to Electron based editors like VSCode
  • 💻 The scrolling, text rendering and git operations feel much faster than VSCode
  • 🔬 It has good TypeScript support like go to definition and intelligent autocompletion
  • 🤝 It has built-in collaboration features like chat, screen sharing and collaborative editing
  • 🚀 The editor is built using their own GPU accelerated UI framework called GPI
  • 🤖 It has AI autocomplete through GitHub CoPilot built-in with no extensions needed
  • 💪 It seems to match most of the must-have VSCode features with better performance
  • 📦 The lack of a plugin system results in hacky workarounds to support things like Tailwind
  • 🔌 Overall it shows promise but needs more maturity and plugin support before mass adoption

Q & A

  • What text editor does the narrator mainly use?

    -The narrator mainly uses VS Code as their text editor.

  • What is the narrator's opinion on the performance of VS Code compared to native editors?

    -The narrator feels VS Code's performance is noticeably slower compared to native editors like Sublime Text and Vim, especially for basic actions like text appearing after key presses.

  • What is Zed and what are its main goals?

    -Zed is a new open source text editor focused on performance and collaboration. Its main goals are to match native performance while providing an extensible plugin ecosystem like VS Code.

  • Why did the Zed team decide to open source Zed?

    -The Zed team believes open sourcing will attract more contributors to improve Zed, and connecting directly with developers matches their mission of building the best editor.

  • What is the GPI library Zed uses?

    -GPI is a GPU-accelerated UI framework for creating high performance desktop applications using Rust.

  • How does the narrator feel about Zed's built-in collaboration tools?

    -The narrator sees potential in the deep integration opportunities but the current UX is rough, especially accidentally starting audio calls by clicking on usernames.

  • What VS Code extensions would the narrator miss if switching to Zed?

    -The narrator would mainly miss the Pretty Typescript Errors and Quick Lint JS extensions which improve error messages and catch common issues.

  • What does the narrator think Zed needs to attract developers from VS Code?

    -The narrator believes Zed needs to focus on UX wins and 'wow' moments that make the editor demonstrably better, rather than just matching existing functionality.

  • Why does the narrator think creators are a good initial target audience for Zed?

    -The narrator argues that by targeting creators and influencers first, Zed can both leverage their reach and get feedback from power users deeply familiar with their audience's needs.

  • What is the narrator's overall assessment of Zed's potential?

    -While not planning to switch yet, the narrator is excited by the innovation happening in Zed and believes the competition will push all editors to improve.

Outlines

00:00

🤓 Explaining shift from Sublime Text to VSCode at Twitch job

The author reminisces about preferring Sublime Text over VSCode when working at Twitch. A coworker introduced the VSCode debugger which helped in testing and shifted the author towards VSCode over time for its utility despite lower performance.

05:00

👨‍💻 Checking out open-source Zed editor for native feel

The author is trying out Zed, an open-source editor aiming to balance native performance of vim with plugin ecosystem of VSCode. It is created by Atom founders and addresses Atom's electron performance issues.

10:01

🔎 Inspecting Zed's GitHub codebase and remix

The author joined Zed last week when they open-sourced it. The team did a rewrite of their core GUI framework. The author shares their motivations for open sourcing Zed and rewriting the code to engage community help.

15:02

😮 Accidentally calling someone in Zed's editor

The author explores Zed's focus on collaboration and tries to create a channel. They accidentally call someone by clicking their name and find the UI confusing overall.

20:03

👍 Praising collaboration vision but critiquing UX

The author has mixed feelings about in-editor collaboration. Appreciates the vision but feels the UX needs refinement regarding accidental calls and security.

25:04

🤔 Critiquing div choice for native UI framework

Analyzing Zed's Rust GPU framework, author is confused by choice of web primitives like divs and flexbox for native UI instead of crafting new native abstractions.

30:04

😊 Thankful for innovation pushes in editor space

Despite issues, the author is excited for more competition and innovation in the editor space. Curious about audience's take on moving beyond VSCode.

Mindmap

Keywords

💡VSS code

VSS code is a source code editor developed by Microsoft. It is one of the most popular code editors used by developers today. The narrator discusses his experience using VSS code versus other code editors like Sublime Text and Vim. He points out some of the advantages of VSS code like its debugging capabilities but also some downsides like slower performance compared to native editors.

💡performance

Performance refers to how fast and responsive an application feels to use. The narrator compares the performance of VSS code to native editors like Sublime Text and Vim. He notes that VSS code feels slower because it is built using web technologies like Electron rather than being fully native. This is a key consideration when evaluating code editors.

💡Zed

Zed is a new code editor created by the original developers of Atom. It aims to combine native performance with the plugin ecosystem of VSS code. The narrator explores Zed through the video, testing its features and developer experience. Zed is presented as an alternative to VSS code that may address some of its weaknesses.

💡collaboration

Collaboration means working together with others on code. The narrator discusses Zed's focus on improving collaboration compared to other editors. Zed has built-in features like chat, screen sharing, and channels to enable better real-time collaboration within the editor.

💡open source

Open source means the source code for a project is made freely available for anyone to use, modify, and distribute. The narrator highlights that Zed is now open source, which he sees as a bold move for a commercial startup. He discusses the benefits of open sourcing Zed in terms of community contributions and extensibility through plugins.

💡Tailwind

Tailwind is a popular CSS framework used by web developers. The narrator tests Tailwind auto-completion and other features related to it in both VSS code and Zed. He points out that Zed had to build Tailwind support from scratch since it cannot rely on existing plugins like VSS code can.

💡plugins

Plugins allow adding new functionality to an editor. The narrator discusses how the lack of plugin support in Zed results in it missing some useful features he relies on in VSS code, like customized error handling and auto-sorting of CSS. Plugins are an advantage of VSS code over Zed currently.

💡GPU acceleration

GPU acceleration uses the graphics processing unit (GPU) for faster performance. Zed utilizes GPU acceleration in its user interface rendering through its GPI framework. The narrator seems interested in this approach for achieving native performance.

💡creators

Creators refer to content creators like video producers and streamers. The narrator argues creators are an important user segment for developer tools, because if the tools meet creators' needs they are more likely to recommend them to their broader audiences.

💡competition

Competition in the code editor space is seen as a positive by the narrator. He argues more competition and innovation between editors like Zed and VSS code will ultimately improve the developer experience and capabilities of the tools.

Highlights

There's a ton of inertia that's a good way to describe it

Zed is trying to find the balance between native performance and a plugin ecosystem

Zed's creators also created Electron to build Atom

They believe open sourcing Zed will make it the best editor

They split the licensing with GPL for the editor and Apache for server components

The scrolling feels a little janky with too much inertia

The git status updates instantly compared to VS Code

They are focusing on built-in collaboration tools unlike VS Code plugins

Targeting creators can help hit product market fit faster

Pretty TypeScript errors and Quick Lint JS will be missed plugins

The auto import ranking is bad and UI shifts annoyingly

No cloak plugin for hiding secrets is concerning

Hardcoding Tailwind support to every language is not extensible

Lack of plugin system makes maintaining things difficult

I'm excited for more competition and innovation among editors

Transcripts

play00:00

VSS code love it or hate it it's become

play00:02

the norm for quite a while now I still

play00:04

remember working at twitch being the one

play00:06

person who just would not give up on

play00:08

Sublime Text when I started writing more

play00:10

unit tests for weird typescript

play00:11

functionality I was introduced to the

play00:13

VSS code debugger by a cooworker which

play00:15

was a huge help in me running the tests

play00:17

and playing with things as I went along

play00:18

and ended up slowly making the shift as

play00:20

a result that all said I missed the

play00:22

performance while I could sit here and

play00:23

defend electron all day I'll admit the

play00:26

performance is something you feel in a

play00:27

text editor while vs code is way faster

play00:30

than Alternatives were like Adam you

play00:31

definitely feel that it's a browser not

play00:33

a native editor and when you use

play00:35

something like Sublime Text or even

play00:36

things like Vim the speed at which a key

play00:38

press results in a key being on your

play00:40

screen it's small but you feel it and I

play00:43

definitely understand why people miss a

play00:45

native IDE this is why I'm really

play00:46

excited to talk about Zed today Zed's a

play00:48

really interesting editor because it's

play00:50

trying to find the balance between

play00:51

native performance you would expect from

play00:53

things like vim and a plugin UI focused

play00:55

ecosystem similar to vs code where you

play00:57

can kind of get the best of both worlds

play00:59

it is not just being cre cre by some

play01:00

random people it's actually being built

play01:02

by the original creators of Adam and

play01:04

those Adam creators didn't just invent

play01:05

one of the first modern text editors

play01:07

they actually built electron just to

play01:09

make atom possible in a lot of ways you

play01:10

can almost see this as an undoing of the

play01:13

damage that electron did where this team

play01:15

wants to make a much better performing

play01:16

editor that doesn't compromise on the

play01:18

user experience the same way other

play01:20

things might do Now Zed is open source

play01:23

this is a huge change that I honestly

play01:25

didn't expect because Zed's a startup

play01:27

they have to make money somehow open

play01:28

sourcing the editor is a bold to make

play01:30

but not only are they open sourcing they

play01:32

actually rewrote most of the code in the

play01:34

process so why the big rewrite last week

play01:37

was my first week at Zed I joined right

play01:38

as the team was preparing for this

play01:39

week's release which they referred to as

play01:41

zed 2 big things in the air this release

play01:43

marks the end of the team's multi-month

play01:44

rewrite of zi framework GPI from V1 to

play01:47

V2 all hands on deck everybody fixing

play01:49

the last bugs polishing Zed and I the

play01:51

newcomer had so many questions why the

play01:52

big rewrite how'd you pull it off what

play01:54

does this get you how do you organize it

play01:56

this is really cool that they're like

play01:58

publishing this type of stuff about why

play02:00

they're doing these bold rewrites and

play02:01

that the whole video is on YouTube as

play02:03

well I'm not here to talk about the

play02:04

rewrite though I'm here to talk about

play02:05

the open source release and actually

play02:07

play with z a bit if you want to hear

play02:08

more about big rewrites like this let me

play02:10

know in the comments and maybe I'll make

play02:11

a whole video just about this rewrite

play02:12

we're excited to announce that Z is an

play02:14

open source project the code for Z SS

play02:16

available under a copy left license to

play02:17

ensure any improvements will benefit the

play02:19

entire Community GPL for the editor a

play02:21

GPL for serers side components

play02:23

interesting that they went with standard

play02:24

GPL for the editor and the Apache

play02:26

modification of it for the serers side

play02:28

stuff makes sense for them to make sure

play02:29

they a business they can sell but

play02:30

fascinating to see this type of like

play02:32

split licensing for a product if you

play02:33

think I should talk more about licensing

play02:35

for open source let me know cuz it's

play02:36

thing I have a lot of weird opinions on

play02:38

they also mentioned the GPI rewrite that

play02:40

they are Distributing as well under

play02:41

Apache so anyone can use it to build

play02:43

high performance desktop apps and

play02:44

distribute them under any license that's

play02:46

huge that's really cool good open source

play02:48

why are they doing this most importantly

play02:49

they believe that making Z open source

play02:51

will make it the best product our

play02:52

mission is to build the world's most

play02:54

advanced code editor and get it in the

play02:55

hands of millions of developers there's

play02:57

a ton of surface area on the platform

play02:59

and will need all the help we can get

play03:01

considering that all of Zed's users are

play03:02

programmers it makes the most sense to

play03:04

open Zed to the maximum pool of talent

play03:05

this is a really good point since

play03:07

everyone using Zed is going to be a

play03:08

developer letting them contribute to it

play03:10

makes a ton of sense makes a ton of

play03:11

sense really cool to see them thinking

play03:13

in this way on a more selfish level we

play03:14

also think going open source will be a

play03:16

lot more fun one of our favorite aspects

play03:17

of software is connecting with people

play03:19

we're not only proud of what we've built

play03:20

but also how we've built it we want to

play03:22

share Zed's inner beauty with all of you

play03:24

and we're confident we'll learn a lot

play03:25

from you in the process to make it even

play03:27

better they're also introducing this

play03:28

idea of Fire hacks where you can hang

play03:31

out with people in The Zed channels talk

play03:33

with other developers people

play03:34

contributing people not and they'll be

play03:35

running Fireside hacks in them where

play03:37

they work on Zed live and a public

play03:38

Channel this is super cool I love these

play03:40

like Community opportunities to hang

play03:42

with people really nice stuff and then

play03:44

they talk about the money aspect cuz

play03:46

this is important too CU they're a

play03:47

startup they need to make money

play03:48

eventually and they say specifically

play03:50

that they strongly believe the best way

play03:51

to build and maintain the world's best

play03:53

editor is by associating it with a

play03:54

sustainable business model it's the only

play03:56

way they can continue to invest in a

play03:57

full-time team to spearhead Dev some may

play03:59

wonder if making it open source

play04:00

undermines that objective but they

play04:01

thought about it a lot and they don't

play04:02

think the openness is at odds with the

play04:04

commercial success rather than selling

play04:05

you a proprietary editor we'd much

play04:07

prefer to sell you services that

play04:08

seamlessly integrate with your Editor to

play04:10

make you and your team more productive

play04:11

said channels is just one example it's

play04:13

free for anyone today but they intend to

play04:15

begin charging for private use after a

play04:17

beta period of experimentation providing

play04:18

serers side compute to power AI features

play04:20

is another monetization scheme they're

play04:22

seeing getting traction and I've seen

play04:23

this more and more with companies

play04:25

recently where they're trying to become

play04:26

a standard first and then monetize later

play04:29

I think it works really well I'm curious

play04:31

to see how it goes for an editor

play04:32

nobody's really tried this at this

play04:33

integration level usually editors either

play04:35

charge or don't make money charging

play04:37

later to make money is an interesting

play04:38

strategy that requires more investment

play04:40

for them to find success but seems like

play04:42

they're building something really

play04:43

special here and I'm excited to see how

play04:44

it goes for them they're not at one

play04:45

point oh yet though so know this is

play04:46

still early but it is a really exciting

play04:48

rewrite I want to play with it so I

play04:49

guess there's nothing else to do other

play04:50

than click this download button so let's

play04:51

do it download for Mac OS one more thing

play04:53

of note at this point in time Zed is Mac

play04:56

only they do plan to support other

play04:57

Platforms in the future but let's be

play04:59

honest with the things that they're

play05:00

targeting Mac devs are going to be the

play05:02

majority of users anyways and they'll

play05:04

certainly be the majority of potentially

play05:05

paying users in the future so as a

play05:07

business tries to figure out if they

play05:08

have something with traction that could

play05:10

possibly make money in the future it

play05:11

makes a ton of sense that they're not

play05:12

supporting windows and Linux just yet

play05:14

anyways here is Zed one of the cool

play05:16

things they actually have a Vim mode

play05:17

built in does that mean this is

play05:18

officially Prime agine approved to be

play05:20

determined I don't have Vim bindings in

play05:22

my head anymore so I'm not going to

play05:24

check that they really thought of the

play05:25

setup process here where you can pick a

play05:27

theme doesn't seem like they have the PO

play05:28

Manders theme I don't know you could

play05:29

install custom ones or not but they

play05:31

don't have my preferred one which makes

play05:32

sense it's a pretty Niche theme so let's

play05:33

go with the default for now choose a key

play05:35

mapping vs code yes please don't make me

play05:37

learn new things it's cool that they let

play05:38

you take the mappings from other

play05:39

programs and the default is vs code

play05:41

where they're just copying the vs code

play05:42

keepy bindings really good idea don't

play05:44

make me learn all these other new things

play05:45

when I'm just trying to play with a new

play05:47

editor and then install the CLI we'll

play05:49

take a look at the upload thing public

play05:50

code base so cool here's our project it

play05:53

is very minimal I've seen people saying

play05:54

that already but I do like how how muted

play05:57

things are I don't love the lack of

play05:59

color in the icons cuz like I can

play06:01

mentally map things when they have color

play06:03

but it's also like almost everything's

play06:05

just TS TS TS TS in blue so how much

play06:07

does that really matter debatable I

play06:09

don't know if you guys know this but the

play06:10

VSS code CLI is slow as [ __ ] so if I

play06:12

type code period we're going to press

play06:13

enter right now and that took like a

play06:17

second plus to switch over I actually

play06:19

have a custom binding that you might

play06:20

have seen me use C that is an alias that

play06:22

just calls the vs code application

play06:25

directly and when I do this instead I'm

play06:26

going to press enter right now it's

play06:28

literally instant and as seems to care

play06:30

about that this lets you load the

play06:32

application way faster and the specific

play06:34

CLI thing they're using to get those ARs

play06:36

and parse them is just not very fast

play06:38

let's start by playing with the hot

play06:40

keys that worked great is there a Hut

play06:42

key for hiding and showing the sidebar

play06:44

command B that's

play06:47

Snappy scrolling feels a little Jank I

play06:49

don't know how much this will come up

play06:51

like in the recording because I'm

play06:54

recording 30 FPS even though my screen's

play06:55

running

play06:57

120 but the scrolling feel

play07:00

less good this is actually something I

play07:01

noticed when I first played with Z is

play07:04

that scrolling felt a little

play07:07

weird yeah a ton of inertia that's a

play07:10

good way to describe it Vim Tim in chat

play07:12

so love that a vimmer has opinions on

play07:14

this one thing that really annoys me in

play07:15

vs code is when I'm trying to delete

play07:17

like a section of text so let's try and

play07:19

delete here up to functions CU When I go

play07:22

here it Scrolls too fast this is way

play07:25

better for that already it's a small

play07:26

thing but these are the things I want to

play07:27

test CU I want to see what my day-to-day

play07:29

is like in this editor let's say I want

play07:30

to delete everything from line 122 to

play07:33

like 200 something let's say to 205 how

play07:36

easy is it for me to get to exactly

play07:38

205 that was pretty easy versus in vs

play07:41

code we'll start at 122 and I want to

play07:43

get to exactly

play07:45

205 and it Scrolls way too fast no

play07:48

matter how far you go and it's a good

play07:49

bit harder I've had a lot of annoyance

play07:51

with that why not scroll down to the

play07:52

line and shift click cuz I don't think

play07:54

that far ahead probably a good call oh

play07:56

look at that they light things up bright

play07:58

green when there are changes in git okay

play08:00

am I crazy or does that icon look like

play08:02

Source control to you cuz this icon

play08:03

looks to me like Source control not like

play08:05

files I might be insane but that looks

play08:07

like a source control icon with the

play08:09

branching how fast does the git update

play08:11

that's a good question too and let's see

play08:13

what

play08:14

happens that was instant that was

play08:17

instant good [ __ ] yeah vs codes is not

play08:21

anywhere near that fast now all these

play08:23

things are staged you can't even see it

play08:24

in vs code commit DM init

play08:28

commit and vs code doesn't update these

play08:30

things in the background in order to see

play08:32

the update I have to go back here and

play08:33

then it will update but I bet some older

play08:35

files oh no it updated everything I'm

play08:36

sure all of you that use VSS code really

play08:38

hard have had the problem where it

play08:40

doesn't see certain things have been

play08:42

commit some things haven't been commit

play08:43

and it just yells at you the whole time

play08:45

didn't do it there I've experienced it a

play08:47

lot I know y'all have too it's really

play08:49

cool that Zed does not seem to do that

play08:51

and is like weirdly

play08:52

immediate I don't love this icon what is

play08:55

this move to a new file I don't love

play08:57

that UI don't know what this does or is

play08:59

for it seems like probably one of their

play09:00

weird AI things but can I see if Zed

play09:02

supports Auto rename tag interesting

play09:04

thought let's first off test the

play09:06

typescript go to definition here's our

play09:09

trpc proxy client let's rename symbol to

play09:13

internal API rename no there's no like

play09:17

confirmation button or something I would

play09:19

assume there' be like a button at the

play09:20

bottom here that says go nuts what is

play09:22

this Mt about why why is this upset

play09:25

about the type definitions oh it's the

play09:26

es lint I think the es lint is out of

play09:28

date but the types script isn't because

play09:30

you can see here I have the type

play09:31

definition but eslint is saying it's an

play09:33

unsafe assignment of an any because

play09:34

eslint didn't get the change that we

play09:37

have a different name for this thing

play09:38

internal API now very interesting very

play09:42

interesting I have saved the changes

play09:43

they've been saved in all the files that

play09:45

I did them in so they also get this sync

play09:47

issue in VSS code I get the issue where

play09:49

I have to reset the typescript server

play09:50

but usually the es lint server catches

play09:52

up es lint being broken separately is

play09:54

new to me is there a reset there's

play09:56

restart language server it looks like

play09:58

while I was doing that this corrected

play09:59

itself interesting it might have been

play10:01

because I hadn't opened this file since

play10:03

the change and it was caching that

play10:05

editor level I can't know any of this

play10:06

for sure the goal here is just to like

play10:08

play with it and see which quirks it

play10:09

does or doesn't have if I should

play10:11

actually commit to using this editor for

play10:12

a bit again let me know in the comments

play10:14

and I'll give it a shot for a little

play10:15

longer other people are saying they

play10:16

often have to reset es lint more than

play10:17

they have to reset the typescript server

play10:19

very interesting someone else pointed

play10:21

out it's cool you have es lint support

play10:22

out of the box I absolutely agree having

play10:24

es L to typescript in all of this

play10:25

without any plugins CU like I don't have

play10:27

any plugins installed on this I don't

play10:28

have anything installed right now like

play10:29

here are my settings there's nothing

play10:31

let's try some other fun things more

play10:33

typescript quirks I should be able to

play10:34

command click hello and get to the trpc

play10:37

function in the server folder and it

play10:39

works dope having that type of deep type

play10:41

inference is essential for any editor

play10:44

that I use so if I'm in some client or

play10:46

like user facing code and I want to

play10:48

quickly do anything like I want to just

play10:51

figure out where this is coming from or

play10:53

like make a change to what it's

play10:54

returning having command click working

play10:56

here is huge and the last time I played

play10:57

with a zed this was not working

play10:59

previously it would bring me to weird

play11:00

places in like my type definitions for

play11:02

trpc itself now it actually goes

play11:04

properly all the way to the place where

play11:06

this is written hopefully it still does

play11:07

this on client components one way to

play11:09

test that it still does good stuff

play11:12

should I actually try typing now cuz

play11:13

thus far I have avoided actually editing

play11:15

in the editor let's see how this feels

play11:17

this is a test to see how typing here

play11:19

feels overall I'm impressed the auto

play11:23

comment continuation is also a nice

play11:27

touch I don't know if you guys saw that

play11:28

it's hard see cuz I don't have my key

play11:29

presses on screen but when I press enter

play11:31

it continues the comment for me that's

play11:32

really nice it's doing some type of Auto

play11:34

formatting here too not quite as much as

play11:36

I would have liked but let's see if I

play11:38

tab this out that looks like it's doing

play11:40

pretty your stuff properly Mark pointed

play11:41

out there was a lot of pop-ups when I

play11:42

was typing here when I wasn't typing it

play11:44

in a comment there was but it seems like

play11:46

when I'm in a comment it chills out but

play11:48

when I'm typing here this is a test

play11:50

typing yeah the um the spam of like it

play11:53

trying to autocomplete [ __ ] is a little

play11:55

annoying because it's so fast that it

play11:57

does it quickly but it just it flashes

play11:59

all over the screen when I'm typing like

play12:01

do you see how annoying that is that

play12:04

would piss me off so much I would just

play12:05

add a debounce to that so when I type a

play12:07

letter you don't prompt me with that

play12:09

until I've waited for at least a few

play12:10

milliseconds that I also find this

play12:12

really annoying ESP when I'm making

play12:13

content because I'll be typing something

play12:14

and just my screen's flashing all over

play12:16

the place and it makes the video super

play12:17

distracting so for me in particular

play12:19

that's kind of a no-o yeah also the

play12:20

dialogue should be smaller people are

play12:21

saying it's pretty big I will say I I'm

play12:23

on a 720p effective screen when I'm

play12:25

doing content so I don't know if it's

play12:27

less bad in other cases but now it's

play12:29

taking up a ton of my screen that said

play12:30

VSS code sucks about this too and I type

play12:33

trpc like it still starts to do things

play12:35

but it's nowhere near as brutal about it

play12:37

the jsts server immediately crashed five

play12:40

times great sign responsive test this is

play12:43

me getting a gut feel of the

play12:47

responsiveness in vs code this is me

play12:50

getting a gut feel of responsiveness in

play12:55

said I'll be honest guys doesn't feel

play12:58

much

play12:59

better just typing like that does that

play13:01

come off in the video does this seem

play13:04

faster because it doesn't feel very

play13:07

different to me curious if that Quirk

play13:10

was still happen in comments what happen

play13:11

here I am adding cool it does not so

play13:15

when I press single quote or double

play13:17

quote double quote it will automatically

play13:19

double up but single quote it won't

play13:22

because a single quote might be a

play13:24

contraction but a single quote here

play13:27

doesn't necessarily know that and it

play13:28

always doubles it up so when I'm doing

play13:30

I'm now m is surrounded even though it's

play13:33

in a comment so kind of annoying that

play13:36

when I'm typing a comment I have to go

play13:38

through and delete a bunch of things

play13:39

it's randomly adding for me I'll be

play13:40

honest I've always been annoyed when you

play13:43

make a tag and it autoc closes it for

play13:45

you I don't want that on single Pern in

play13:48

a comment ever but in general I've never

play13:50

been a big fan of it so I am biased

play13:52

there one of the really interesting

play13:54

things that Z's trying to do different

play13:56

is focus on collaboration most editors

play13:58

have some crappy plugin where you can

play14:00

share an instance and I'll be honest

play14:02

every time I tried it was a Jank

play14:03

experience I've never had a good time

play14:05

using VSS code with two people on

play14:07

different computers and usually I just

play14:08

prefer to screen share and Discord or

play14:10

something I am curious how this works

play14:11

with multiple people working in one

play14:13

thing together first off there's a chat

play14:15

which is actually really nice to have a

play14:17

built-in live chat they have a concept

play14:19

of channels where I can create a channel

play14:21

if anybody has Z let's try it we're

play14:22

going to make a t3g channel it wants my

play14:24

microphone is there a way I can mute

play14:26

that oh there it is it's in the top

play14:28

right corner very interesting to have AV

play14:30

built into the editor also a share

play14:32

screen option so I can share my screen

play14:34

Beyond just the editor so if I want to

play14:36

showcase like what I'm actually working

play14:38

on like I want to showcase what the the

play14:40

browser does in the background while I

play14:41

make changes really cool that it

play14:43

supports that can people join the t3g

play14:45

channel is this public or private how

play14:46

does this work cool I trust you Yash I

play14:51

don't want to call you no I sorry I do

play14:52

not think just clicking your name would

play14:54

call that's uh unintended I am sorry I

play14:57

don't know how to stop calling either

play14:58

there's no way to do that remove contact

play15:01

yeah just on a call yeah the UI for this

play15:03

is a little Jank I do not like that I

play15:05

can accidentally call somebody by

play15:07

clicking on their name like call things

play15:08

should should at least have like a

play15:10

separate button for it there's no

play15:12

rightclick Behavior at all like I'm

play15:13

right clicking on people and doesn't do

play15:14

anything I just don't get this join

play15:19

Channel none of these things appear to

play15:21

be doing anything it still has me

play15:23

calling Yash and I don't know how to to

play15:25

stop that does revoke right access do it

play15:27

no share leave call okay that was dumb

play15:32

on the channel invite members oh I can

play15:34

just make it public and now you have

play15:35

been invited aore there's join Channel

play15:38

and open Channel notes okay the channel

play15:40

notes is this thing in the middle here

play15:41

so we can save like a markdown dock

play15:43

notes hi friends aore are you able to

play15:46

edit those notes is this safe though can

play15:48

you run a terminal command fantastic

play15:50

question oh hi from aore hi aore do you

play15:53

have access to my terminal here let me

play15:55

try can't open my terminal can you see

play15:58

what I typed in it though you have your

play15:59

yours open cool um yeah I'm very curious

play16:02

how much you do and do not have you

play16:04

can't even see it interesting I have

play16:07

mixed feelings on this on one hand it's

play16:10

actually pretty cool to think about your

play16:13

coding environment as a a shared

play16:15

collaborative place can you see that

play16:17

you're on your project you already did Z

play16:19

clab at work it's fun oh interesting I

play16:21

have mixed feelings on this it's a

play16:23

really cool idea to have good

play16:24

collaboration tools baked into your

play16:27

editor it gives you a ton of Opp

play16:28

opportunity to innovate in ways like a

play16:30

plugin simply can't and I like the idea

play16:32

that it's not a plugin for this like the

play16:34

vs code live share plugin despite being

play16:36

somewhat baked in is pretty Jank this

play16:39

despite being early and Jank feels like

play16:42

it has more potential to integrate deep

play16:44

in and I am excited to see where it goes

play16:46

but the ux is rough like the fact that

play16:48

when you click someone's name it starts

play16:50

an audio call with them in my editor is

play16:52

terrifying to me I hate that that's

play16:54

that's not something I can support like

play16:56

ever and I will probably be disabling

play16:58

this feature until there's like a major

play16:59

update I want to better understand what

play17:01

the AI autocomplete experience is like

play17:03

oh I can sign in for co-pilot here cool

play17:06

co-pilot is

play17:07

enabled look at that we got co-pilot

play17:09

working dope pump that even though they

play17:11

have aspirations to do their own AI

play17:13

stuff that co-pilot is already built in

play17:15

and working as I would expect that's

play17:17

dope it's nice that I don't feel the

play17:18

need to run and grab any plugins there

play17:21

are little things that I've been using a

play17:22

lot in vs code recently that I like I go

play17:24

through my extensions obviously having

play17:26

language things like um Astro and such

play17:29

is really nice I love cloak for hiding

play17:31

Secrets Dino is nice to have support for

play17:33

directly they already have es lint built

play17:35

in they have co-pilot built in haven't

play17:36

played with their git stuff I'm not a

play17:37

big G in the IDE person but a lot of

play17:39

other people are so that'll be missing

play17:41

which is notable the things I've been

play17:43

thinking about though obviously my

play17:45

themes I love the PO Manders theme it'd

play17:46

be really nice if they had a way to

play17:47

import VSS code themes because it's like

play17:49

a standard-ish syntax somebody will

play17:51

probably hack that or at least make a

play17:52

converter in the future it seems like

play17:54

it's doing all the prettier stuff for me

play17:56

already so that's cool the two I was

play17:58

thinking of the that I'm going to miss

play17:59

are pretty typescript errors and quick

play18:01

lint JS these two plugins are very good

play18:03

I already have a video for pretty

play18:05

typescript errors the typescript just

play18:06

got so much better if you want to know

play18:07

more about the pretty typescript error

play18:09

plug-in check the video out it required

play18:11

a ton of hacks by the dev to make it

play18:12

work but the results super cool and I

play18:14

rely on it a ton you can see here that

play18:15

it will actually make you this nice

play18:17

printed out formatted error thing

play18:19

instead of the absolute mess that

play18:21

typescript normally gives you super

play18:22

super cool and then quick lint if you're

play18:24

not familiar I haven't made a video

play18:25

about this yet it checks for a bunch of

play18:27

basic JavaScript typescript things like

play18:29

using an equals accidentally in an if

play18:31

statement awaiting something that isn't

play18:33

async little type errors that are pretty

play18:35

common and it's super super fast so you

play18:38

get feedback like immediately which is

play18:40

really cool that like on each character

play18:42

you're getting feedback I've been

play18:43

enjoying quick lint quite a bit and

play18:45

again let me know in the comments if I

play18:46

should do a whole video about quick lint

play18:48

because it is a pretty cool project but

play18:49

in order to care about those things we

play18:51

first need to see how Zed handles when

play18:53

you do something wrong so let's spell

play18:55

post

play18:56

wrong how quickly when I add the T will

play18:58

I no longer have a type error pretty

play18:59

quick and if I have the type error and I

play19:01

hover over oh no it's the super

play19:03

unreadable type

play19:06

errors also if you notice I get

play19:08

different type errors depending on how

play19:10

far in I am because these are all

play19:11

accessing an unsafe any I don't know if

play19:13

vs code is smart enough to not do that

play19:15

but there's only one way to check so

play19:17

have here we get the nasty tyri error

play19:19

but then we get the much better

play19:20

formatted error from the Pretty

play19:23

typescript error plugin but over these

play19:25

further down things now this is all the

play19:26

unsafe any yeah so equally bad there but

play19:30

at least I can use my plugin here which

play19:32

I cannot use in Z in my opinion if Zed's

play19:34

goal is to make something better enough

play19:36

than vs code that we all start switching

play19:38

these types of ux wins are a really big

play19:41

thing if you can do them because if you

play19:43

produce enough of these wow moments for

play19:45

a developer that might not know about

play19:47

these plugins might not know about these

play19:48

other things this can be a huge huge win

play19:51

for building like positive sentiment and

play19:53

getting them to go shill it to their

play19:54

friends and getting me to talk really

play19:56

positively about it in a video all those

play19:57

types of things seeing if there is do

play19:59

they have any plugin system at all I

play20:00

don't think they do not upset with it in

play20:02

any way one more thing we should

play20:04

probably test is auto importing what's

play20:06

the I can import okay we have the create

play20:09

post deleting this component deleting

play20:12

the import for this component let's try

play20:15

mounting it

play20:17

now the flash of that is so annoying and

play20:21

also that all these mdn references come

play20:23

up before my own code like I have to

play20:25

press arrow down how many times to get

play20:27

to my thing and also the width of this

play20:30

changes that's Jank that feels not good

play20:34

that all like this UI shifts around as I

play20:36

try to get to the right thing and that

play20:38

what I'm here for is so low priority I

play20:40

have to type the whole word create and

play20:42

even just type in create it still has

play20:44

credentials container canvas capture

play20:46

media and all these other things that

play20:47

don't start with create because the

play20:48

fuzzy search sucks create all those

play20:51

letters are in order in credentials

play20:53

container it has the letters for create

play20:55

in order but something that starts with

play20:57

create should be first for sure this is

play20:59

[ __ ] these are the little things that

play21:00

like are hard to get right that will be

play21:03

fixed over time but feel Jank right now

play21:05

and if the goal of something like Zed is

play21:07

to offer a meaningful user experience

play21:09

improvement over vs code these things

play21:12

matter way way more so that's a little

play21:15

disappointing if I click it did it Auto

play21:16

Import correctly it did cool so at least

play21:18

the auto importing works but the ranking

play21:21

there was terrible I'm happy I checked

play21:22

that one good one is EnV this is a new

play21:24

project so this won't leak anything but

play21:26

it looks like it would have if I hadn't

play21:28

like been sure that it's good ahead of

play21:30

time is that a that's a no co-pilot icon

play21:32

something I have to rely on is the

play21:34

ability to hide secrets with something

play21:35

like cloak because there's nothing worse

play21:37

than accidentally exposing your secrets

play21:38

on stream if I go to here I can turn on

play21:40

cloak and now you'll see all the secrets

play21:42

are hidden very very useful and I try to

play21:44

turn this on before I stream code so

play21:45

that I never accidentally leak

play21:47

environment variables again these things

play21:48

are small but enough of them add up and

play21:50

one of the things you need in order to

play21:52

win with a challenging new product like

play21:54

this is you need to win sentiment from

play21:56

the people who can sprad spread that and

play21:58

share that sentiment so I as a a creator

play22:00

with reach as dumb as it is that I'm

play22:02

saying you should prioritize my quirks

play22:04

and my needs because most users won't

play22:06

benefit that much from having their

play22:07

secrets autohide it makes me more

play22:09

confident when I use it to make content

play22:11

which then reaches the users you want to

play22:13

potentially have this is the thing I've

play22:14

been talking with a lot of companies

play22:15

about especially when I'm Consulting

play22:16

it's the idea that targeting creators

play22:18

despite their weird needs that might not

play22:20

overlap with your users it's actually a

play22:22

really powerful tool to hit product

play22:24

Market fit earlier and get your product

play22:26

in front of others earlier there's two

play22:28

reasons one we have the reach so if we

play22:30

can use the product we'll reach that

play22:31

audience but two and arguably more

play22:33

important if you can't win us you can't

play22:34

win our fans creators and influencers in

play22:37

these spaces especially nowadays deeply

play22:39

understand the things that their viewers

play22:41

and Their audience want to use and work

play22:43

with we might be pickier but we're also

play22:45

more understanding and we're more

play22:47

willing to have these conversations and

play22:48

hear these things out and I've regularly

play22:50

been surprised at how much value I and

play22:52

other creators can bring to companies by

play22:54

giving feedback on the product and why

play22:55

we would or wouldn't use it we are kind

play22:57

of a representative minority of the

play23:00

space because in order for us to get

play23:01

people to watch our videos we have to

play23:03

understand what they like and what they

play23:04

resonate with and with that deeper

play23:06

understanding we're often positioned to

play23:08

to give better feedback and also we

play23:10

spend more time thinking about what our

play23:12

audience would like so if you can't

play23:13

convince us to use your thing despite us

play23:15

having that mindset where we can think

play23:17

kind of the way all of our different

play23:18

viewers think and all the different

play23:19

groups and if you can't convince us that

play23:21

it's good enough for one of those groups

play23:22

it's going to be really hard to convince

play23:23

them yourself so again I feel bad saying

play23:26

make the things creators want but if

play23:27

your target audience is the people who

play23:29

watch those creators making them happy

play23:31

can help a ton I will say I'm impressed

play23:34

especially when you consider that they

play23:35

don't get to lean on much existing work

play23:37

here like they have treesitter in fact

play23:39

the treesitter devs are some of the core

play23:40

team for Zed they have the typescript

play23:42

language server running in the

play23:43

background and allowing them to get all

play23:45

the data they need here but they are

play23:46

missing a lot of the pieces that exist

play23:48

because of the size of the existing VSS

play23:50

code and JavaScript ecosystem like

play23:52

another thing people just brought up is

play23:53

the Tailwind auto

play23:56

complete oh wow looks like they

play23:57

hardcoded the Tailwind auto complete in

play23:59

it's

play24:01

PT this I don't love like weird things

play24:04

get mixed into the autocomplete but at

play24:06

least that works does it have the hover

play24:08

to see the actual CSS that applies it

play24:09

does not interesting and does the

play24:11

prettier organizer organize things

play24:13

correctly it does not okay so this is

play24:15

again like because they can't lean on

play24:16

the existing tools they have to build

play24:18

their own versions of it so we do get a

play24:20

lot of the Tailwind autocomplete help

play24:22

here which is really nice like I can

play24:24

Tailwind like group or Tailwind like

play24:28

lgp whatever and it's smart enough to

play24:30

know what that is but it doesn't let me

play24:32

hover over to see what these things are

play24:34

versus in VSS code I hover over one of

play24:35

these and tells me the exact class there

play24:37

another thing it doesn't seem to support

play24:39

that I push really hard is the auto

play24:41

sorting prettier plugin for tailin which

play24:42

makes your tailin code way more readable

play24:44

because everything's in the same order I

play24:46

intentionally put this padding too far

play24:47

forward because now when I save it's

play24:49

going to get moved to the right spot

play24:50

which is in this Chunk in either the

play24:52

middle or the end depending on which

play24:53

classes you have that has all the

play24:55

padding behaviors I've learned this

play24:57

order it's really good the prettier Auto

play24:59

sort Tailwind plugin is dope and I

play25:01

genuinely think everyone should be using

play25:02

it if they're using Tailwind so not

play25:04

having that sucks because they didn't

play25:05

Implement prettier bindings they

play25:07

implemented a bunch of prettier

play25:08

functionality into their editor they

play25:10

didn't implement the Tailwind plugin

play25:12

they implemented a bunch of Tailwind

play25:13

functionality into the editor this is

play25:15

also why open sourcing is so important

play25:17

because if they didn't open source

play25:18

building and maintaining all of these

play25:20

things becomes really really difficult

play25:22

really really quickly and I'm hopeful

play25:24

that the choice to open source will make

play25:26

it more likely the community supports

play25:27

these things going forward that said if

play25:29

the Tailwind stuff is written rust I'm

play25:30

curious to see how that goes we can

play25:32

check the source code quick

play25:35

though interesting they have the tail

play25:36

and prettier plug-in package it should

play25:38

work then although if you think about it

play25:40

it's pretty wild to see tailwind and

play25:42

prettier in the source code of Zed

play25:44

especially when you compare to like the

play25:46

vs code GitHub if we search in here for

play25:48

Tailwind nothing search in here for

play25:50

pretty a they might use it but it's not

play25:53

part of vs code itself because these are

play25:55

all plugins that are external extensions

play25:57

whereas with zed these are all built-in

play25:59

features and rust I don't necessarily

play26:01

love this but open sourcing is a huge

play26:03

step in making future extensions that

play26:05

are more usable also how hilarious is it

play26:07

that Tailwinds considered a language the

play26:09

point stands having to support things

play26:11

that deeply in your editor is a scary

play26:13

thought and the amount of work that the

play26:15

poor Zed team has had to do to create

play26:18

all of these bindings is a little

play26:20

terrifying oh no oh no I see what

play26:23

they're doing since Tailwind is a subset

play26:26

language not a proper Lang language

play26:27

which obviously Tailwind is not a

play26:28

programming language in order to get

play26:30

their auto complete in their adapter

play26:32

working in all the other places you

play26:34

might use Tailwind they had to manually

play26:36

bind the Tailwind parser to every

play26:39

language you might use Tailwind with

play26:40

including we not limited to CSS Elixir

play26:43

heeks hex I've no idea what heex is TSX

play26:47

JavaScript HTML Erb spelt PHP and more

play26:51

referen coming up there but yeah the

play26:52

fact that they have to bind Tailwind

play26:54

hardcoded to every single language for

play26:57

it to work is incredibly not extensible

play26:59

and again with like not having plugin

play27:02

support for other things like Tailwind

play27:04

to exist or for Tailwind changes to

play27:06

happen or God forbid Tailwind version 4

play27:09

has different classes than Tailwind

play27:10

version 3 you're [ __ ] the fact that

play27:12

these language parsers have to have such

play27:15

weird additional assignments made for it

play27:17

to work is scary also like the first

play27:20

line in the language in nit is an Elixir

play27:22

settings register so Elixir has to do

play27:24

some special things and they always run

play27:26

this code even if you're not using

play27:28

Elixir so these types of hacks are

play27:30

necessary when you don't have a plugin

play27:32

system and they're a little

play27:35

scary that said they did just open

play27:37

source this code and I'm not here to

play27:39

just [ __ ] on people's code like this

play27:40

isn't bad code it's scary to maintain as

play27:43

an open source project and that's a

play27:45

thing we should think about and be

play27:46

honest about they do have a plugins

play27:48

directory interesting for child and

play27:50

children if okay path child path config

play27:53

read language config if it matches then

play27:56

they register it enter interesting yeah

play27:58

and they're registering it through a

play27:59

wasm layer too that means they can

play28:01

safely run rust code in like a

play28:03

virtualization layer and also they can

play28:04

run other languages including JavaScript

play28:06

and typescript this is very interesting

play28:08

how this is architected I'm even more

play28:10

excited about reading through how that

play28:11

rewrite worked so again let me know in

play28:13

the comments if I should make a video

play28:14

about the whole rewrite the file for all

play28:16

the language support including loading

play28:18

plugins is under 300 lines of code

play28:20

that's not too bad and enough you

play28:21

pointed out that GPI is cool that I'll

play28:23

quickly touch on it it is actually

play28:24

really interesting the goal of GPI is to

play28:27

do a GPU accelerated UI framework

play28:29

written in Rust so that you have rust

play28:31

code that runs native UI there hasn't

play28:33

really been anything like this before at

play28:35

least that I know of they've stated a

play28:36

lot of their goals here and actually

play28:37

really surprised the quality of what

play28:38

they've written here they point out

play28:40

there three different registers that

play28:42

they've created depending on the way you

play28:43

want to build this UI interesting this

play28:45

is Swift UI I know most of y'all aren't

play28:47

Swift UI users but this is Swift UI this

play28:50

is the Swift UI sytax look familiar yeah

play28:53

that is fascinating to me I haven't

play28:55

talked much about Swift UI and I have a

play28:57

lot of opinions but I think they they

play28:59

took the right lessons from react and it

play29:01

is interesting to see other things doing

play29:03

it I am very curious about the decision

play29:05

to use div here as the example is Zed

play29:08

using a web container that's rendering

play29:10

divs or are they rendering native UI

play29:13

wasum is not a UI layer it has like if

play29:16

this is running in a browser shell this

play29:18

is would be wum doesn't I don't care

play29:20

about how where it's running I care

play29:22

about what it's rendering to does this

play29:23

render to some type of extension of a

play29:26

canvas or a dawn or is this making

play29:28

native UI with like GPU calls cuz they

play29:30

pointed out that it's GPU accelerated a

play29:32

GPU accelerated UI framework for rust

play29:34

create a new window with app context

play29:35

open window and register your first view

play29:38

there is nowhere near enough info here

play29:40

seems like it's running native I'm very

play29:42

confused by the choice of using a div in

play29:44

their example because if you're deep

play29:46

enough in web that you don't know this

play29:47

divs are a web concept even react native

play29:49

doesn't have a div like if you write

play29:51

react native code you cannot render a

play29:53

div in it you have to render a react

play29:55

native view or text element leveraging

play29:57

rust in the GPU to render user interface

play29:59

at 12 FPS they're calling out my concern

play30:01

if like divs are slow because you're

play30:02

doing the web layer good old Evan

play30:04

Wallace code if you don't know Evan

play30:05

Wallace he also created es build this

play30:08

dude is like the JavaScript and

play30:10

JavaScript accessories performance

play30:11

wizard yall remember in my recent video

play30:14

where I said game devs don't appreciate

play30:16

the web and US finding new ways to

play30:18

render and render because they're still

play30:20

trying to get text to render and a bunch

play30:22

of people in the comments were like you

play30:23

don't know anything about Native devs

play30:24

and like performant Dev if you think we

play30:26

don't know how to R text or you think

play30:28

that's hard to do here's a five page

play30:31

section on why it's not that easy to

play30:34

render text you stupid [ __ ] I'm

play30:36

sorry but like if you're building native

play30:39

stuff and you're trying to build native

play30:40

stuff for performance reasons you do

play30:42

have to care about how text renders and

play30:44

as you see here it is not easy to do

play30:46

they also cited the Pathfinder crate

play30:48

which seems to be the existing rust UI

play30:51

rasterization layer that they didn't

play30:53

think was good enough for their needs

play30:55

fascinating this is proof they're

play30:56

actually doing native code code they're

play30:57

not doing things in the browser which

play30:58

makes me really confused about the

play31:00

choice to have like div and flex all in

play31:03

their example because div and flex are

play31:05

both very Web Concepts as well as

play31:07

justify Center item Center all these

play31:09

things are very Webby if you have the

play31:11

opportunity to build something new from

play31:12

scratch I'm a little confused why you'd

play31:13

bring the web Primitives somebody said

play31:15

they just picked the name div instead of

play31:16

View kind of but they also picked Flex

play31:19

they also picked justify Center and item

play31:21

Center they're taking a lot of the way

play31:22

we do things in web which is very

play31:25

interesting and not necessary react

play31:27

native took very little from web they

play31:29

took a bit but not a lot and even things

play31:30

like Flex they they tried to take but

play31:32

they they built them differently like

play31:34

it's a silly thing but a really

play31:36

interesting example of how react native

play31:38

differs from react for web by default

play31:39

react web Flex boxes are horizontal and

play31:42

you have to specify B vertical react

play31:43

native Flex boxes are default vertical

play31:45

you have to specify horizontal it's a

play31:47

small detail but these things add up as

play31:49

you swap between platforms a lot I'm

play31:51

interested in why they chose to go the

play31:53

web Direction here there's a lot going

play31:55

on in this project and I'm really

play31:56

curious to see where it goes from the

play31:57

Native layer and rust for the GPU stuff

play31:59

to everything they're doing with collab

play32:01

and AI there's an interesting thing

play32:03

going on here and I'm really excited

play32:04

that it's not just happening but it's

play32:06

now open source I don't see myself

play32:07

leaving vs code anytime soon but I am

play32:09

excited for a future where there's more

play32:11

competition and more Innovation

play32:12

happening within our editors what about

play32:14

you do you still use vs code have you

play32:16

made the switch over to Vim or are you

play32:17

one of the few remaining Sublime Text

play32:19

holdouts that just won't move yet I'd

play32:20

love to hear what you're using if you

play32:21

want to see me make vs code even worse I

play32:23

have a great video in the corner here

play32:25

where I let chat decide what I would do

play32:26

to my vs code and I promise you it's

play32:29

terrible see you guys in the next one

play32:30

appreciate you all a ton peace NS

Rate This

5.0 / 5 (0 votes)

日本語の要約は必要ですか?