Zed Founders Chat #4

Zed Industries
11 Mar 202448:23

Summary

TLDRThe transcript discusses the development and philosophy behind Zed, a code editor that aims to balance power and speed. The team talks about the spectrum between full-featured IDEs and minimalist editors, their preference for minimalism without sacrificing performance, and the challenges of integrating collaboration and other features without cluttering the user experience. They also touch on the importance of extensibility, community feedback, and maintaining a high-performance editor that avoids bloat.

Takeaways

  • 🌟 The ideal tool would combine powerful features with a sleek, minimal, and fast user experience, avoiding the trade-off between performance and feature-richness.
  • 🚀 The goal is to create a tool like Zed that is powerful yet maintains a fast and minimalistic UI, similar to the streamlined design of a Tesla Model S.
  • 🤔 The line between IDEs and text editors is becoming increasingly blurred, with modern editors gaining language awareness and smarter features through technologies like language servers and Treesitter.
  • 💡 There's a desire for an editor that integrates development environment aspects, such as collaboration and terminal usage, without clutter or performance loss.
  • 🔧 The vision for Zed includes a balance between being opinionated about its core features and being open to extensions that allow for customization and additional functionality.
  • 📈 The development of Zed is focused on extensibility and performance, ensuring that adding new features or extensions does not compromise the core user experience.
  • 🔄 Emphasis on community feedback is crucial for refining Zed, with active engagement helping to shape the tool based on real-world usage and user needs.
  • 🛠️ Extensions are seen as a way to enhance Zed's capabilities without bloating the core product, allowing users to tailor the experience to their preferences.
  • 📊 The team behind Zed is mindful of the balance between including 'batteries included' and relying on extensions for additional features, aiming to provide a solid foundation out of the box.
  • 🎯 Zed's philosophy includes innovating and offering better ways to perform tasks, but also respecting user familiarity and standards when it benefits the broader user base.

Q & A

  • What is the main goal for the development of Zed in terms of user experience?

    -The main goal for Zed is to combine powerful features with a sleek, minimal interface that is super fast, without introducing latency or sluggishness. The aim is to provide a tool that is both incredibly powerful and user-friendly, focusing on minimalism in the UX.

  • How does the speaker feel about the traditional trade-off between powerful IDEs and faster editors?

    -The speaker has always been frustrated with the trade-off, as powerful IDEs often come with a cost of slowness and a cluttered UI. The dream is to have a tool that is both incredibly powerful and fast, without sacrificing performance for the sake of features or minimalism.

  • What is the speaker's analogy for the ideal user experience in an editor?

    -The speaker uses the analogy of a Model S Tesla, where the door handle pops out when needed but is tucked away when not in use, to illustrate the ideal user experience of having features available when needed without creating drag or clutter.

  • How has the landscape for editors and IDEs changed over the past 10-15 years?

    -The landscape has changed significantly with the introduction of language servers and technologies like Treesitter, which have allowed editors to gain language-aware features and smarter syntax understanding without the traditional bloat of IDEs.

  • What is the speaker's vision for the future of Zed in terms of collaboration?

    -The speaker envisions Zed integrating more concerns related to collaboration, moving away from the traditional IDE model where everything is bundled into one experience, and instead focusing on a more seamless and efficient workflow that acknowledges the existence of other people and collaboration.

  • What does the speaker think about the concept of 'opinionated' software?

    -The speaker is cautious about being too opinionated, as they do not want to dictate a single way of doing things. However, they do believe in innovating and offering a better way of doing things when they are confident in their vision.

  • How does the speaker feel about the addition of emojis or pixelated emojis in Zed?

    -The speaker is open to adding emojis or pixelated emojis as long as it aligns with the aesthetic of Zed and does not detract from the overall user experience. The decision would be made based on community feedback and the value it adds to the users.

  • What is the speaker's stance on the integration of web technology in Zed?

    -The speaker is hesitant about integrating web technology due to concerns about slowing down Zed. However, they acknowledge that certain utilities provided by web technology could be valuable and are open to exploring these options carefully.

  • How does the speaker view the role of the community in the development of Zed?

    -The speaker highly values the community's engagement and feedback, as it provides insights into how Zed is used in the real world and helps shape the development of the software to better meet user needs.

  • What is the speaker's approach to handling feature requests and potential over-complication of Zed?

    -The speaker is cautious about adding features that might complicate Zed or slow it down. They prefer to maintain a focus on core features and performance, and are willing to remove or refactor features that do not align with the vision of a fast and minimal editor.

Outlines

00:00

💡 The Spectrum of Editors and IDEs

The discussion begins with the participants musing on the nature of Zed, pondering where it falls on the spectrum between an Integrated Development Environment (IDE) and a text editor like Nano. They reflect on the historical evolution of IDEs, noting their feature-rich yet often sluggish interfaces. The conversation touches on the desire for a tool that combines power, speed, and minimalism, akin to the sleek design of a Tesla Model S. The participants express their dream of a tool that is both incredibly powerful and fast, without sacrificing user experience (UX) or introducing unnecessary latency.

05:01

🌐 The Convergence of Editors and IDEs

The participants delve into the modern capabilities of editors, highlighting the impact of language servers and tools like Treesitter on the development landscape. They discuss the shift from a clear distinction between editors and IDEs to a more integrated experience where editors gain syntax awareness and semantic understanding. The conversation touches on the potential for further enhancement of these tools, including the possibility of expanding Treesitter's capabilities. The participants also consider the trade-offs between adopting IDE features and maintaining the speed and focus of an editor.

10:03

🔄 Balancing Feature Integration and Performance

The group continues to explore the balance between integrating development environment features and maintaining performance. They discuss the importance of not abstracting away essential tools like git and cargo test, and the desire for Zed to be aware of and integrate cleanly with the command line and terminal. The conversation also touches on the potential for extensions and the challenges of ensuring they do not slow down or clutter the editor. The participants express a commitment to maintaining Zed's speed and minimalist UX, even as they consider new features and extensions.

15:04

📋 Prioritizing Extensions and Scriptability

The discussion shifts to the role of extensions and scriptability in Zed. The participants consider the potential for extensions to enrich the user experience by adding functionality without cluttering the interface. They discuss the importance of carefully engineering APIs to support extensions without compromising performance. The group also explores the idea of allowing users to solve their own problems through scripting, emphasizing the value of flexibility and the potential for community-driven innovation.

20:07

🔄 The Evolution of Core Features and Extensions

The conversation addresses the challenge of determining which features should be included in the core of Zed and which should be left for extensions. The participants acknowledge the impossibility of satisfying every user's needs with core features alone and the importance of allowing for extensibility. They discuss the concept of 'batteries included' and the potential for over-inclusion, emphasizing the need for a balance between core features and user customization. The group also reflects on past decisions and the learning process involved in developing Zed.

25:08

🤔 Navigating User Feedback and Product Philosophy

The participants discuss the influence of user feedback on the development of Zed, highlighting the importance of community engagement. They consider the challenge of incorporating diverse workflows without creating a Frankenstein-like product. The conversation touches on the potential for overcorrecting in one direction, adding features and then integrating them if necessary. The group acknowledges the difficulty of making principled decisions about small features like emojis and the desire to maintain a cohesive and well-designed product vision.

Mindmap

Keywords

💡Spectrum of collaboration

The term 'spectrum of collaboration' refers to the range of ways in which people can work together, from simple to complex. In the context of the video, it is used to discuss the varying levels of collaboration features that could be integrated into the Zed editor, reflecting a balance between powerful collaboration tools and maintaining a sleek, minimal interface.

💡IDE (Integrated Development Environment)

