Zed Founders Chat #4
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
💡 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.
🌐 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.
🔄 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.
📋 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.
🔄 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.
🤔 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
💡IDE (Integrated Development Environment)
💡Performance
💡Minimalism
💡Language Servers
💡Treesitter
💡Extensions
💡Collaboration
💡User Experience (UX)
💡Scriptability
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
want to kick things off product
philosophy talking about product
decisions let's do it all right um the
funny thing is I somehow again have this
idea of a spectrum here which popped up
last time right the spectrum of
collaboration um but let's kick this off
so my my question is where do you think
Zed falls on a
spectrum between IDE and editor from say
Visual Studio to
Nano and where should it land idees have
always had a certain connotation for me
that comes from idees I've used in the
past which is they have a lot of
features but you always seem to have to
pay for those features uh in the form of
either sluggish UI or a cluttered UI or
both seems like maybe jet brains has
done a better job like streamlining the
look of their UI but it still doesn't
feel feel quite as fast as the vibe I
would get in what traditionally I would
call an editor so something like them or
back in the day like textmate I just
remember the contrast
between text like you know early in my
career writing Ruby and textmate where
really you know there wasn't a lot of
help but it was at least fast um and
then you know eventually adopting Ruby M
or whatever and getting all that power
but just being so frustrated with the
latency um so it's always been this
trade-off and my dream has always been
to have po to have a tool that was
incredibly powerful um but also had a
Sleek minimal Vibe and super fast super
fast and those are tough to combine I
mean yeah sort of spent like most of my
career trying to get to the point where
we could combine them um but that's the
goal but I always want to air on the
side of minimalism in the ux and yeah
the analogy I always use was like on the
model S Teslas where you walk up and the
door handle like pops out of the side so
it's like tucked away when it doesn't
when it would create drag you know but
then available at just the right moment
that's the dream so
performance as many features as possible
but
not at the cost of performance or
minimalism or bloat or something yeah
not at the cost of slowness and noise um
like keep my code front and center and
don't introduce latency between the
fundamental act that I'm trying to
achieve which is editing that code right
like that fundamental experience needs
to be fast no matter what Antonio do you
want to add something yeah I mean yeah a
couple of thoughts like one one thought
is this you know my the first
programming language that I picked up
was uh C and I used to be a Windows user
so I remember like opening Visual Studio
not Visual Studio code this is you know
OG visual ual studio and like they had
this loading screen because like the the
the startup time was so slow that like
it would you know it would be like
Visual Studio 2005 whatever loading you
know dll 1 2 3 BL blah um so yeah that
was yeah same same as Nathan like the
contrast from that to using I think was
text mate that I used U after that was
insane um yeah I think like the
distinction between IDE and editor I
don't know I don't haven't really
thought about you know why you know it
exists to me like I don't know like I
would love to have all the features of
an IDE and I think it is possible for an
Editor to have all those features the
theory I have and I just formulated this
Theory so I some very well thought
through is that I think it is possible
to combine them all it's just that I
don't know my sense is that those slow
IDs are just the result of you know
tacking things on you know adding things
on top like bolting them on it's like oh
we could have this this feature okay
let's add it we could have this other
feature okay let's add it and like then
you end up with a list of like check
boxes and like things that are not
really you know integrated with with one
another so you have all these features
but they're not you know thought through
U vertically I don't know if that's true
or not but that's that's always the
impression I had you know oh let's add
another checkbox but it's it's not
really like you know the vibe we're
going for with Z yeah I guess the thing
is you know maybe it was a trick
question because this line between IDE
and editor it's not that clearcut
anymore is it like 10 years 15 years ago
you had Nano right no no language aware
features not even syntax highlighting I
don't think Nano ever had syntax
highlighting or was wasn't there Nano X
not sure but none of that and then
Visual Studio on the other side and now
with language servers treesitter all of
this stuff that you can plug into
editors things have changed and I guess
the interesting bit is is you know where
do we want to land like what you said
Nathan like which tradeoffs do we want
to make and what things will we not
adopt that an IDE has or what things you
know do we want to adopt I think I think
things have the situation has improved a
lot since there since the time when
there was a really big distinction
between editors and and Ides I think I
think the language server protocol
helped a lot uh Tre Setter helped some
for the editor to be like smarter than
you know have a like basic awareness of
Syntax for me like I think the
architecture we're at where the editor
has like syntax awareness and then for
like semantic understanding we call out
to a language server that like is not
coupled to any one editor is a pretty
good architecture and that's see like
that's kind of how you know Vim when
people say editor versus IDE usually
like in the editor camp they're talking
about vim and emac is like the point
essential editor but even those tools
now have LSP support and Tre sitter
inside so I I kind of think we're like
converging on a better design where like
editors have syntax awareness and not
just Zed but editors in general um but I
I still think
like there's improvements to be made
like one thing that you know I'm
thinking about ux that I still enjoy in
ide even though it's not it's not like I
would it wouldn't make me use them but
like I I still enjoy the act of like
renaming a variable in intellig and like
it highlights it you're editing and it's
like live editing the names in the other
places and I remember that was the thing
when we implemented rename and Zed that
was the thing in my mind I was like
that's a pretty cool thing that they do
with all their you know built-in
language analysis and we try we we like
explored doing it um you know we have
this combination of syntax awareness
with Tre sitter and then like a rename
call that we can do to a language server
and and that like I think for the most
part that's a pretty good it gives you
what you want it doesn't quite let us do
all the fancy stuff that IDE do but
maybe there's like room
for expanding what treesitter can do and
what the language server can do to like
let
us um you know do things like that so do
you think say performance wasn't an
issue and say it could be tucked away to
use Nathan's analogy is there anything
thing that comes to mind from the IDE
world that you would never add to zed
because you think this does not fit in
here this is not a z editor thing this
is an IDE type of thing not that I can
think of mhm I just like the term IDE
just always seemed weird to me like yeah
but I get the distinction but I don't
know it's a code editor you're just
trying to get work done as yeah I guess
so to integrate the development of
environment I guess I mean one thing
we're adding is like I think you know if
we're whatever it means to integrate the
development environment but one thing
that a lot of idees don't do a good job
integrating into the development
experience is the fact that other people
exist and that we're collaborating so
like I think we're kind of continuing
that IDE Vision by integrating yet more
concerns because that's the idea of an
IDE right it's it's not like I edit over
here and then I got my terminal and I'm
switching back and forth and I'm using
this like Hodge of tools it's all
combined into one experience and so I
think collaboration could be included in
that but no the only thing I want to
ditch from ades is the slowness and
the and the buttons
everywhere yeah so okay that's but
that's interesting that means when you
you're saying you want to integrate all
of it at basically no cost that's the
goal right no performance cost no
clutter cost so there's this other
spectrum of editor
and I would say on one end there's emac
on the other end there's vim and there's
multiple in between of course but on
emac the one end is to me editor as the
operating system you have this one thing
and you do everything in there and that
is the force multiplier because you are
always in emac and your shell is in emac
your compiler runs in emac your emails
your coffee machine everything's emac
means you you never have to leave it and
you're much more productive right
writing emails cooking coffee then on
the other hand there was this article I
think was by now 10 years ago somebody
was saying uh Unix as the IDE them is
the one tool in this environment of
other tools and that's where its power
comes from it's just one of many tools
so what you're saying that you want to
integrate more does that mean you're
tending more towards the emac side of
things and saying the power comes from
us putting more stuff into Zed for
example collaboration so you know it's
it's yeah I mean I don't want to like
the I want to surface like the fact that
a command line exists and like I like
that world I hate the world of there's
some esoteric project file that has all
of the details like that's very xcode
right where like interesting xcode P or
whatever and like everything is done via
this like point and click I don't know
so like that I don't want so maybe
that's an answer to that earlier
question of like I don't want like to
replace the command L experience with
buttons like that I don't think is a big
deal like I I I like being close to the
machine and communicating with the
machine linguistically but I would also
like if I don't know so I want the IDE
to be aware of and integrated cleanly
with the fact that there is a terminal
and there is a command line and and Aid
void the state where we try to like
Define everything in this visual
Paradigm be a natural outgrowth of Unix
the Unix philosophy and complemented I
think is more my
speed um but yeah if I can like hit a
single key binding instead of switching
to the terminal hitting up and hitting
inner to run a test which like uh you
know K and P are working on I'll take it
but like I don't want it hidden from me
the fact that that's just running a
command yeah that's a good I like that
Bare Bones Vibe yeah but just be
productive in it I think that might also
be one thing that I associated with
idees in that you just boot it up and
then you hit that green play button and
you don't know what happens but somebody
told you this is how you run it and then
when something goes wrong you don't know
what exactly happened there I feel like
so I don't want magic sorry yeah no no
yeah that's what you don't want right
you don't want this abstract way in
hidden but you want it cleanly supported
yeah anything to add into a new Max emx
versus wh where does it land with a z
land yeah um not not much to add I I I
think that yeah I don't want to abstract
away um like Nathan said I don't think
we want to abstract away things like git
and cargo test um but I also think
there's times when like the most
efficient way to use a tool is not
through the command line I think and I'm
I'm a little skep iCal of the like Unix
as the IDE Vision where it's like you're
fast like that the fastest possible user
experience for anyone no matter how good
their muscle memory is just to like
shell out to to like a code like if they
want to look up something like shell out
to do a command line search for it I
think that often we're going to by
integrating into the tool you can kind
of have a faster keyboard driven
workflow than than having
and anything you could do with like a
terminal editor running in a terminal
yeah but I mean I don't think we're
going to be building an email client
into Zed I could see building an email
client in gpy because I they all drive
me
crazy I mean it's definitely not at the
top of a list and it would
come those kinds of things would come I
would be very careful before adding them
because I I would worry they would
dilute our Focus so um if we become
extensible enough such that someone
could build an email client like cool um
but that seems like a ways out and not
our priority at all our priority is wri
in software and how do extensions fit in
because I do think that there might be a
danger
of extensions ruining this concept where
you add so many extensions and then
people say this is now slow there's like
15,000 buttons in the UI and then every
company has like a z default plug-in
configuration
and we end up with you know 50,000
buttons and it takes 30 seconds to boot
up like how do you see extensions coming
into this here I think it'll be I don't
want to say there's anything that we
won't let extensions do but I I
definitely think there's going to be a
our first several like Milestones with
extensions is going to be more about
like plugging into existing Zed features
and um you know obviously first one
adding languages but I think also things
like um you know we're adding this task
system and extensions that like help you
discover tasks to run and expose them to
you so there's like an existing workflow
all users ofet have and the extension
enriches like I think that's a very
there's a lot of mileage we can get out
of that or you know extensions letting
you kind of script workflows that are
unique to you like um opening files
looking for certain types of code in
certain files doing things with your
cursor in certain files making edits
that that you personally make you more
productive that that's like my priority
with extensions right now and less like
adding adding any new UI or like
building an email client building a
concept that doesn't even exist instead
using extensions I think it's something
we we may do but it's not
um I don't know it's we're not it's not
going to be like whereas like with Adam
from the start extend everything was an
extension so like everything we did had
to be doable via an extension it's it's
a different approach than that um and I
really think oh go ahead go ahead I
don't think that having a lot of
extensions has to be slow but that is
going to involve carefully engineering
the apis and how we run extensions like
they're going to be running isolated in
their own web assembly runtime on their
own thread I do think as we if we ever
put an extension and I don't know that
we ever will but if we ever did like say
we would put an EXT ition um on the
critical path of typing so that like
maybe it could inspect every character
you're inserting and do something I
would always want to if we ever did that
put like a deadline around it I think
I've talked about this in other
scenarios like where there there
explicit performance bounds that the
extension author has to hit or we just
like disable the extension so I think
there are ways now and then when you're
saying like thousands of buttons like
that's another matter um but again when
we add those extension points where we
allow to be surfaced that's going to
require us thinking pretty carefully
about how to tuck those things away uh
and
avoid chaos but at least from
performance like the problem with Adam
was we just like ran people's extensions
on the main threet like
goodbye We're not gonna make that
mistake again yeah Antonio you were
trying to jump in oh yeah I think one
example that comes to mind and you know
one could say a lot of things about Mech
API you know I I certainly could say a
lot of things about
apis uh interacting with them as as a
nightmare sometimes but you know if you
if you think about an iPhone and like an
application on an iPhone there's no way
you can like go in the home screen and
kind of clutter you know the the base
experience right and I really like that
it's like okay you have a lot of
flexibility right but you know it's in
places where like don't degrade the
overall experience and so yeah like
Nathan was saying saying like it's going
to be like a not only an engineering
effort I think also like a ux effort
understanding like what you know what
those uh extension points are what those
seams are and where where to plug them
but yeah I like the idea of yeah doing
it uh the Apple Way in that in that
sense um but I mean that's really hard
no in that the easy way easy that's also
hard but the easy way would be to just
restrict a lot of things and say say
extensions can only do this and this and
that but I do think I mean I think
Nathan you mentioned it last time that
we do want something like scriptability
right and we do have things like
presetter which allow you to really in a
nice way you know modify the code or
script around it so we want to expose
some of this but isn't that really hard
to find that exact spot where you give
enough power without the whole thing
falling over I think I don't know I'm
feeling pretty bullish about our
current
design of using web assmbly and
eventually we could do the same thing in
like a V8 isolate or presumably python
has their own equivalent if we had to
going that way our whole application is
multi-threaded we have a real clear
distinction between the main thread and
the rest we have shared memory
concurrency um so yeah it's hard we've
put a lot of investment into the
technical choices we we've made
uh to make it doable at least from a
performance perspective but yeah I mean
I don't take it lightly um but I also
think that like we are positioned to do
it well uh if we think carefully as we
proceed from a design perspective but
yeah it's hard building apis I mean we
really learned that with Adam of just
like having an extension API is really
hard uh versioning it uh evolving it CH
it's all challenging but I think having
done it once before I made a lot of
mistakes we're pretty well positioned to
avoid those mistakes and the foundation
that we have is pretty solid so when you
then say scriptability
um what do you have in mind like what
would be oh let's take a step back sorry
I I do think with the stuff that Zed has
and treit I think there's a lot of
powerful stuff you can build on top of
it or in extensions if that stuff works
Expos and I'm
wondering what do you have in mind what
do you think would be the first big
milestone for script ability or
extensions or something like
that I mean and it being possible be
great because there's a lot of people
that want that yeah um so that's one
thing so that means just you know the
ability to modify tax with Tre apis or
syntactic we apis or something like
that yeah um I don't even know how Sy
Ally aware em it needs to be but
obviously it would be potentially
helpful in making sure that we're doing
these expansions in this particular
example and in a context where it makes
sense I mean yeah the hard part for me
is like my imagination runs a little
short on this because like I don't need
to write any extensions since I can just
do whatever I want to do write in the
editor but maybe you guys have better
ideas like off the top of your head for
me it's a Val what I like about it is
that I don't know what people are going
to going to do with it although that is
challenging like you do need
to build an API with something in mind
for what people can do um so specific
use cases I I haven't maybe spent enough
time thinking about the max do you have
any more having dug in started working
on it yeah for scripting I mean I can
imagine myself wanting
to have uh like simple commands that I
might run where I would like I'm in a
pain editing some file and I run a
command and it uses a combination of
tree sitter and like GP to like look for
tests for the file that I'm in and like
open them up in another pain and a split
or something and like put my cursor just
like you
know scroll the view to show the
test um or yeah things like that like
moving searching for things in the
project searching for things in a buffer
searching using rexes searching using
syntax positioning cursors maybe doing
edits I feel like there's like a I can
think of a lot you could do with like a
pretty small number of apis like that
where if you you can open a pane you can
you can find the open pane you can you
can do a search I'm imagining at
different different code bases people
would have certain things that they do a
lot like you know maybe if you're
working I don't know like on a rails
code base and you want to like open the
what I don't even remember now
controller tests for the controller
scripts in Vim that would do stuff like
that and would be a lot of times with
just GP it would be done and um but
stuff like that I want to make really
because I think that is important for
people's productivity and I think it's
not it's like pretty low hanging in that
like you don't need to build custom UI
for it you just need these like ability
to Min editors and pains and it's really
um a lot of the productivity in
scripting is around like core features
like that
um I want to do a good job with those
apis one issue that came up I think a
couple weeks back where some user was
saying I want to be able to execute any
function that I have my cursor on and
then the first reaction from bunch of us
was what what does that mean but I think
now that we've talked with the user I
think what they want is similar to I
think what you have in emac where you
could put your curse on any s expression
and then say evaluate this and that's
why I think we we could do something
like this with tri right you could say
I'm in a ruby file so now when I hit
this key binding evaluate the expression
or the biggest block or whatever it is
that I have my cursor in um so that
stuff would be really cool this
interactive evaluation of code syntax
like bringing in um Kyle Kelly like he's
been playing around with just like a
couple days with was it look like to get
Jupiter runtime support um yeah where
you can yeah so what would the extension
API look like for that it might not be
like everything you need to build the
Jupiter integration but it might be like
oh this exists and um you can reach out
and gra tree sitter and call the other
API to a valent and appropriate runtime
yeah that would be awesome and for me
the the thing I've always thought is
just like the ability for people to just
solve their own problems um is going to
scale much better long term I think than
uh us trying to solve everybody's
problems for them just doesn't scale and
we could build you know a version of Zed
for python and a version of Zed like I
think jet brains takes that path but I'd
much rather build one tool that uh is
flexible enough for people to make their
own that was the same dream behind Adam
we just took it you know we turned the
dial to 11 and which I'd love to get the
dial to 11 but maybe it gets to 11 in
year four instead of year one like uh
sort of incrementally get there while
holding our other values uh constant and
I do think I mean correct me if I wrong
here but there's this I don't know why
I'm thinking in terms of these axes but
batteries included versus nothing at all
right you you Z out of the box right now
understands a lot of languages
understands a lot of language servers
people call it out and they say nice I
open that the first time in my tpes
project and it immediately did Auto
complete in all of this super cool do
you think there's a limit to that where
you know this is the core subset of
batteries included but no more than
eight batteries 10 batteries is a little
bit too much something like this the
rest you have to go with
extensions be I mean and again like I
think the hard part it might be
everybody needs a different battery
right for whatever they're doing but
what are your thoughts on this yeah for
me like whenever we include something in
the editor I feel like we're making a
promise that's going to work as certain
way and so like basically like
classifies this core as like as like
things that we can you know uphold where
we can uphold that promise to our users
yeah everything else I don't know it's
like I mean of course yeah like you said
everybody needs types you know different
types of batteries and you know um yeah
I'm not sure like yeah where to draw the
line um I that is where you draw it
though yeah it's just like it is not
humanly possible and and we want to grow
our team but even if we do grow our team
like it's just not possible for our team
to cover every everything like but it is
possible for us to cover a lot and I at
the end of the day people just want an
editor that works the way they want it
to
work I think like they don't I don't
know I guess there is a some set of
people that really get off on like you
know engineering their own keyboard out
of wood with like uh doing their own
soldering and then customizing their
editor you know they just want an editor
tool and put it all together but I think
the vast majority of people kind of me
included would be happier if they just
turn it on and it works um so yeah
that's kind of we're trying to find the
right balance there I think like we took
a lot of languages into core because we
didn't have extensibility quite ready um
some of those were going to be spinning
back out because it's just like the
quality of that experience is going to
be higher if people other than us are
maintaining it so it really just boils
end that like I think Antonio you got to
it great like can we
and we're not yeah we're going to try
but like you you know we may drop the
ball from time to time like forget to
update a language server to the latest
version or we're not using the right one
um but like I think that's the right
attitude like if it's in the core then
it should be good and we're maintaining
that and there's only so many of us so
many hours in the day did you have this
uh principle say 8 weeks ago was this
newly formed when we hit
you know the open sourcing of Zed and
all of the issues came in and the pull
requests oh we knew it would be like
this yeah I I did yeah uh it's why
extensibility was like pretty high up in
the road map because and Linux as well
both of those
because those are both kind of like we
knew people would want to get it working
on Linux and whether we liked it or not
or you know scheduled it then or not
people were going to attempt to
contribute on that front so we wanted to
be receptive to that and then we knew
that people were going to attempt to
contribute things that yeah Jason
Rudolph who used to work with us on Adam
said like yeah open source contributions
are sometimes like someone giving you a
free puppy and
like so it's to feed it scheduling the
extensibility now is very deliberate
which is like we knew uh we didn't want
to delay o Source on that stuff being
ready but we knew like pretty soon we'd
need kind of an escape for free puppies
that we just couldn't adopt and also I
want to add on top of that that's not to
say that if something's in the core you
know it's still an open source project
like people can still help us maintain
you know improve the quality of that
yeah um it's just like yeah the barrier
to entry I guess is going to be a little
higher you know we're going to we're
going to be more we're going to feel
more responsible about maintaining you
know a certain type of quality uh for
anything that goes into core so I don't
know how to formulate this and in it's
sounds they mean it less controversial
it sounds but okay we've all been
involved in this one issue where the key
bindings were changed from The Zed key
bindings to the vs code key bindings
yes so this was uh yesterday right yes
yesterday default key binding changed to
one that was more vs code like and I do
think you know you all powered through
or are powering through I don't know if
you changed it locally still powering
through yeah through never give up but I
think I think it brings up an
interesting question where you know
would you ever tell a user not in these
words but through the product
that hey the way you've been doing it is
wrong or here's a better way when
somebody says hey here's here's
something we should build in the editor
like I don't know I want to show
pictures next to my code so I can type
off code of pixelated jpack so whatever
it is is I don't know dumb example is
this something where you would say no we
found a better way to do this this is
not something we want in here or would
you always
say whatever you want like you you want
a shortcut to duplicate a line 5,000
times and that's built in go for it you
know does anything come to mind here
where you say this is our philosophy of
text editing and we know what it is and
if you know there's stuff that can bump
against it and that we don't want inste
I think for me I like to not
I you know in that instance of the
switching our bindings to be more like
VSS code even though it was going to be
painful for all of us like for me what
won out was like being if there's
something that we can just be compatible
with such that we don't have to explain
anything to anyone someone is going to
show up and it's just going to just work
for them with no explanation from us
needed I value that really highly um and
that's why I even though I think the key
bindings are I don't like the new
default key bindings as much like there
you know we we basically added a key
binding for alt up back when that didn't
I don't think that conflicted with
anything and vs code didn't have a
default binding for select larger syntax
node that that's example that I'm keep
bumping up against and so we picked one
but now the vs code ships with that
feature um and they have a default
binding for it I think it makes sense
for us
to um use it because it's still you know
if someone really hates it they can
customize it I might have to do that
because I'm not able so far to get used
to the VSS code one um but I I really do
value being just sort of compatible with
any standards that exist not that vs
code is a standard but it's just a it's
a lot of our a lot of people um yeah 75%
of the market or something like yeah
yeah so if there's something like that
we can just work with I'm going to air
on the side of kind of adopting that
being standard fitting in with the
ecosystem but then there's other things
right like vs codes I don't think they
have yet added multi buffers and like
that's our find experience and I just
like that better personally than like a
little menu a panel at the bottom where
it's showing you locations and you're
jumping around so we decided to Buck the
trend on that one and we've paid for it
a little bit there are some people that
don't even understand that those things
are editable like they don't you know
it's a little less familiar it's
different so it's not like we're never
willing to let like I don't I think I'll
be pretty disappointed if we just build
like a faster clone of the S code we
have our own things to express but it
needs to be like clearly better or
clearly really matter to what we're
trying to express to deviate that much
from what people expect but I think you
were also asking like how receptive are
we to kind of different ways of doing
things and I think it's going to be Case
by case I don't yeah
I think we'll add a duplicate five times
command the multi buffer I think is a
perfect example and the other thing with
the treesitter select larger and smaller
syntax note I don't think vs code has
this right they don't have the the
syntax not well theya that was what
disrupted me so much is this person like
open a PR which I think was a good
change that they suggested that they
said vs code now has these bindings by
default select larger syntax node
so Z should use the so but yes but when
we first built Z that didn't that wasn't
a thing in BS code yeah I guess you know
say you have the multip is a great
example but say you have the ability to
select I don't know you can jump to the
start of a block and then you can hit
something else to jump to the end of the
block and then that way you could select
the whole block or something like this
and then guess what with freeit you
don't even have to do this you can just
in the block say select this outer scope
or something like this and that to me is
an example of hey we found a better way
to do this and now if somebody were to
come along and say Hey I want this other
way to be built in first class and that
is you know the question of would we
then push back and say no actually we we
think this is a better way but what you
said about the multier sounds like if we
are confident we found a better way to
do something then this is what we want
to do yeah I do think we have a
perspective about how we want what we
want Envision for code ux and it's not
we I want to be standard when when
there's a onetoone thing
to yeah standard to adopt but there
often isn't like um multi buffers is
maybe one of our biggest concept that
doesn't exist in other
editors yeah like I don't I've never
worn the badge opinionated as like a
super big badge of honor cuz like I tend
to find people that are opin kind of
annoying so like I don't yeah I don't
want to be like oh we're so opinionated
we have an opinion on everything and
there's a way to do it and you got to do
it our way that's not how I want to be
uh but I also don't want to be like a
slave to how it's always been done uh I
want to be willing to innovate and go
out on a limb I don't mind like there
being redundant ways of doing things
like if there's a way that people are
used to doing things that maybe is
working for them better than our Better
Way like I would entertain it as long as
it's I don't think for but I don't think
I would like have an alternative to the
multi-buffer for fine that I would want
to maintain just because some people
preferred that like that's a pretty big
feature I want to do it that way so I
feel like it's a case by case thing but
I'm not really here to like ram my way
of doing everything down people's
throats like um yeah I want to innovate
and say Here's a good way I think of
doing things and that we're excited
about um but that aura of like
exclusivity or being a knowitall that is
going to tell you how you should code um
I don't know I'm a little I'm not
that not rotating too hard on that um
yeah here's but there you know there are
some things I think that we found that
are cool multi-buffer being one of them
of like this is just in many cases a
great way of fixing a lot of compile
errors uh so I I want people to try it I
don't know maybe that's a red flag for
people like I'm not opinionated it
enough but yeah I don't think so okay it
just means we can't expect a webinar
from Nathan of the best way to edit text
or something like
this yeah I mean I'm not even using
modal bindings these days because I used
them for a while and I got used to that
but then we wrote Adam and I had to go
back to the emac style bindings and I
just like
never yeah I kind of put up with making
that switching cost of a muscle memory
to Vim just to get like an editor hate
back then um yeah but so yeah I don't
know am I the text editing ninja of the
universe it's unclear no yeah you got
two keyboards though and in VOR so I
mean that's true like pretty ninja to
me yeah Ed the this week uh Antonio and
I were pairing and my Vim muscle memory
is pretty strong and I don't know if he
knows but in Vim he's on but in Vim
sometimes stuff is weird because you
have registers and when you delete text
it gets put in your clipboard and stuff
like this and I subconsciously grown
aware of this where I do weird things
where I paste the thing first versus
deleting something else because deleting
something else might overwrite My
Clipboard and whatnot and Antonio was
watching me when I went into a buffer
and I just wanted to place the whole
content but what I did was I jumped to
the end pasted my stuff there then went
back up selected the top half of the
buffer and then selected this and there
was a pause and he just goes can you do
command a
and past it and then we had to do it two
minutes later and I did it his way and
he he's like thank
you it I realized how awkward it was
what I was doing but I have another
question is there anything that 3 years
ago you said this will be in Zed but you
dropped it because you realize this does
not make sense or it doesn't fit in no
we we added chat like really
early and then realized like okay we're
not even editing in this thing yet what
are we
too we burned a couple weeks on that I
just gotten really excited
about collaboration and I don't know I
wanted to explore it but it was just not
the right time but now it's back uh
still a little unloved although people
from the community I saw someone opened
yeah Everson opened a pork Quest
improving it which is supposed to see so
that was one thing have we dropped
anything else I don't know I don't yeah
there's some stuff I'd like to drop from
like dentation still like the way that
we serialize workspaces I'd likeed to be
simpler but nothing from a product
perspective so far interesting um yeah
but we have so much to build it's like
yeah um yeah I mean it's like uh
skipping a meal when you're already
starting to death or something I don't
yeah so it's like yeah yeah yeah is
there anything you'd like to remove tors
move no
I no remove I I'm I discovered the
journal mode that you apparently added
Nathan two days
ago by accient I just type journal in
the command thing and then I real what
there's a journal mode and I looked at
the G blame and I saw that you added it
and also fun fact that's just 150 lines
right it's not it's one file that does
all of this in Rust was pretty cool yeah
and it's not like the world's greatest
journal or anything it's just like
create a new entry you know that has a
time stamp with directory structure a
certain way it works for me I hav it
like before Z anybody was even using Zed
just because I need it yeah I do think
that's interesting because it doesn't
take up anything it doesn't cost
anything it's just you can type journal
in and if you want it you can get it
otherwise it doesn't hurt you but like
that's an example of something that
should probably be in extension I think
at some point or if it weren't an
extension I would want to like go harder
on it and
really build like a more full-fledged
journaling experience into Z and have it
but it seemed yeah one or the other um
probably the former probably make it
into an extension in the short term um
but it's like not doing that much harm
right it's 150 lines of code
and but most people don't know about it
we don't really advertise it right yeah
what I find interesting is more these
little small decisions that come up
again and again for example do we add
emojis you know to the chat or Emoji
reactions is you know there's like these
small decisions that can have a huge
impact or reactions or something to like
collaboration notes right where somebody
could leave a thumbs up or something or
do we display images is marked down by
default rendered and or always enabled
and I
think I don't know I see these come by
in pull requests and I find it really
hard I I find it easy to overthink them
right it's oh does this put us in a
different direction instead of emojis
should we have pixelated emojis is this
more in line with the aesthetic of you
know something like this
um but yeah I don't know I I think it's
really hard to find to find a principle
that you can hold through all of these
decisions I agree and yeah i' would be
lying if I said I had it all figured out
and all in my head I think we're all
like just like finding our way and the
code you own ends up owning you so like
that's one thing I'm just cognizant of
is like as we add these things these are
things that whenever we when we changed
the foundation on which that thing is
built you know now we have to go visit
it and deal with it it just adds surface
area and mass so that's the only that's
one thing and then like yeah that's
interesting Emoji R like that sounds
good to me other than we have to
maintain it and keep it working yeah um
but like those specific examples
examples sound good but it just seems
like something we'll have to figure out
as we go like yeah I guess I'd like to
be as big a tent as possible and be
inclusive and include a lot of people's
workflows without
being a Frankenstein and that's a tough
balance to strike but maybe we could
sort of like overcorrect in One
Direction like add something in and then
just realize like we can't have this
anymore it's kind of tough to take it
away cuz now it's kind of like you're
taking something away from people but
that's if you're willing to do that then
you're willing to kind of take more risk
as well in what you had um so yeah I
don't want to be like uh ill-considered
and there I I still think there are ways
for where Zed P parts of Zed can be
better resonant with other parts of Z
and there could be a more
holistic product Vision although I can't
come with any specific examples right
now so that there's that um but like
yeah so I want it to feel like a
holistically thought through
well-designed product um and so sort of
the more we expand our surface area and
the faster we do that the more
challenging it will be but I'm willing
to kind of get there sort of add stuff
and then integrate it um that's where my
head's at and we'll see if that ends up
being a good idea and how that works out
and we can adjust that's where my head's
at now cool I think that's it right
we're coming up on time does anybody
else want to add anything thing like
never coffee machine support in Z my
name stands behind this oh if it's an
espresso machine there you go
then foot pedal support in that yeah
like one crazy thing that someone's
brought up and I thought about too is
like could we embed you know the
platform specific browser so that people
could like pull up a tab that's pointing
at the site that they're building or
something yeah um you know and that's
one example of like web technology is
slow so I don't want to bring it
in but then that does have utility so
like I don't know I think that is
potentially pretty cool and like but I
don't know yeah there's no like yeah you
could maybe list some outlandish things
that I would say like yeah I don't know
it doesn't seem like we need coffee
machine support in that's for sure
um but nice yeah that's cool
I think it's I don't know we
don't just from mying the way I see it
it sounds like you have pretty strong
principles right and from from that the
rest flows as in what you said about
extensions I
think it's
pretty it says a lot when you say an
extension only has this amount of time
to do something
otherwise you know it's disabled or we
we ignored result or something like this
because that already says a value is
performance a value is speed latency and
that I think then ripples through the
rest of the system or the rest of the
community like I don't want it to be the
ideal that our North Star is like you
can't make your Zen slow like yes
because ultimately the bot stops with us
and so it's like if that means that you
can't add a feature because the author
of that feature like just didn't have
the skill or the time or whatever to
like meet your the
deadline then like I'd rather you have a
faster Z with fewer
extensions you know then letting us get
to a point where we bog down and then
we're like oh well it's you installed
too many extensions it's just like I
don't want that to be a state you can
get to so I hope we can stick to that
yeah that's cool the other thing I
noticed is this week well basically
today it changes things when you have
such an engaged community in that I
think in the worst case you put some
stuff in it goes out into the world you
don't know if anybody uses it it you
don't know whether you can remove it
cannot remove it you don't know if it
slows somebody's machine down but in
this case I changed something two weeks
ago and today people were saying Hey I
want do you think this is the good you
know the right decision can we change
this back what do you think about this
what do you think about that and this
constant form of feedback also changes
because you you you have feedbacks only
you can make these decisions and it's
not just oh you know we added all of
this stuff and we didn't know that it
boots up in 18 seconds for people
because we don't use 42 extensions or
something like this so I find it
interesting the community has this Fe
form of feedback and seeing how the
product is used in the real world I love
that yeah I mean we need the engagement
of the community cuz like I don't know I
don't even have my head wrapped around
everything that's going on in Zed right
now um and like people are going to be
able to put a lot more thought into
particular nuances that
than I might be able to so thanks
everybody that's listening to this yeah
well thank you thank you for doing this
I think we're at time right sounds good
yeah cool cool cool
Namaste bye
5.0 / 5 (0 votes)