An Integrated Development Environment (IDE) is a software application that provides comprehensive facilities for software development. It typically includes features like code editors, compilers, and debuggers. In the video, the team discusses the pros and cons of IDEs, such as their feature-rich nature versus potential sluggishness or cluttered interfaces.

💡Performance

In the context of software and editors, performance refers to how quickly and efficiently an application runs, including aspects like responsiveness and speed. The video emphasizes the importance of maintaining high performance, especially in the user interface and core functionalities, to ensure a smooth and fast user experience.

💡Minimalism

Minimalism in design refers to the practice of using the least amount of elements necessary to achieve the desired effect. In the context of the video, minimalism is valued in the user experience (UX) to keep the interface clean and focused, reducing clutter and enhancing usability.

💡Language Servers

Language servers are processes that provide support for programming languages, including features like autocompletion, syntax highlighting, and error checking. They are an integral part of modern text editors and IDEs, enabling them to offer advanced language-specific functionalities.

💡Treesitter

Treesitter is a fast and efficient parser generator tool for creating language parsers. It is used in text editors to provide syntax highlighting, code folding, and other language-aware features without the performance overhead of traditional parsing methods.

💡Extensions

Extensions are add-on components that extend the functionality of a software application. In the context of text editors, extensions can add new features, integrate new tools, or modify existing behaviors to cater to specific user needs or workflows.

💡Collaboration

Collaboration refers to the act of working together with others to achieve a common goal. In the context of the video, it relates to the features and tools that could be integrated into Zed to support teamwork and communication among developers.

💡User Experience (UX)

User Experience (UX) refers to the overall experience a user has while interacting with a product, focusing on aspects like usability, accessibility, and the user's emotional response. In the video, UX is a central concern as the team aims to create an editor that is both powerful and intuitive.

💡Scriptability

Scriptability refers to the ability of a software application to be programmed or scripted by the user to automate tasks or customize its behavior. In the context of the video, scriptability is seen as a desirable feature that would allow users to tailor the editor to their specific needs and workflows.

Highlights

The discussion revolves around the product philosophy and the balance between an IDE and a text editor, specifically in relation to Zed.

IDEs often come with many features but can be sluggish or have a cluttered UI, whereas text editors like TextMate are fast but lack features.

JetBrains has made efforts to streamline the UI, but it still doesn't feel as fast as a traditional editor.

The ideal tool would be powerful yet sleek, minimal, and super fast without introducing latency.

The goal is to create a tool that doesn't compromise on performance or minimalism, keeping the code front and center.

The distinction between IDE and editor has become less clear-cut due to advancements like language servers and treesitter.

Editors have evolved to include syntax awareness and can call out to language servers for semantic understanding.

The architecture of editors has improved, but there's still room for expansion in what treesitter and language servers can do.

Zed aims to integrate collaboration into the development environment, which is a departure from traditional IDEs.

The vision for Zed includes combining the power of an IDE with the speed and minimalism of an editor.

Extensions are seen as a way to enrich the core features of Zed without cluttering the UI or slowing down performance.

The challenge is to find the right balance between including features and maintaining performance and minimalism.

Zed's philosophy includes being opinionated about text editing but not forcing a single way of doing things.

The team is open to innovation and willing to explore different ways of doing things, but with a focus on maintaining a high-quality user experience.

The community's engagement is valued, and their feedback helps shape the development of Zed.

Zed aims to be a holistically designed product that resonates with its users and meets their needs without becoming a Frankenstein of features.

The team is cautious about overextending Zed's surface area, as it increases maintenance and can dilute the product vision.

Zed's development is iterative, with the team willing to add and integrate features based on community feedback and product principles.

The discussion highlights the importance of performance and user experience in the design and development of Zed.

Transcripts

play00:00

want to kick things off product

play00:01

philosophy talking about product

play00:04

decisions let's do it all right um the

play00:07

funny thing is I somehow again have this

play00:10

idea of a spectrum here which popped up

play00:12

last time right the spectrum of

play00:14

collaboration um but let's kick this off

play00:17

so my my question is where do you think

play00:20

Zed falls on a

play00:22

spectrum between IDE and editor from say

play00:25

Visual Studio to

play00:27

Nano and where should it land idees have

play00:31

always had a certain connotation for me

play00:33

that comes from idees I've used in the

play00:36

past which is they have a lot of

play00:38

features but you always seem to have to

play00:41

pay for those features uh in the form of

play00:44

either sluggish UI or a cluttered UI or

play00:48

both seems like maybe jet brains has

play00:53

done a better job like streamlining the

play00:55

look of their UI but it still doesn't

play00:59

feel feel quite as fast as the vibe I

play01:02

would get in what traditionally I would

play01:04

call an editor so something like them or

play01:07

back in the day like textmate I just

play01:08

remember the contrast

play01:10

between text like you know early in my

play01:12

career writing Ruby and textmate where

play01:16

really you know there wasn't a lot of

play01:17

help but it was at least fast um and

play01:21

then you know eventually adopting Ruby M

play01:24

or whatever and getting all that power

play01:26

but just being so frustrated with the

play01:29

latency um so it's always been this

play01:31

trade-off and my dream has always been

play01:35

to have po to have a tool that was

play01:38

incredibly powerful um but also had a

play01:41

Sleek minimal Vibe and super fast super

play01:46

fast and those are tough to combine I

play01:47

mean yeah sort of spent like most of my

play01:50

career trying to get to the point where

play01:51

we could combine them um but that's the

play01:53

goal but I always want to air on the

play01:55

side of minimalism in the ux and yeah

play02:00

the analogy I always use was like on the

play02:02

model S Teslas where you walk up and the

play02:05

door handle like pops out of the side so

play02:07

it's like tucked away when it doesn't

play02:09

when it would create drag you know but

play02:11

then available at just the right moment

play02:14

that's the dream so

play02:16

performance as many features as possible

play02:18

but

play02:20

not at the cost of performance or

play02:22

minimalism or bloat or something yeah

play02:26

not at the cost of slowness and noise um

play02:29

like keep my code front and center and

play02:32

don't introduce latency between the

play02:35

fundamental act that I'm trying to

play02:36

achieve which is editing that code right

play02:38

like that fundamental experience needs

play02:40

to be fast no matter what Antonio do you

play02:42

want to add something yeah I mean yeah a

play02:44

couple of thoughts like one one thought

play02:46

is this you know my the first

play02:49

programming language that I picked up

play02:50

was uh C and I used to be a Windows user

play02:54

so I remember like opening Visual Studio

play02:57

not Visual Studio code this is you know

play02:58

OG visual ual studio and like they had

play03:01

this loading screen because like the the

play03:04

the startup time was so slow that like

play03:06

it would you know it would be like

play03:07

Visual Studio 2005 whatever loading you

play03:11

know dll 1 2 3 BL blah um so yeah that

play03:14

was yeah same same as Nathan like the

play03:16

contrast from that to using I think was

play03:19

text mate that I used U after that was

play03:22

insane um yeah I think like the

play03:24

distinction between IDE and editor I

play03:27

don't know I don't haven't really

play03:29

thought about you know why you know it

play03:32

exists to me like I don't know like I

play03:36

would love to have all the features of

play03:38

an IDE and I think it is possible for an

play03:40

Editor to have all those features the

play03:42

theory I have and I just formulated this

play03:44

Theory so I some very well thought

play03:46

through is that I think it is possible

play03:48

to combine them all it's just that I

play03:51

don't know my sense is that those slow

play03:53

IDs are just the result of you know

play03:55

tacking things on you know adding things

play03:57

on top like bolting them on it's like oh

play03:59

we could have this this feature okay

play04:00

let's add it we could have this other

play04:01

feature okay let's add it and like then

play04:03

you end up with a list of like check

play04:05

boxes and like things that are not

play04:07

really you know integrated with with one

play04:10

another so you have all these features

play04:12

but they're not you know thought through

play04:15

U vertically I don't know if that's true

play04:16

or not but that's that's always the

play04:17

impression I had you know oh let's add

play04:19

another checkbox but it's it's not

play04:21

really like you know the vibe we're

play04:24

going for with Z yeah I guess the thing

play04:26

is you know maybe it was a trick

play04:29

question because this line between IDE

play04:32

and editor it's not that clearcut

play04:33

anymore is it like 10 years 15 years ago

play04:37

you had Nano right no no language aware

play04:41

features not even syntax highlighting I

play04:42

don't think Nano ever had syntax

play04:44

highlighting or was wasn't there Nano X

play04:47

not sure but none of that and then

play04:49

Visual Studio on the other side and now

play04:51

with language servers treesitter all of

play04:54

this stuff that you can plug into

play04:56

editors things have changed and I guess

play04:58

the interesting bit is is you know where

play05:01

do we want to land like what you said

play05:03

Nathan like which tradeoffs do we want

play05:04

to make and what things will we not

play05:07

adopt that an IDE has or what things you

play05:11

know do we want to adopt I think I think

play05:15

things have the situation has improved a

play05:17

lot since there since the time when

play05:19

there was a really big distinction

play05:21

between editors and and Ides I think I

play05:24

think the language server protocol

play05:25

helped a lot uh Tre Setter helped some

play05:28

for the editor to be like smarter than

play05:30

you know have a like basic awareness of

play05:33

Syntax for me like I think the

play05:34

architecture we're at where the editor

play05:36

has like syntax awareness and then for

play05:39

like semantic understanding we call out

play05:41

to a language server that like is not

play05:44

coupled to any one editor is a pretty

play05:46

good architecture and that's see like

play05:48

that's kind of how you know Vim when

play05:51

people say editor versus IDE usually

play05:53

like in the editor camp they're talking

play05:55

about vim and emac is like the point

play05:57

essential editor but even those tools

play05:59

now have LSP support and Tre sitter

play06:02

inside so I I kind of think we're like

play06:05

converging on a better design where like

play06:08

editors have syntax awareness and not

play06:11

just Zed but editors in general um but I

play06:14

I still think

play06:15

like there's improvements to be made

play06:17

like one thing that you know I'm

play06:19

thinking about ux that I still enjoy in

play06:21

ide even though it's not it's not like I

play06:25

would it wouldn't make me use them but

play06:27

like I I still enjoy the act of like

play06:28

renaming a variable in intellig and like

play06:32

it highlights it you're editing and it's

play06:33

like live editing the names in the other

play06:36

places and I remember that was the thing

play06:38

when we implemented rename and Zed that

play06:40

was the thing in my mind I was like

play06:42

that's a pretty cool thing that they do

play06:44

with all their you know built-in

play06:46

language analysis and we try we we like

play06:49

explored doing it um you know we have

play06:52

this combination of syntax awareness

play06:54

with Tre sitter and then like a rename

play06:56

call that we can do to a language server

play06:59

and and that like I think for the most

play07:00

part that's a pretty good it gives you

play07:02

what you want it doesn't quite let us do

play07:04

all the fancy stuff that IDE do but

play07:07

maybe there's like room

play07:08

for expanding what treesitter can do and

play07:12

what the language server can do to like

play07:15

let

play07:16

us um you know do things like that so do

play07:20

you think say performance wasn't an

play07:23

issue and say it could be tucked away to

play07:25

use Nathan's analogy is there anything

play07:29

thing that comes to mind from the IDE

play07:32

world that you would never add to zed

play07:35

because you think this does not fit in

play07:37

here this is not a z editor thing this

play07:40

is an IDE type of thing not that I can

play07:43

think of mhm I just like the term IDE

play07:48

just always seemed weird to me like yeah

play07:50

but I get the distinction but I don't

play07:53

know it's a code editor you're just

play07:54

trying to get work done as yeah I guess

play07:57

so to integrate the development of

play07:59

environment I guess I mean one thing

play08:01

we're adding is like I think you know if

play08:04

we're whatever it means to integrate the

play08:06

development environment but one thing

play08:07

that a lot of idees don't do a good job

play08:09

integrating into the development

play08:11

experience is the fact that other people

play08:13

exist and that we're collaborating so

play08:15

like I think we're kind of continuing

play08:16

that IDE Vision by integrating yet more

play08:21

concerns because that's the idea of an

play08:23

IDE right it's it's not like I edit over

play08:25

here and then I got my terminal and I'm

play08:26

switching back and forth and I'm using

play08:28

this like Hodge of tools it's all

play08:30

combined into one experience and so I

play08:32

think collaboration could be included in

play08:35

that but no the only thing I want to

play08:36

ditch from ades is the slowness and

play08:40

the and the buttons

play08:43

everywhere yeah so okay that's but

play08:46

that's interesting that means when you

play08:48

you're saying you want to integrate all

play08:50

of it at basically no cost that's the

play08:52

goal right no performance cost no

play08:54

clutter cost so there's this other

play08:57

spectrum of editor

play09:00

and I would say on one end there's emac

play09:02

on the other end there's vim and there's

play09:05

multiple in between of course but on

play09:07

emac the one end is to me editor as the

play09:12

operating system you have this one thing

play09:14

and you do everything in there and that

play09:16

is the force multiplier because you are

play09:19

always in emac and your shell is in emac

play09:21

your compiler runs in emac your emails

play09:23

your coffee machine everything's emac

play09:25

means you you never have to leave it and

play09:27

you're much more productive right

play09:30

writing emails cooking coffee then on

play09:32

the other hand there was this article I

play09:34

think was by now 10 years ago somebody

play09:37

was saying uh Unix as the IDE them is

play09:41

the one tool in this environment of

play09:44

other tools and that's where its power

play09:46

comes from it's just one of many tools

play09:49

so what you're saying that you want to

play09:51

integrate more does that mean you're

play09:53

tending more towards the emac side of

play09:56

things and saying the power comes from

play09:59

us putting more stuff into Zed for

play10:02

example collaboration so you know it's

play10:05

it's yeah I mean I don't want to like

play10:09

the I want to surface like the fact that

play10:12

a command line exists and like I like

play10:15

that world I hate the world of there's

play10:18

some esoteric project file that has all

play10:22

of the details like that's very xcode

play10:25

right where like interesting xcode P or

play10:27

whatever and like everything is done via

play10:29

this like point and click I don't know

play10:31

so like that I don't want so maybe

play10:33

that's an answer to that earlier

play10:34

question of like I don't want like to

play10:38

replace the command L experience with

play10:40

buttons like that I don't think is a big

play10:43

deal like I I I like being close to the

play10:46

machine and communicating with the

play10:48

machine linguistically but I would also

play10:50

like if I don't know so I want the IDE

play10:52

to be aware of and integrated cleanly

play10:54

with the fact that there is a terminal

play10:56

and there is a command line and and Aid

play10:59

void the state where we try to like

play11:00

Define everything in this visual

play11:03

Paradigm be a natural outgrowth of Unix

play11:05

the Unix philosophy and complemented I

play11:07

think is more my

play11:09

speed um but yeah if I can like hit a

play11:11

single key binding instead of switching

play11:14

to the terminal hitting up and hitting

play11:16

inner to run a test which like uh you

play11:20

know K and P are working on I'll take it

play11:23

but like I don't want it hidden from me

play11:26

the fact that that's just running a

play11:27

command yeah that's a good I like that

play11:30

Bare Bones Vibe yeah but just be

play11:33

productive in it I think that might also

play11:35

be one thing that I associated with

play11:37

idees in that you just boot it up and

play11:40

then you hit that green play button and

play11:42

you don't know what happens but somebody

play11:44

told you this is how you run it and then

play11:46

when something goes wrong you don't know

play11:49

what exactly happened there I feel like

play11:52

so I don't want magic sorry yeah no no

play11:55

yeah that's what you don't want right

play11:57

you don't want this abstract way in

play11:59

hidden but you want it cleanly supported

play12:02

yeah anything to add into a new Max emx

play12:05

versus wh where does it land with a z

play12:08

land yeah um not not much to add I I I

play12:12

think that yeah I don't want to abstract

play12:14

away um like Nathan said I don't think

play12:16

we want to abstract away things like git

play12:19

and cargo test um but I also think

play12:23

there's times when like the most

play12:25

efficient way to use a tool is not

play12:26

through the command line I think and I'm

play12:28

I'm a little skep iCal of the like Unix

play12:30

as the IDE Vision where it's like you're

play12:33

fast like that the fastest possible user

play12:36

experience for anyone no matter how good

play12:39

their muscle memory is just to like

play12:40

shell out to to like a code like if they

play12:46

want to look up something like shell out

play12:48

to do a command line search for it I

play12:50

think that often we're going to by

play12:53

integrating into the tool you can kind

play12:55

of have a faster keyboard driven

play12:57

workflow than than having

play12:59

and anything you could do with like a

play13:02

terminal editor running in a terminal

play13:04

yeah but I mean I don't think we're

play13:06

going to be building an email client

play13:07

into Zed I could see building an email

play13:09

client in gpy because I they all drive

play13:11

me

play13:12

crazy I mean it's definitely not at the

play13:14

top of a list and it would

play13:17

come those kinds of things would come I

play13:20

would be very careful before adding them

play13:22

because I I would worry they would

play13:23

dilute our Focus so um if we become

play13:26

extensible enough such that someone

play13:28

could build an email client like cool um

play13:32

but that seems like a ways out and not

play13:34

our priority at all our priority is wri

play13:36

in software and how do extensions fit in

play13:40

because I do think that there might be a

play13:43

danger

play13:44

of extensions ruining this concept where

play13:48

you add so many extensions and then

play13:50

people say this is now slow there's like

play13:52

15,000 buttons in the UI and then every

play13:55

company has like a z default plug-in

play13:58

configuration

play13:59

and we end up with you know 50,000

play14:02

buttons and it takes 30 seconds to boot

play14:05

up like how do you see extensions coming

play14:08

into this here I think it'll be I don't

play14:11

want to say there's anything that we

play14:12

won't let extensions do but I I

play14:15

definitely think there's going to be a

play14:16

our first several like Milestones with

play14:19

extensions is going to be more about

play14:21

like plugging into existing Zed features

play14:24

and um you know obviously first one

play14:27

adding languages but I think also things

play14:30

like um you know we're adding this task

play14:32

system and extensions that like help you

play14:35

discover tasks to run and expose them to

play14:37

you so there's like an existing workflow

play14:39

all users ofet have and the extension

play14:41

enriches like I think that's a very

play14:44

there's a lot of mileage we can get out

play14:45

of that or you know extensions letting

play14:47

you kind of script workflows that are

play14:50

unique to you like um opening files

play14:52

looking for certain types of code in

play14:54

certain files doing things with your

play14:56

cursor in certain files making edits

play14:58

that that you personally make you more

play15:00

productive that that's like my priority

play15:04

with extensions right now and less like

play15:06

adding adding any new UI or like

play15:09

building an email client building a

play15:10

concept that doesn't even exist instead

play15:12

using extensions I think it's something

play15:14

we we may do but it's not

play15:18

um I don't know it's we're not it's not

play15:20

going to be like whereas like with Adam

play15:23

from the start extend everything was an

play15:25

extension so like everything we did had

play15:27

to be doable via an extension it's it's

play15:29

a different approach than that um and I

play15:33

really think oh go ahead go ahead I

play15:36

don't think that having a lot of

play15:39

extensions has to be slow but that is

play15:42

going to involve carefully engineering

play15:44

the apis and how we run extensions like

play15:47

they're going to be running isolated in

play15:49

their own web assembly runtime on their

play15:52

own thread I do think as we if we ever

play15:54

put an extension and I don't know that

play15:56

we ever will but if we ever did like say

play15:57

we would put an EXT ition um on the

play16:00

critical path of typing so that like

play16:02

maybe it could inspect every character

play16:03

you're inserting and do something I

play16:05

would always want to if we ever did that

play16:07

put like a deadline around it I think

play16:09

I've talked about this in other

play16:10

scenarios like where there there

play16:13

explicit performance bounds that the

play16:15

extension author has to hit or we just

play16:17

like disable the extension so I think

play16:19

there are ways now and then when you're

play16:22

saying like thousands of buttons like

play16:23

that's another matter um but again when

play16:26

we add those extension points where we

play16:27

allow to be surfaced that's going to

play16:30

require us thinking pretty carefully

play16:32

about how to tuck those things away uh

play16:35

and

play16:36

avoid chaos but at least from

play16:38

performance like the problem with Adam

play16:40

was we just like ran people's extensions

play16:42

on the main threet like

play16:47

goodbye We're not gonna make that

play16:49

mistake again yeah Antonio you were

play16:52

trying to jump in oh yeah I think one

play16:54

example that comes to mind and you know

play16:56

one could say a lot of things about Mech

play16:58

API you know I I certainly could say a

play17:00

lot of things about

play17:02

apis uh interacting with them as as a

play17:05

nightmare sometimes but you know if you

play17:08

if you think about an iPhone and like an

play17:09

application on an iPhone there's no way

play17:11

you can like go in the home screen and

play17:13

kind of clutter you know the the base

play17:16

experience right and I really like that

play17:18

it's like okay you have a lot of

play17:20

flexibility right but you know it's in

play17:23

places where like don't degrade the

play17:25

overall experience and so yeah like

play17:27

Nathan was saying saying like it's going

play17:29

to be like a not only an engineering

play17:31

effort I think also like a ux effort

play17:34

understanding like what you know what

play17:36

those uh extension points are what those

play17:39

seams are and where where to plug them

play17:42

but yeah I like the idea of yeah doing

play17:44

it uh the Apple Way in that in that

play17:46

sense um but I mean that's really hard

play17:49

no in that the easy way easy that's also

play17:54

hard but the easy way would be to just

play17:56

restrict a lot of things and say say

play17:58

extensions can only do this and this and

play18:00

that but I do think I mean I think

play18:03

Nathan you mentioned it last time that

play18:07

we do want something like scriptability

play18:10

right and we do have things like

play18:13

presetter which allow you to really in a

play18:16

nice way you know modify the code or

play18:18

script around it so we want to expose

play18:21

some of this but isn't that really hard

play18:23

to find that exact spot where you give

play18:26

enough power without the whole thing

play18:28

falling over I think I don't know I'm

play18:31

feeling pretty bullish about our

play18:34

current

play18:35

design of using web assmbly and

play18:38

eventually we could do the same thing in

play18:39

like a V8 isolate or presumably python

play18:42

has their own equivalent if we had to

play18:44

going that way our whole application is

play18:46

multi-threaded we have a real clear

play18:47

distinction between the main thread and

play18:49

the rest we have shared memory

play18:51

concurrency um so yeah it's hard we've

play18:54

put a lot of investment into the

play18:56

technical choices we we've made

play18:59

uh to make it doable at least from a

play19:01

performance perspective but yeah I mean

play19:03

I don't take it lightly um but I also

play19:05

think that like we are positioned to do

play19:07

it well uh if we think carefully as we

play19:11

proceed from a design perspective but

play19:14

yeah it's hard building apis I mean we

play19:16

really learned that with Adam of just

play19:18

like having an extension API is really

play19:20

hard uh versioning it uh evolving it CH

play19:25

it's all challenging but I think having

play19:27

done it once before I made a lot of

play19:30

mistakes we're pretty well positioned to

play19:33

avoid those mistakes and the foundation

play19:36

that we have is pretty solid so when you

play19:40

then say scriptability

play19:42

um what do you have in mind like what

play19:44

would be oh let's take a step back sorry

play19:46

I I do think with the stuff that Zed has

play19:51

and treit I think there's a lot of

play19:54

powerful stuff you can build on top of

play19:56

it or in extensions if that stuff works

play19:58

Expos and I'm

play20:00

wondering what do you have in mind what

play20:02

do you think would be the first big

play20:06

milestone for script ability or

play20:08

extensions or something like

play20:10

that I mean and it being possible be

play20:12

great because there's a lot of people

play20:14

that want that yeah um so that's one

play20:17

thing so that means just you know the

play20:18

ability to modify tax with Tre apis or

play20:21

syntactic we apis or something like

play20:24

that yeah um I don't even know how Sy

play20:28

Ally aware em it needs to be but

play20:30

obviously it would be potentially

play20:31

helpful in making sure that we're doing

play20:34

these expansions in this particular

play20:35

example and in a context where it makes

play20:38

sense I mean yeah the hard part for me

play20:41

is like my imagination runs a little

play20:43

short on this because like I don't need

play20:44

to write any extensions since I can just

play20:46

do whatever I want to do write in the

play20:48

editor but maybe you guys have better

play20:51

ideas like off the top of your head for

play20:53

me it's a Val what I like about it is

play20:56

that I don't know what people are going

play20:58

to going to do with it although that is

play20:59

challenging like you do need

play21:01

to build an API with something in mind

play21:04

for what people can do um so specific

play21:07

use cases I I haven't maybe spent enough

play21:10

time thinking about the max do you have

play21:11

any more having dug in started working

play21:14

on it yeah for scripting I mean I can

play21:17

imagine myself wanting

play21:19

to have uh like simple commands that I

play21:22

might run where I would like I'm in a

play21:24

pain editing some file and I run a

play21:26

command and it uses a combination of

play21:29

tree sitter and like GP to like look for

play21:32

tests for the file that I'm in and like

play21:34

open them up in another pain and a split

play21:37

or something and like put my cursor just

play21:40

like you

play21:41

know scroll the view to show the

play21:44

test um or yeah things like that like

play21:48

moving searching for things in the

play21:50

project searching for things in a buffer

play21:53

searching using rexes searching using

play21:55

syntax positioning cursors maybe doing

play21:59

edits I feel like there's like a I can

play22:01

think of a lot you could do with like a

play22:02

pretty small number of apis like that

play22:04

where if you you can open a pane you can

play22:06

you can find the open pane you can you

play22:08

can do a search I'm imagining at

play22:10

different different code bases people

play22:12

would have certain things that they do a

play22:14

lot like you know maybe if you're

play22:16

working I don't know like on a rails

play22:19

code base and you want to like open the

play22:21

what I don't even remember now

play22:23

controller tests for the controller

play22:25

scripts in Vim that would do stuff like

play22:27

that and would be a lot of times with

play22:29

just GP it would be done and um but

play22:32

stuff like that I want to make really

play22:33

because I think that is important for

play22:35

people's productivity and I think it's

play22:36

not it's like pretty low hanging in that

play22:39

like you don't need to build custom UI

play22:41

for it you just need these like ability

play22:43

to Min editors and pains and it's really

play22:46

um a lot of the productivity in

play22:48

scripting is around like core features

play22:49

like that

play22:51

um I want to do a good job with those

play22:54

apis one issue that came up I think a

play22:57

couple weeks back where some user was

play22:58

saying I want to be able to execute any

play23:02

function that I have my cursor on and

play23:04

then the first reaction from bunch of us

play23:06

was what what does that mean but I think

play23:10

now that we've talked with the user I

play23:12

think what they want is similar to I

play23:15

think what you have in emac where you

play23:17

could put your curse on any s expression

play23:20

and then say evaluate this and that's

play23:23

why I think we we could do something

play23:26

like this with tri right you could say

play23:28

I'm in a ruby file so now when I hit

play23:30

this key binding evaluate the expression

play23:33

or the biggest block or whatever it is

play23:35

that I have my cursor in um so that

play23:38

stuff would be really cool this

play23:40

interactive evaluation of code syntax

play23:43

like bringing in um Kyle Kelly like he's

play23:46

been playing around with just like a

play23:50

couple days with was it look like to get

play23:52

Jupiter runtime support um yeah where

play23:56

you can yeah so what would the extension

play23:58

API look like for that it might not be

play24:01

like everything you need to build the

play24:03

Jupiter integration but it might be like

play24:05

oh this exists and um you can reach out

play24:09

and gra tree sitter and call the other

play24:11

API to a valent and appropriate runtime

play24:13

yeah that would be awesome and for me

play24:15

the the thing I've always thought is

play24:16

just like the ability for people to just

play24:19

solve their own problems um is going to

play24:22

scale much better long term I think than

play24:25

uh us trying to solve everybody's

play24:27

problems for them just doesn't scale and

play24:29

we could build you know a version of Zed

play24:31

for python and a version of Zed like I

play24:34

think jet brains takes that path but I'd

play24:36

much rather build one tool that uh is

play24:39

flexible enough for people to make their

play24:41

own that was the same dream behind Adam

play24:45

we just took it you know we turned the

play24:47

dial to 11 and which I'd love to get the

play24:51

dial to 11 but maybe it gets to 11 in

play24:53

year four instead of year one like uh

play24:57

sort of incrementally get there while

play24:59

holding our other values uh constant and

play25:02

I do think I mean correct me if I wrong

play25:04

here but there's this I don't know why

play25:07

I'm thinking in terms of these axes but

play25:10

batteries included versus nothing at all

play25:13

right you you Z out of the box right now

play25:18

understands a lot of languages

play25:19

understands a lot of language servers

play25:21

people call it out and they say nice I

play25:24

open that the first time in my tpes

play25:25

project and it immediately did Auto

play25:27

complete in all of this super cool do

play25:30

you think there's a limit to that where

play25:32

you know this is the core subset of

play25:34

batteries included but no more than

play25:36

eight batteries 10 batteries is a little

play25:38

bit too much something like this the

play25:40

rest you have to go with

play25:41

extensions be I mean and again like I

play25:44

think the hard part it might be

play25:45

everybody needs a different battery

play25:47

right for whatever they're doing but

play25:49

what are your thoughts on this yeah for

play25:52

me like whenever we include something in

play25:54

the editor I feel like we're making a

play25:56

promise that's going to work as certain

play25:58

way and so like basically like

play26:01

classifies this core as like as like

play26:03

things that we can you know uphold where

play26:06

we can uphold that promise to our users

play26:08

yeah everything else I don't know it's

play26:10

like I mean of course yeah like you said

play26:12

everybody needs types you know different

play26:15

types of batteries and you know um yeah

play26:18

I'm not sure like yeah where to draw the

play26:20

line um I that is where you draw it

play26:22

though yeah it's just like it is not

play26:25

humanly possible and and we want to grow

play26:27

our team but even if we do grow our team

play26:29

like it's just not possible for our team

play26:31

to cover every everything like but it is

play26:35

possible for us to cover a lot and I at

play26:37

the end of the day people just want an

play26:39

editor that works the way they want it

play26:41

to

play26:41

work I think like they don't I don't

play26:44

know I guess there is a some set of

play26:45

people that really get off on like you

play26:48

know engineering their own keyboard out

play26:49

of wood with like uh doing their own

play26:52

soldering and then customizing their

play26:54

editor you know they just want an editor

play26:56

tool and put it all together but I think

play26:58

the vast majority of people kind of me

play27:00

included would be happier if they just

play27:03

turn it on and it works um so yeah

play27:07

that's kind of we're trying to find the

play27:09

right balance there I think like we took

play27:10

a lot of languages into core because we

play27:13

didn't have extensibility quite ready um

play27:15

some of those were going to be spinning

play27:17

back out because it's just like the

play27:18

quality of that experience is going to

play27:20

be higher if people other than us are

play27:22

maintaining it so it really just boils

play27:24

end that like I think Antonio you got to

play27:26

it great like can we

play27:28

and we're not yeah we're going to try

play27:31

but like you you know we may drop the

play27:33

ball from time to time like forget to

play27:35

update a language server to the latest

play27:36

version or we're not using the right one

play27:39

um but like I think that's the right

play27:42

attitude like if it's in the core then

play27:43

it should be good and we're maintaining

play27:46

that and there's only so many of us so

play27:49

many hours in the day did you have this

play27:52

uh principle say 8 weeks ago was this

play27:56

newly formed when we hit

play27:58

you know the open sourcing of Zed and

play28:00

all of the issues came in and the pull

play28:02

requests oh we knew it would be like

play28:05

this yeah I I did yeah uh it's why

play28:09

extensibility was like pretty high up in

play28:10

the road map because and Linux as well

play28:13

both of those

play28:14

because those are both kind of like we

play28:16

knew people would want to get it working

play28:18

on Linux and whether we liked it or not

play28:20

or you know scheduled it then or not

play28:22

people were going to attempt to

play28:24

contribute on that front so we wanted to

play28:26

be receptive to that and then we knew

play28:28

that people were going to attempt to

play28:30

contribute things that yeah Jason

play28:33

Rudolph who used to work with us on Adam

play28:36

said like yeah open source contributions

play28:40

are sometimes like someone giving you a

play28:42

free puppy and

play28:44

like so it's to feed it scheduling the

play28:47

extensibility now is very deliberate

play28:49

which is like we knew uh we didn't want

play28:51

to delay o Source on that stuff being

play28:53

ready but we knew like pretty soon we'd

play28:56

need kind of an escape for free puppies

play28:59

that we just couldn't adopt and also I

play29:01

want to add on top of that that's not to

play29:03

say that if something's in the core you

play29:05

know it's still an open source project

play29:07

like people can still help us maintain

play29:09

you know improve the quality of that

play29:10

yeah um it's just like yeah the barrier

play29:14

to entry I guess is going to be a little

play29:16

higher you know we're going to we're

play29:18

going to be more we're going to feel

play29:19

more responsible about maintaining you

play29:21

know a certain type of quality uh for

play29:23

anything that goes into core so I don't

play29:25

know how to formulate this and in it's

play29:27

sounds they mean it less controversial

play29:29

it sounds but okay we've all been

play29:32

involved in this one issue where the key

play29:34

bindings were changed from The Zed key

play29:37

bindings to the vs code key bindings

play29:40

yes so this was uh yesterday right yes

play29:43

yesterday default key binding changed to

play29:46

one that was more vs code like and I do

play29:50

think you know you all powered through

play29:52

or are powering through I don't know if

play29:54

you changed it locally still powering

play29:56

through yeah through never give up but I

play29:59

think I think it brings up an

play30:01

interesting question where you know

play30:04

would you ever tell a user not in these

play30:07

words but through the product

play30:10

that hey the way you've been doing it is

play30:13

wrong or here's a better way when

play30:16

somebody says hey here's here's

play30:17

something we should build in the editor

play30:19

like I don't know I want to show

play30:22

pictures next to my code so I can type

play30:24

off code of pixelated jpack so whatever

play30:27

it is is I don't know dumb example is

play30:29

this something where you would say no we

play30:31

found a better way to do this this is

play30:33

not something we want in here or would

play30:35

you always

play30:36

say whatever you want like you you want

play30:39

a shortcut to duplicate a line 5,000

play30:41

times and that's built in go for it you

play30:44

know does anything come to mind here

play30:46

where you say this is our philosophy of

play30:47

text editing and we know what it is and

play30:50

if you know there's stuff that can bump

play30:52

against it and that we don't want inste

play30:54

I think for me I like to not

play30:58

I you know in that instance of the

play31:01

switching our bindings to be more like

play31:03

VSS code even though it was going to be

play31:04

painful for all of us like for me what

play31:07

won out was like being if there's

play31:10

something that we can just be compatible

play31:12

with such that we don't have to explain

play31:13

anything to anyone someone is going to

play31:15

show up and it's just going to just work

play31:17

for them with no explanation from us

play31:19

needed I value that really highly um and

play31:22

that's why I even though I think the key

play31:24

bindings are I don't like the new

play31:27

default key bindings as much like there

play31:29

you know we we basically added a key

play31:31

binding for alt up back when that didn't

play31:34

I don't think that conflicted with

play31:35

anything and vs code didn't have a

play31:36

default binding for select larger syntax

play31:40

node that that's example that I'm keep

play31:42

bumping up against and so we picked one

play31:45

but now the vs code ships with that

play31:48

feature um and they have a default

play31:50

binding for it I think it makes sense

play31:51

for us

play31:53

to um use it because it's still you know

play31:57

if someone really hates it they can

play31:59

customize it I might have to do that

play32:01

because I'm not able so far to get used

play32:02

to the VSS code one um but I I really do

play32:06

value being just sort of compatible with

play32:09

any standards that exist not that vs

play32:10

code is a standard but it's just a it's

play32:12

a lot of our a lot of people um yeah 75%

play32:16

of the market or something like yeah

play32:19

yeah so if there's something like that

play32:20

we can just work with I'm going to air

play32:23

on the side of kind of adopting that

play32:26

being standard fitting in with the

play32:28

ecosystem but then there's other things

play32:30

right like vs codes I don't think they

play32:33

have yet added multi buffers and like

play32:37

that's our find experience and I just

play32:39

like that better personally than like a

play32:42

little menu a panel at the bottom where

play32:44

it's showing you locations and you're

play32:46

jumping around so we decided to Buck the

play32:48

trend on that one and we've paid for it

play32:50

a little bit there are some people that

play32:51

don't even understand that those things

play32:53

are editable like they don't you know

play32:56

it's a little less familiar it's

play32:57

different so it's not like we're never

play32:59

willing to let like I don't I think I'll

play33:02

be pretty disappointed if we just build

play33:03

like a faster clone of the S code we

play33:05

have our own things to express but it

play33:09

needs to be like clearly better or

play33:11

clearly really matter to what we're

play33:13

trying to express to deviate that much

play33:15

from what people expect but I think you

play33:17

were also asking like how receptive are

play33:20

we to kind of different ways of doing

play33:23

things and I think it's going to be Case

play33:24

by case I don't yeah

play33:27

I think we'll add a duplicate five times

play33:30

command the multi buffer I think is a

play33:33

perfect example and the other thing with

play33:36

the treesitter select larger and smaller

play33:38

syntax note I don't think vs code has

play33:40

this right they don't have the the

play33:43

syntax not well theya that was what

play33:45

disrupted me so much is this person like

play33:48

open a PR which I think was a good

play33:50

change that they suggested that they

play33:51

said vs code now has these bindings by

play33:54

default select larger syntax node

play33:57

so Z should use the so but yes but when

play34:02

we first built Z that didn't that wasn't

play34:04

a thing in BS code yeah I guess you know

play34:08

say you have the multip is a great

play34:10

example but say you have the ability to

play34:12

select I don't know you can jump to the

play34:14

start of a block and then you can hit

play34:16

something else to jump to the end of the

play34:18

block and then that way you could select

play34:19

the whole block or something like this

play34:22

and then guess what with freeit you

play34:24

don't even have to do this you can just

play34:25

in the block say select this outer scope

play34:27

or something like this and that to me is

play34:31

an example of hey we found a better way

play34:33

to do this and now if somebody were to

play34:35

come along and say Hey I want this other

play34:38

way to be built in first class and that

play34:41

is you know the question of would we

play34:43

then push back and say no actually we we

play34:45

think this is a better way but what you

play34:47

said about the multier sounds like if we

play34:49

are confident we found a better way to

play34:51

do something then this is what we want

play34:54

to do yeah I do think we have a

play34:55

perspective about how we want what we

play34:58

want Envision for code ux and it's not

play35:02

we I want to be standard when when

play35:03

there's a onetoone thing

play35:06

to yeah standard to adopt but there

play35:08

often isn't like um multi buffers is

play35:11

maybe one of our biggest concept that

play35:14

doesn't exist in other

play35:16

editors yeah like I don't I've never

play35:19

worn the badge opinionated as like a

play35:22

super big badge of honor cuz like I tend

play35:25

to find people that are opin kind of

play35:27

annoying so like I don't yeah I don't

play35:30

want to be like oh we're so opinionated

play35:31

we have an opinion on everything and

play35:33

there's a way to do it and you got to do

play35:34

it our way that's not how I want to be

play35:38

uh but I also don't want to be like a

play35:40

slave to how it's always been done uh I

play35:43

want to be willing to innovate and go

play35:44

out on a limb I don't mind like there

play35:47

being redundant ways of doing things

play35:49

like if there's a way that people are

play35:51

used to doing things that maybe is

play35:53

working for them better than our Better

play35:55

Way like I would entertain it as long as

play35:58

it's I don't think for but I don't think

play36:00

I would like have an alternative to the

play36:02

multi-buffer for fine that I would want

play36:04

to maintain just because some people

play36:06

preferred that like that's a pretty big

play36:08

feature I want to do it that way so I

play36:10

feel like it's a case by case thing but

play36:13

I'm not really here to like ram my way

play36:15

of doing everything down people's

play36:17

throats like um yeah I want to innovate

play36:21

and say Here's a good way I think of

play36:24

doing things and that we're excited

play36:25

about um but that aura of like

play36:28

exclusivity or being a knowitall that is

play36:31

going to tell you how you should code um

play36:35

I don't know I'm a little I'm not

play36:37

that not rotating too hard on that um

play36:41

yeah here's but there you know there are

play36:42

some things I think that we found that

play36:44

are cool multi-buffer being one of them

play36:46

of like this is just in many cases a

play36:48

great way of fixing a lot of compile

play36:50

errors uh so I I want people to try it I

play36:53

don't know maybe that's a red flag for

play36:55

people like I'm not opinionated it

play36:56

enough but yeah I don't think so okay it

play36:59

just means we can't expect a webinar

play37:01

from Nathan of the best way to edit text

play37:04

or something like

play37:05

this yeah I mean I'm not even using

play37:07

modal bindings these days because I used

play37:11

them for a while and I got used to that

play37:13

but then we wrote Adam and I had to go

play37:15

back to the emac style bindings and I

play37:17

just like

play37:19

never yeah I kind of put up with making

play37:21

that switching cost of a muscle memory

play37:23

to Vim just to get like an editor hate

play37:27

back then um yeah but so yeah I don't

play37:30

know am I the text editing ninja of the

play37:32

universe it's unclear no yeah you got

play37:36

two keyboards though and in VOR so I

play37:39

mean that's true like pretty ninja to

play37:43

me yeah Ed the this week uh Antonio and

play37:47

I were pairing and my Vim muscle memory

play37:50

is pretty strong and I don't know if he

play37:53

knows but in Vim he's on but in Vim

play37:56

sometimes stuff is weird because you

play37:57

have registers and when you delete text

play37:59

it gets put in your clipboard and stuff

play38:01

like this and I subconsciously grown

play38:04

aware of this where I do weird things

play38:07

where I paste the thing first versus

play38:10

deleting something else because deleting

play38:12

something else might overwrite My

play38:13

Clipboard and whatnot and Antonio was

play38:16

watching me when I went into a buffer

play38:18

and I just wanted to place the whole

play38:19

content but what I did was I jumped to

play38:21

the end pasted my stuff there then went

play38:23

back up selected the top half of the

play38:25

buffer and then selected this and there

play38:28

was a pause and he just goes can you do

play38:31

command a

play38:32

and past it and then we had to do it two

play38:36

minutes later and I did it his way and

play38:39

he he's like thank

play38:41

you it I realized how awkward it was

play38:44

what I was doing but I have another

play38:46

question is there anything that 3 years

play38:49

ago you said this will be in Zed but you

play38:52

dropped it because you realize this does

play38:54

not make sense or it doesn't fit in no

play38:59

we we added chat like really

play39:02

early and then realized like okay we're

play39:06

not even editing in this thing yet what

play39:08

are we

play39:09

too we burned a couple weeks on that I

play39:12

just gotten really excited

play39:14

about collaboration and I don't know I

play39:17

wanted to explore it but it was just not

play39:18

the right time but now it's back uh

play39:21

still a little unloved although people

play39:23

from the community I saw someone opened

play39:25

yeah Everson opened a pork Quest

play39:27

improving it which is supposed to see so

play39:29

that was one thing have we dropped

play39:30

anything else I don't know I don't yeah

play39:32

there's some stuff I'd like to drop from

play39:33

like dentation still like the way that

play39:36

we serialize workspaces I'd likeed to be

play39:39

simpler but nothing from a product

play39:41

perspective so far interesting um yeah

play39:45

but we have so much to build it's like

play39:48

yeah um yeah I mean it's like uh

play39:52

skipping a meal when you're already

play39:53

starting to death or something I don't

play39:55

yeah so it's like yeah yeah yeah is

play39:57

there anything you'd like to remove tors

play39:59

move no

play40:01

I no remove I I'm I discovered the

play40:06

journal mode that you apparently added

play40:08

Nathan two days

play40:10

ago by accient I just type journal in

play40:13

the command thing and then I real what

play40:15

there's a journal mode and I looked at

play40:17

the G blame and I saw that you added it

play40:20

and also fun fact that's just 150 lines

play40:22

right it's not it's one file that does

play40:25

all of this in Rust was pretty cool yeah

play40:27

and it's not like the world's greatest

play40:29

journal or anything it's just like

play40:30

create a new entry you know that has a

play40:33

time stamp with directory structure a

play40:35

certain way it works for me I hav it

play40:38

like before Z anybody was even using Zed

play40:41

just because I need it yeah I do think

play40:44

that's interesting because it doesn't

play40:46

take up anything it doesn't cost

play40:48

anything it's just you can type journal

play40:50

in and if you want it you can get it

play40:51

otherwise it doesn't hurt you but like

play40:54

that's an example of something that

play40:55

should probably be in extension I think

play40:58

at some point or if it weren't an

play41:00

extension I would want to like go harder

play41:02

on it and

play41:03

really build like a more full-fledged

play41:05

journaling experience into Z and have it

play41:08

but it seemed yeah one or the other um

play41:11

probably the former probably make it

play41:13

into an extension in the short term um

play41:16

but it's like not doing that much harm

play41:18

right it's 150 lines of code

play41:20

and but most people don't know about it

play41:23

we don't really advertise it right yeah

play41:26

what I find interesting is more these

play41:28

little small decisions that come up

play41:30

again and again for example do we add

play41:33

emojis you know to the chat or Emoji

play41:37

reactions is you know there's like these

play41:40

small decisions that can have a huge

play41:42

impact or reactions or something to like

play41:44

collaboration notes right where somebody

play41:46

could leave a thumbs up or something or

play41:48

do we display images is marked down by

play41:51

default rendered and or always enabled

play41:55

and I

play41:56

think I don't know I see these come by

play41:59

in pull requests and I find it really

play42:01

hard I I find it easy to overthink them

play42:04

right it's oh does this put us in a

play42:06

different direction instead of emojis

play42:08

should we have pixelated emojis is this

play42:10

more in line with the aesthetic of you

play42:12

know something like this

play42:14

um but yeah I don't know I I think it's

play42:16

really hard to find to find a principle

play42:19

that you can hold through all of these

play42:22

decisions I agree and yeah i' would be

play42:25

lying if I said I had it all figured out

play42:27

and all in my head I think we're all

play42:30

like just like finding our way and the

play42:33

code you own ends up owning you so like

play42:36

that's one thing I'm just cognizant of

play42:38

is like as we add these things these are

play42:40

things that whenever we when we changed

play42:42

the foundation on which that thing is

play42:44

built you know now we have to go visit

play42:46

it and deal with it it just adds surface

play42:48

area and mass so that's the only that's

play42:51

one thing and then like yeah that's

play42:52

interesting Emoji R like that sounds

play42:54

good to me other than we have to

play42:56

maintain it and keep it working yeah um

play42:59

but like those specific examples

play43:01

examples sound good but it just seems

play43:03

like something we'll have to figure out

play43:05

as we go like yeah I guess I'd like to

play43:07

be as big a tent as possible and be

play43:09

inclusive and include a lot of people's

play43:11

workflows without

play43:13

being a Frankenstein and that's a tough

play43:17

balance to strike but maybe we could

play43:19

sort of like overcorrect in One

play43:21

Direction like add something in and then

play43:23

just realize like we can't have this

play43:25

anymore it's kind of tough to take it

play43:26

away cuz now it's kind of like you're

play43:28

taking something away from people but

play43:31

that's if you're willing to do that then

play43:33

you're willing to kind of take more risk

play43:35

as well in what you had um so yeah I

play43:38

don't want to be like uh ill-considered

play43:40

and there I I still think there are ways

play43:43

for where Zed P parts of Zed can be

play43:46

better resonant with other parts of Z

play43:47

and there could be a more

play43:49

holistic product Vision although I can't

play43:51

come with any specific examples right

play43:53

now so that there's that um but like

play43:56

yeah so I want it to feel like a

play43:58

holistically thought through

play44:01

well-designed product um and so sort of

play44:03

the more we expand our surface area and

play44:05

the faster we do that the more

play44:07

challenging it will be but I'm willing

play44:09

to kind of get there sort of add stuff

play44:12

and then integrate it um that's where my

play44:14

head's at and we'll see if that ends up

play44:17

being a good idea and how that works out

play44:19

and we can adjust that's where my head's

play44:21

at now cool I think that's it right

play44:23

we're coming up on time does anybody

play44:25

else want to add anything thing like

play44:27

never coffee machine support in Z my

play44:31

name stands behind this oh if it's an

play44:34

espresso machine there you go

play44:37

then foot pedal support in that yeah

play44:41

like one crazy thing that someone's

play44:43

brought up and I thought about too is

play44:45

like could we embed you know the

play44:48

platform specific browser so that people

play44:50

could like pull up a tab that's pointing

play44:54

at the site that they're building or

play44:55

something yeah um you know and that's

play44:59

one example of like web technology is

play45:01

slow so I don't want to bring it

play45:03

in but then that does have utility so

play45:06

like I don't know I think that is

play45:08

potentially pretty cool and like but I

play45:09

don't know yeah there's no like yeah you

play45:14

could maybe list some outlandish things

play45:16

that I would say like yeah I don't know

play45:17

it doesn't seem like we need coffee

play45:18

machine support in that's for sure

play45:22

um but nice yeah that's cool

play45:26

I think it's I don't know we

play45:28

don't just from mying the way I see it

play45:31

it sounds like you have pretty strong

play45:33

principles right and from from that the

play45:37

rest flows as in what you said about

play45:40

extensions I

play45:42

think it's

play45:44

pretty it says a lot when you say an

play45:48

extension only has this amount of time

play45:50

to do something

play45:52

otherwise you know it's disabled or we

play45:55

we ignored result or something like this

play45:57

because that already says a value is

play46:00

performance a value is speed latency and

play46:03

that I think then ripples through the

play46:05

rest of the system or the rest of the

play46:07

community like I don't want it to be the

play46:10

ideal that our North Star is like you

play46:13

can't make your Zen slow like yes

play46:16

because ultimately the bot stops with us

play46:19

and so it's like if that means that you

play46:20

can't add a feature because the author

play46:23

of that feature like just didn't have

play46:24

the skill or the time or whatever to

play46:26

like meet your the

play46:28

deadline then like I'd rather you have a

play46:30

faster Z with fewer

play46:32

extensions you know then letting us get

play46:35

to a point where we bog down and then

play46:37

we're like oh well it's you installed

play46:38

too many extensions it's just like I

play46:40

don't want that to be a state you can

play46:41

get to so I hope we can stick to that

play46:45

yeah that's cool the other thing I

play46:47

noticed is this week well basically

play46:51

today it changes things when you have

play46:55

such an engaged community in that I

play46:58

think in the worst case you put some

play47:00

stuff in it goes out into the world you

play47:02

don't know if anybody uses it it you

play47:05

don't know whether you can remove it

play47:07

cannot remove it you don't know if it

play47:09

slows somebody's machine down but in

play47:12

this case I changed something two weeks

play47:14

ago and today people were saying Hey I

play47:16

want do you think this is the good you

play47:18

know the right decision can we change

play47:20

this back what do you think about this

play47:21

what do you think about that and this

play47:23

constant form of feedback also changes

play47:26

because you you you have feedbacks only

play47:29

you can make these decisions and it's

play47:30

not just oh you know we added all of

play47:33

this stuff and we didn't know that it

play47:35

boots up in 18 seconds for people

play47:37

because we don't use 42 extensions or

play47:39

something like this so I find it

play47:42

interesting the community has this Fe

play47:44

form of feedback and seeing how the

play47:46

product is used in the real world I love

play47:49

that yeah I mean we need the engagement

play47:51

of the community cuz like I don't know I

play47:54

don't even have my head wrapped around

play47:56

everything that's going on in Zed right

play47:59

now um and like people are going to be

play48:03

able to put a lot more thought into

play48:05

particular nuances that

play48:08

than I might be able to so thanks

play48:11

everybody that's listening to this yeah

play48:14

well thank you thank you for doing this

play48:16

I think we're at time right sounds good

play48:18

yeah cool cool cool

play48:20

Namaste bye

Rate This

5.0 / 5 (0 votes)

Related Tags
IDEvsEditorZedUXSoftwareDevelopmentCollaborationToolsPerformanceOptimizationUserExperienceTechnicalDiscussionProgrammingLanguagesCodeEditingSoftwareDesign