Antonio Scandurra - Atom, Zed and the Future of Text Editors

Durée: 53m59s

Date de sortie: 24/03/2025

This week we're delighted to welcome Antonio Scandurra to the show. Antonio is the co-founder of Zed, a new text editor built in Rust. He was one of the core contributors to Atom, the text editor from GitHub that was the start of a new era of text editors. Join us as we chat about the past, present and future of text editors.


Become a paid subscriber our patreon, spotify, or apple podcasts for the ad-free episode.

Imagine un monde où vous avez des agents qui changent votre code dans le background.
Peut-être que c'est un peu autonome que vous ne besoinz pas d'un editor.
Je ne sais pas.
Peut-être que l'AGI est derrière le corneur.
Ainsi, je pense que l'editor est la plateforme où le code va être écrit et interactué avec Red.
Bonjour, bienvenue à DevTools FM.
C'est un podcast sur les tools de développeur et les gens qui font ça.
Je suis Andrew et c'est ma co-host, Justin.
Bonjour, tout le monde.
On est vraiment heureux d'avoir Antenu Scandura.
Vous avez dit ça correctement?
Oui, oui.
C'est assez close.
Donc, Antenu, vous êtes sur le team Z.
Et nous sommes incroyablement heureux de parler de Z.
C'est un grand outil.
Il fait quelque chose d'ambitieux.
Et d'un team avec une longue histoire de construire des éditeurs textes.
Donc, je suis vraiment heureux de voir ça.
Avant de nous en parler,
vous voulez nous parler un peu plus de vous-même?
Oui, merci pour avoir moi.
Mais oui, je suis Antonio.
Je vis en Italie.
Je suis un engineer de software.
Je suis commencé à coder quand je suis 13.
En arrivant, j'étais très heureux de voir mon père
travailler sur les édites d'excellences.
Je me suis donné des édites d'excellences.
Et c'était fasciné de lui,
de la type des formules.
Et c'était mon programme.
Il me avait toujours fait un grand appeal.
J'ai commencé à coder quand je suis vraiment jeune.
Et puis, j'ai commencé à université quand j'étais 18.
Et en même temps, j'ai commencé mon premier professionnel en gig.
Et oui, c'est un peu de moi.
Je suis en train de travailler sur l'adapt.
On peut parler de ce que j'ai fait en travaillant sur l'adapt.
Et maintenant, j'ai co-founded Zed
avec Nathan Sobo et Max Brunsfeld.
On a fait ça depuis 2021.
April 2021, c'est déjà été 4 ans.
C'est super intéressant.
Le Adam était un édite révolutionnaire
à la fois qu'il s'est créé.
Il y a beaucoup de technologies fondamentales
que le Adam a créé
qui appuient beaucoup de produits qu'on a créé.
Le Electron a créé un projet de l'Adam.
Il y a beaucoup de produits qui sont créés sur Electron.
Totalement.
Je suis désolé.
Un petit peu de trivia.
Je ne sais si tout le monde connaît ça.
Le premier nom d'Adam
était Adam Shell.
Il a ensuite changé à Electron.
Je pense que même quand ils ont renommé l'Adam
il y avait encore des binaires qui étaient appelées Adam Shell.
Je suis désolé, je vais juste vous dire.
Je voulais juste le mettre dans le fond.
C'est drôle.
Je me souviens de ça.
J'étais vraiment excité à l'Adam
quand il est arrivé.
Je ne sais pas.
Je pensais que c'était un excellent projet
d'utiliser des technologies web
pour pouvoir faire un éditeur.
Comment avez-vous été involvementé
avec des éditeurs de texte
et des outils de développement?
Je pense que c'était...
Je pense que c'était mon deuxième gage.
Je travaillais comme un freelancer
pour cette entreprise allemande.
C'était comme un salon de Ruby en rail.
Je pense que un co-worker de moi
m'a envoyé cette invitation
à l'Adam.
Adam était comme une private bataille à un moment.
J'ai une collection de vaguerie.
Je ne sais pas si vous vous souvenez de ça.
Mais je me souviens de cette app
et vous avez dû mettre un token en dessous.
Et ensuite vous pouvez downloader l'application.
Je suis fasciné
d'utiliser un éditeur de texte
et quand ça a été ouvert,
ceci était priori à 1.0.
Je me souviens de l'Adam
sur mon travail de jour.
Je n'aie pas l'impression
de comment les sélections se couvrent.
Quand vous choisissez le texte,
vous voulez couvrir les sélections
dans les lignes.
Le code a été ouvert.
Je suis en train de mettre des PRs.
Le code pour couvrir les sélections
dans les lignes
était en salle de la salle.
Je me refacturais
pour être en Login.
Je n'ai pas l'impression d'avoir fait ça.
Mais c'était vraiment cool.
C'était mon premier contact
avec un projet d'open source.
J'étais super heureux
de l'interact avec Nathan.
Je pense que le premier qui m'a interacté
était Nathan.
Une PR après l'autre,
j'ai commencé à chanter avec les autres.
À la fois, c'était aussi mon premier temps
de parler avec quelqu'un.
Je me souviens de l'Hero de la Screen.
Je pense que c'était pour
bé l'rencies.
Dans mon cas il y est,
s'ilonderais que le mode



et les sélections et les curses.
En tout cas, je me souviens de les faire parer avec eux.
Et puis je pense qu'il était randomement en Italie,
il était sur un vacation avec sa fille à la fois.
Et oui, on a rencontré en Turin,
on a étendu un peu et oui,
après ça, je suis allé dans le GitHub.
Donc oui, on a travaillé sur Adam ensemble pour un moment.
Je n'ai oublié le temps exact,
mais oui, je suis sur le corps de la team pour
un petit moment.
C'est assez cool que votre gigage de temps en temps
est le premier commit,
le premier VR connecté
avec quelqu'un de ce genre de projet.
Les deux projets font le même chose,
mais dans des différentes manières,
donc, quels sont les lessons de la technique
que vous avez appris par Adam
et votre temps là-bas que vous avez utilisé
et intégrés dans le blog?
Je pense que l'un des plus importants
était vraiment,
vraiment, attentionnée sur l'extensibilité.
Je pense que, à l'époque,
nous avons eu des API,
mais les gens pouvaient
pouvoir atteindre l'éditure
et faire toutes les choses curieux,
et sur le point, c'était incroyable,
parce que ça a sorti
de cette explosion de Cambry,
d'extensions,
je pense que l'extension d'Adam
avait un bilan de choses
sur l'autre côté.
Maintenant, vous avez beaucoup de gens
qui sont en train de faire des APIs,
et c'est pas une version, vous ne contrôlez pas,
et c'était vraiment, vraiment,
difficile de changer
d'un API tout en tout.
Je me souviens,
quand nous avons dû faire des grandes changes,
parce que nous devions refactoriser
un grand component,
nous devions aller
à tous les repos de GitHub
pour regarder
les utilisateurs de l'API,
et être, hey, nous nous défréquons,
nous voulons l'épreuve de la nouvelle version,
mais c'était vraiment, vraiment,
très, très difficile,
parce que, parfois,
la forme d'un API
est plus de la performance
d'un API,
c'est quelque chose
que nous avons pris
de manière très
sérieuse,
de façon très différente
avec, vous savez,
la version, comme tout le monde,
c'est une chose.
Et aussi, un autre truc,
que l'extensibilité, je pense,
n'est pas vraiment bon pour,
ça n'a pas vraiment
aidé,
que, oui, aucun package
pourrait ruiner l'expérience d'un éditor,
vous avez de la main-thread
et, à quel point,
un package
pourrait, vous savez,
prendre, vous savez,
même si peu de 32 milliers,
c'est comme 4 frames
en 120 fps, vous savez,
donc,
oui, je pense,
être capable de contrôler ça,
je pense que c'est quelque chose que nous
nous
laissons, et, oui,
c'était un bon état,
un état d'étonnement, mais je pense, je pense que nous l'avons appris.
Donc,
vous avez l'expérience de construire Adam,
et, je pense que
Adam's success est
en ligne, et
toutes les choses qui ont contribué
à cet état, je veux dire,
via code, qui est probablement le plus
populaire d'édite aujourd'hui,
n'existe pas
avec Adam, parce que je pense que c'est la foundation
pour ça, et puis vous avez décidé
de créer
ce nouveau
éditeur texte, basé en russes,
avec
un peu de UIs, et
une décision technique très différente.
Donc,
ce qui a
l'a lead tous les gens à ce que c'est aujourd'hui.
Oui, je pense que
c'est aussi
relativement à un autre état
que nous avons appris, je pense,
je pense que l'un des plus grands problèmes
que nous avons avec Adam, c'est,
encore, la performance.
Ce qui est bien
de la web browser, c'est que
ça vous donne cette grande foundation
que vous pouvez utiliser
pour... Vous avez beaucoup de tools que vous avez disposés,
vous n'avez pas à impliquer beaucoup.
Le côté bas, c'est que
ils sont très bas
dans ces
plusieurs layers d'abstraction
que vous ne pouvez pas vraiment contrôler.
Je me souviens
de la même manière que
j'ai pensé, je n'ai pas oublié
de l'alimentation, mais oui, j'ai pensé un long temps
en essayant de mettre en place un temps de start-up
et d'Adam à l'heure.
Et je ne pouvais pas...
Il y avait des choses que je ne pouvais pas
retirer. Le browser a été
en train de faire le premier layout,
ou je n'ai pas pris un long temps
pour faire sa première récalculation style.
Je me souviens de la
manière de regarder
les instrumentations
et les tools de détail,
comme les tools de chromium.
Et oui, vous avez
300 milliers de blocs

Je ne pouvais pas
inspecter, il n'y avait pas de manière
pour moi de le inspecter,
ou de changer le comportement
pour le faire vite,
en tant que j'ai essayé de le faire.
Je me souviens de la
chose qui a changé
depuis tout le temps, donc peut-être que c'est un bilan
mais en temps, il y avait
une technique qui s'appelle
le snap shot, comme les snapshots isolés
où on sort de
instantiée un portion d'Adam
jusqu'à
plus tard, comme nous pouvions, et on
snap shot le heap
et on le store dans un bloc, et puis
quand on le reloadait,
on se déstérilise en mémoire.
Et ça a été marginale,
on a eu un peu de speed up,
mais je ne sais pas, on n'a pas assez de leverage,
donc
avec Zed, on a commencé avec un rébo élevé,
on a dit, ok, on va
le faire, on va le faire,
et on a des choses que nous ne faisons pas,
des choses que
nous déferons au système de opérance,
par exemple, si vous ouvrez Zed,
tous les chromes pour les
les lignes, les lignes de la trafic
sur le mac
sont
les réparations du système de opérance
mais on a écrit nos propres cadres
on a
des choses customes
et
ça vient avec les sous-titres,
parce que maintenant,
personne ne sait
comment ça marche,
même quand vous ouvrez
quelqu'un, vous devez les ramper
et expliquer
comment ça marche.
Je pense que c'est un spot
très sweet où nous avons terminé avec Zed
mais c'est vrai
qu'il y a beaucoup de
codes customes
et oui, c'est un côté de ça, le autre
côté de ça, c'est de le faire en fast language
Rust
je ne sais pas, on pourrait le faire
peut-être en C++
je ne sais pas sur C, mais
à la fois, Rust a
réellement

pas eu le temps de
voir la langue de la haute-level
c'est comme, oui, il y a des problèmes avec le checker
depuis que nous avons commencé
mais
je pense que
d'avoir
un bon syntaxe, un très solid
type system
et des outils
que les batteries sont incluses
comme un test et un framework
comme un solid dépendance
je pense que c'était
très bon et nous a donné un bon avantage
quand on est construit un texte
d'éditer, la réponse
est la priorité de la haute-level
et les 300ms
ça ne pourrait pas sembler
d'un long temps, mais en fin
ça se passe bien, c'est vrai
totalement, oui
je pense que
un exemple de ça, c'est
nous utilisons un traitement
sous la haute
pour parser
les files source et les pars incrementaise
et rendre
un syntaxe highlightant
et un outil outline
et tout ça
et
ce que nous faisons avec Treesitter
c'est
que si on édite quelque chose
nous donnons
la chance de parser
les parcs incrementaise
donc nous budgetons
je n'ai pas oublié, je pense que c'est 500ms
comme on dit
nous nous permettons de parser
ce temps-là pour la prochaine frame
mais si on peut le faire
c'est bien, on va juste interpréter
et envoyer ce snapshot
à la base et puis
quand vous êtes bon
vous vous rendez
et on va le déployer
donc oui, chaque petit peu est en train
de faire un langage très rapide
300ms c'est
beaucoup, je pense que
pour le début de la période
je ne sais pas ce que notre dernier benchmark est
mais je pense
que nous devons commencer
dans les 500ms
comme
vous devez pouvoir éditer
c'est très rapide, vous cliquez sur l'app
ça apparaît instanément
et oui, je pense que
ce que je disais
c'est la possibilité de contrôler
ce qui va sur le main-thread
ce qui va sur le background-thread
et ne pas être
affrayé de la condition race
il y a des conditions de race
mais ne pas être affrayé de
les conditions de race
comme les langages
et les langages, je pense que Rust
ça va beaucoup plus facile
ce n'est pas parfait, mais
je pense que
je dois acheter la claim
de concurrence, je pense que
ça fonctionne
oui, il y a des tensions
intéressantes
je pense que
quand il s'agit de langages de haut niveau
Rust est probablement
c'est l'une des plus facilement
d'être commencé et l'une des plus hautes
de la modification
d'une certaine
une des succèses
de Adam
c'est la technologie web
donc c'est facile de le faire
c'est très extensible
et comme nous l'avons dit
c'est laissé le travail de la base
pour beaucoup de ce qui a été
après, via code
je pense que le
le protocole de langage et
les avances que ça a aidé
et
je pense que les gens
on voit
plus de customisation
pour les langages et les tools
et tous ces autres choses qui viennent
de
ce qui est
une législation de réditer les éditors
et JavaScript avec des appels simples
donc
évidemment, en réditing
un éditor et Rust
où vous pouvez contrôler la performance est bien
et comme vous l'avez dit, il y a des
traitements, des édits de commencer
mais
que sont les autres impacts
de réditer et Rust
je sais que les compilations de temps peuvent être un challenge
Oh man, ne me fais pas même commencer
oui, c'est
un problème
je vais dire ça
je pense
que je souhaite que c'est plus rapide
c'est vraiment
notre projet, je pense que
à ce point, c'est probablement
près de 500 000 lignes
de Rust
et c'est pas
super lent, je suis sûr que
il y a des
plus grands
écosystèmes et d'autres projets
qui sont plus grands pour construire
mais je pense que
c'est un point




ça peut être
mon M3 Max
je sais pas, 10 secondes
c'est pas grave
5 à 10 secondes
vous pouvez l'agir
non pas très long
mais si je vais juste changer
la couleur de la couteuse
je suis
en train de
faire quelque chose
je souhaite que c'est plus rapide
je vois que ZIG
je sais pas quand c'est
dans la terre mais ils
font leur propre
compilations de temps
en fait c'est
plus rapide
je souhaite que Rust soit le même
je l'aime Rust
mais oui, c'est un challenge
qu'est-ce que
d'autres challenges avec Rust
je pense que le curve de la compétition
c'est
très drôle
c'est
pas très rapide
à faire un good Rust
quoi d'autre
je sais pas
je l'aime beaucoup
je sais pas, des gens
ne sont pas comme un sink of weight en Rust
je pense que c'est cool
je pense que c'est un travail
très solidif
avec les éditors textes
il y a beaucoup
de

de travail prévus
il y a eu des éditors depuis longtemps
et vous êtes rébuildé
mais ce que ZIG
est unique pour le
de la manière dont vous pouvez éditer code ZIG
que vous vous mourez si vous avez
essayé d'utiliser un autre éditor
je pense que
la performance est
pas un
un feature
je pense que c'est un
concern
mais comme il s'agit, c'est le
1er chose que
nous étions excitées à commencer
mais aussi
en parlant de les gens qui utilisent ZIG
c'est une des choses que les gens
apprécient
donc
c'est un peu à la core
la
la crassé
que l'on a mis dans les structures de la data
on a pensé sur ce problème
depuis longtemps
je pense que c'est la performance
je pense que
un autre
feature que je pense est vraiment cool
et nous avons seulement étendu
la surface
pour maintenant
et nous pouvons le mettre
dans un petit peu si vous voulez
mais c'est
une collaboration
ZIG
tous nos sessions
et sessions de collaboration
elles se sont tous en train de
se faire
et quelqu'un de s'y part
leur projet
et il y a la integration
de la surface
quand vous êtes dans ZIG
vous verrez une grande fédélité
chaque personne a sa propre buffer
leur propre buffer
et vous pouvez le mettre en même temps
je peux vous suivre
je peux me suivre
et je peux me faire de l'autre
et je vais se faire de l'autre
pour que je vois ce que vous voyez
et la même histoire
comme quand vous allez retourner
je pense que
nous avons pausé un peu la collaboration
parce qu'il y a beaucoup d'autres features
que nous devons avoir
pour
gagner la possibilité
d'avoir
des gens
pour avoir des gens qui en aiment
mais je pense que c'est
quelque chose qui est très populaire
et
le fait que ça fonctionne
grâce aux structures de la data
la buffer
est un crdt
je pense que
c'est parce que
la structure de la data
qui est pour la foundation
est créée pour être collaboratif
de la base
vous avez fait
quelque chose
pour que nous puissions avoir
une collaboration
c'est-à-dire ditto
c'est vrai
c'est vrai
oui
notre première crdt que nous avons écrit
c'est pour Adam
qui était ce package que nous avons écrit
c'est un code
je ne sais si vous vous souvenez
mais c'était notre première
foray
pour la collaboration
après ça
je
j'ai fait la GitHub
et j'ai jointé ditto
un style
qui est un style similaire
c'est un database distribué
j'ai travaillé sur
la component de la service
la component de la service
sort de
synchroniser les changements
des devises clientes
pour un service replicatif
et le cloud
mais oui
nous avons utilisé les crdt aussi
comment est la collaboration
dans ZED ?
oui, nous avons utilisé
cette technique
et le monde peut changer
peut-être que nous avons créé
une technique qui est
l'histoire de la technologie
c'est le split de la RGA
c'est
une structure de data
qui est repliquée
et qui est une
c'est un
caractère qui
s'appelle l'identifier
c'est un peu
plus compliqué que ça
parce que quand vous pastez
un texte de gine
ça se déclare
on ne peut pas déclare
un identifier
pour ça
et oui, puis
grâce à la clau de l'ampli
on peut
comme si on disait
que les trois de nous sont en collaboration
et je vais
comme si je insère cet personnage
comme si je insère cet personnage
à l'offre de ZED 3
le algorithme s'est dit
que je vais insérer cet personnage
après ce personnage
avec l'identifier
ou quoi que ce soit
maintenant, il y a
des subtleties pour faire ça correctement
parce que les trois de nous
on peut tous insérer
après un certain identifier
et donc il y a des règles de la tie-break
que vous devez appeler pour
faire surement
que l'ordre est deterministe
par les replicas
mais oui
je ne sais pas
le papier est écrit
dans un bon sens
mais il est vraiment
le valeur sentinale
et le sort
après le sort
le temps de lampe
qui est le plus
le plus
le plus fort pour l'identifier
le raison est que
si vous êtes le plus tard
ça peut être que vous êtes causément après
les autres édits
et donc vous devez être les plus
les valeurs sentinales
c'est le
comment le buffer fonctionne à un niveau haut
on a implementé un peu
des optimisations
en fait
je dis que c'est un array repliqué
c'est en fait
un B-tree
parce que
on veut
la performance de la log-end
et je pense
que c'est l'une des plus
plus clés de tech
que nous avons en Z
c'est la structure data
qui est basée en B-tree
comme un B-tree en bas
et le fait
que c'est un B-tree qui le fait vite
et que c'est un B-tree en bas
et que la pente ne le fait pas
c'est très facile de
cloner, muter, passer
à travers les édits
je suis vraiment
heureux de voir le design de la structure data
tu as mentionné
un approche strict
pour les plugins
je personnellement utilise le code VS
et il y a un curseur
comme tu l'as dit
un explosion de Cambrian
j'ai réparé mon usage
pour seulement 5 ou 6 plugins
mais
quelle est l'approche?
comment ça se fait
pour jouer en
en fait?
oui, on utilise Wazem
comme je pense
ce que le code VS fait
c'est qu'ils ont un host extension
donc ils confient
les extensions
à un processus separate
on fait
un autre step
on est
maintenant, la histoire de sensibilité de Z
c'est pas au point 0
c'est le
0.1 de l'app
d'extension
mais
on peut faire un couple de choses
1, on peut définir
les services et les thèmes
donc
je pense qu'il y a deux de la façon de le faire
mais oui, l'une des les manières est
que tu peux utiliser Wazem pour définir
ton service de langage
et on utilise Wazem pour ce
donc on définit un API
et on utilise
un outil appel WIT
ce qui est le protocole interface
et
oui, l'extension
ce que l'extension peut faire
c'est d'implementer
l'interface, le trait que nous sortons
et
compilons Wazem et on va
l'importer
maintenant, la seule chose
des choses que tu peux faire avec les extensions
je pense qu'on peut faire deux choses
l'un est
installer les services de langage
et de post-processer
les services de langage
donc les compilons
les symboles
l'extension a une chance
de manipuler
les
les données que l'on a rétournées
de la service de langage
et puis
je pense que nous avons cet autre API
pour les commandes
nous avons un API offert
d'un point d'assistance
et le assistant
permet de vous invoquer les commandes
les commandes slash
si tu installes, des extensions
peuvent définir leurs commandes slash
et tu peux penser que le commande slash est un moyen
d'implementer
l'extension avec le proplexity
tu peux avoir un proplexity
et tu peux mettre un query
et
tu peux mettre des Wazem pour interpréter
avec le proplexity
donc
il y a beaucoup de choses à faire
sur l'extension
je pense que les textes de manipuler
sont très élevés
pour
être dans le milieu
d'un autre type
d'autres choses
aussi pour
mettre des elements UI
je ne sais pas
on n'a pas encore été
en train de faire


pour tout le bide
nous voulons faire sure que nous puissions
le soutenir
et le faire en plus
on a trouvé
un peu de
des needs
un peu
des services de langage
le service de langage vous donne
beaucoup
de choses
vous n'aurez pas de choses
à faire
à un moment, nous avons eu
un point de vue de space invaders
tu pourrais détruire
votre éditor
tu pourrais render un jeu
et tu peux faire des jeux
on n'a pas
mais en futur, je suis très
excité
on va faire des shaders
je pense que c'est incroyable pour les gens
même interagir avec ça, pourquoi pas
tu peux
faire un fragment
pour manipuler
faire un cool animation
très difficile de faire
d'autre façon
c'est vraiment intéressant
je pense que les extensions
sont des choses importantes
des tables
et il y a
beaucoup de entreprises qui utilisent
le Wazem
comme une interface
on a
quelqu'un de Figma
qui parle de plugins
on a
Steve Manuel
le founder de Delibso
ils ont
un framework de plugin called Xtism
c'est un bon approach
c'est intéressant de voir
comment ça s'évolue
une des quelques versions
que j'ai eu
c'est comme
ce plugin
que j'ai utilisé
c'est un partenariat
d'écosystème
100%
notre histoire
n'a pas été fêlée
sur les extensions
mais quand on s'y somme
c'est un component
pour que nous fassons
les valeurs de performance
on va pouvoir
délire quelque chose
c'est cool et compétentant
c'est vraiment intéressant
donc, en parlant de la topic native
vous avez mentionné
que vous avez construit
un framework de UI
GPUI
qui est
incroyablement ambitieux
j'ai précédemment fait
un peu de travail de Rust UI
avec ce library de Igui
qui est un
un library relativement populaire
dans le Rust UI
donc,
qu'est-ce qui vous a poussé
à créer votre propre framework
et ce que l'a été l'expérience ?
oui, je veux dire
c'est comme, en 2021
quand nous avons commencé
sur GPUI, donc
les choses ont changé un peu depuis
et je pense que il y a un couple de projets
maintenant qui sont intéressants
je ne suis pas très proche
de la travail de Ray Flavine
qui est vraiment
intéressant de faire
je ne sais pas où il est
mais, oui, à la fois
la seule option
c'était
ce library appelé Pathfinder
qui était
je ne sais pas si
il a fait ça dans le servo
mais je pense que c'était un des
réparations pour le servo
un library développé par PC Walton
un de mes
russes héros
mais oui, je pense que
même avec Pathfinder, donc on a commencé avec ça
je pense que si vous vous aviez
retourné tout le temps
au commissaire initial de Zed
vous allez probablement trouver un usage de Pathfinder
mais je pense que
c'était assez
expérimental à la fois, ce n'était pas
un très robuste library
et donc, comme on le travaille
encore, c'était un état d'obstraction
qui était en train de faire
ce que nous voulions faire
c'était notre hypothèse
qui est, je pense,
testée à ce point
et nous avons prouvé que c'était
une hypothèse valide
c'était pour
rendre un editor
et les meilleurs UIs
tout qu'il faut avoir
c'est de rendre des rectangles
avec des corners rouges
de la texte
et de
de rendre des curves
et des chattos
donc c'est comme, il y a ces 4 primitives
que
si vous...
et littéralement, si vous vous faites
dans le code GPI
on a 4 shaders, peut-être que nowadays
un peu plus, mais
assemblant tous ces
primitives ensemble
lead à un UI
donc, je pense
oui, nous
nous avons utilisé, pour les rectangles
nous avons utilisé cette technique très cool
qui s'appelle STFs
qui est vraiment, vraiment cool
c'est vraiment
très, très embarrassant
embarrassant, négligé,
pour chaque pixel, vous pouvez compter
de la forme de la distance
et déterminer si vous êtes
en milieu ou en dehors
et quand vous êtes en milieu
vous pouvez aussi antiaélias
parce que, je peux dire que
si vous êtes en milieu d'un pixel
vous pouvez dire, colorer
comme avec la intensity
donc, oui
je ne sais pas, je dirais que c'était
je pense que c'était un peu
un peu démonstrant au début
mais je ne sais pas, je me sens comme
on l'a tourné
on l'a tourné
peut-être moins, je ne sais pas
si vous regardez la code de shader
ce n'est pas si complexe
on ne fait pas de fous
pour la rendition de texte
on utilise une technique qui a été connu pour toujours
qui est
les atlases, les atlases de texture
utilisez le système de opérations
pour rasteriser un glif
sauvez-le dans la texture
et puis, faites-le pour tous les glif que vous avez besoin
pour les rendre, les cacher
pour que vous le faites un millier de fois
et puis, assemblez-les en parallèle
dans
dans le
dans le scène, dans le
dans le frame de current
je ne sais pas, on ne fait pas de fous
et ce qui est cool de ça, c'est que ça a été
très cool pour les rapporter
ces choses, on l'a
écrit en métal au début
et quand on a
porté Linux support
c'était très bien pour porter Linux
parce que nous utilisons des features très simples
de la chadres, nous ne fais pas
rien de fou
donc je pense que ça a été un succès
et c'est vraiment cool de juste aller dans la chadres
et être comme, oui, ça ne marche pas exactement
comme on veut, juste change-le
pour les patins
nous utilisons
le système de rasterie, le lyon
le lyon, je ne sais pas
où ils font la pâte de tessilation
donc un petit peu de travail
se passe sur le CPU
mais comme, quand vous avez tous les triangles
nous les ajoutons tout au GPU
et ils se font rasterie
et parallèle
je suis un webdev, donc tout ça parle de
chadres
mon cerveau ne peut pas même connecter
donc vous utilisez un chadres
pour rendre les UI
c'est-à-dire un autre layer
qui traite des positions de curseurs
pour donner quelque chose pour connecter
oui, comme,
normalement vous n'avez pas even
notice le chadres, vous n'avez pas même même known que ça existe
le GPU abstracte ça pour vous
donc il y a
un appui
déclaratif
qui a beaucoup de réaction
mais c'est raste
donc un typique
de GPU
qui est un rendu
et ça déclaire
un div, ça a
une patine de 1
on utilise un API qui mélange beaucoup de tailwind
donc
c'est assez familier
je pense pour webdev
donc vous dites
P1, etc.
ML2
et
donc vous ne vous
même pas même notice
que nous avons fait tout ça
la computation shader
dans le background
et oui, c'est
l'un des choses que le GPU fait
l'autre chose que nous faisons
c'est de la manipulation d'entité
qui signifie
c'est un paradigm réactif
donc
une entité définit le data
que ça a
et puis, si vous mutez le data
vous pouvez le notifier
on ne fait pas tout automatiquement
une entité doit dire
que quelque chose a changé
et puis si vous utilisez une entité
si vous avez lu une entité
comme part de la rendition
une fonction de rendition
puis
on va ré-render ces fonctions
et ré-render un frame
pour qu'on peut montrer
l'entité de code de l'entité
donc, dans l'exemple de la position de curse
il y a un entité éditor
qui traite
les sélections
un entier a un buffer
et en quelque part un entité a
des sélections
et
il y a
une fonction de rendition
qui les déplace
et dans le cas de l'entité
c'est cool de parler
vous pouvez
utiliser un autre API
qui est plus impératif
comme pour le rendition
vous pouvez définir
votre propre élément
pour l'entité
je vais être dans la salle de la voiture
et je vais ré-painter les rectangles
et les choses manuellement
parce que
c'est le corps
de notre producte
on veut que c'est rendu
comme vite que possible
vous pouvez impliquer votre propre
lait et les méthodes de peinture
il y a un traitement élément
et vous pouvez être
je vais impliquer un élément pour l'entité
et je vais le mettre de cette façon
et je vais le peindre de cette façon
et c'est pour ça que vous vous arrêterez
pour faire des choses
donc, le GPUI
mais vous ne touchingz pas le shader
vous dites
les méthodes de contexte
et vous dites
contexte, peinture
et je vais peindre ici
avec cette radie de corné
c'est super, incroyable
merci
donc, nous allons nous faire le AI
vous avez travaillé très bien
je dirais que c'est probablement
le plus grand
dans l'industrie de éditeurs textes
c'est comment interagir l'AI
et comment s'y interagir
donc, quel est votre approach
oui, je veux dire
ce n'est pas facile
parce que
il y a un nouveau
set de features
que vous ajoutez
pour votre éditeur standard
donc, vous devez avoir
la balance entre la discoverabilité
vous voulez que les gens savent que ces features existent
mais
à la même temps
vous ne voulez pas
mettre le code
le code
le code principal de ZED
c'est minimalisme
et on ne veut pas avoir trop de belles et de neuf
pour vous
faire attention à ce que ça existe
c'est difficile
je pense que
un exemple successe
c'est un exemple
qui a été possible de faire une bonne balance
c'est un éditeur récent

vous savez comment
si quelqu'un utilise copilot
vous typez quelque chose
et copilot
en notre cas éditeurs
ZED a un modèle qui s'agit
d'une suggestion
quelque chose qu'ils veulent ajouter
pour votre code
mais à la même temps
vous avez
d'autres sources
de
completions
comment vous vous

que vous voulez que l'utilise
soit au-delà
de les completions
mais comment vous vous montrer
que ce n'est pas confusant
et que ce n'est pas visuellement
clotté
et pour ça, je pense qu'une bonne approche
que notre designeur Danilo a fait
ce que j'ai vraiment aimé
c'est que
nous nous montrerions les deux
et vous pouvez les prendre
les deux coupes
comme les mêmes menus de completions
quand vous avez la race
comme les deux completions
mais vous pouvez utiliser
la clé modifiée
et pour Mac class, c'est l'option
vous pouvez l'obtiendre pour
pour enacter
le temps modifié
que
la completion Zeta
et ça se trouve dans le sondage
je ne sais pas, c'est drôle
c'est un nouveau paradigm
et
les gens sont adaptés à ça
je pense que la société
est en train de
apprécier la AI
je pense que même un an auparavant
les gens étaient beaucoup plus
sceptiques
je pense que dans le futur
c'est plus prominent
pour nous
on a
élevé
la production
vous pouvez interagir
avec LLM
pour parler de votre code
et vous inclurez votre contexte
avec les commandes
on est en train de revamper
pour
faire plus
plus
le point de la vidéo que j'aime
c'est que c'est très manuel
il n'y a pas
c'est transparent
vous voyez ce qui se passe
c'est pas magique
donc quand LLM se déroule
vous pouvez aller en revanche
et être en train de changer
le contexte
ou de faire un fil de la vidéo
c'est cool en fait
en fait, il n'y a pas de temps
pour faire
une crampe
dans les prompts
on va
avoir un editor prompt
mais on va
faire plus
plus de contexte
de l'Ui
et interagir
avec la base code
et les édits
tout ça est important
pour nous
et on travaille
en faisant le temps
donc
oui
c'est une journée
et c'est aussi difficile
parce que les choses changent
chaque semaine
chaque couple de semaines, vous avez un nouveau modèle
qui fait quelque chose différent
et maintenant
des choses que, quelques mois aimés
c'est difficile pour un modèle à atteindre
maintenant c'est beaucoup plus simple
donc
c'est un jour

mais
comme toujours avec Zed
on a essayé de
l'embrasser
et par exemple, pour l'édit
on a fini de faire un modèle
comme, encore un peu
d'aller en
et en acheter
comme nous pouvons
et je pense que ça a travaillé très bien
et
je suis excité pour les futures que nous allons
éliminer à Zed
c'est intéressant
pour les paradigmes de known UX
on sait que le texte d'édit
est comme, vers des
pas-sous-known UX paradigmes
ou c'est comme, comment peut-il
changer, comme, l'exemple que vous avez pointé
de la suggestion
de la fonction entre les deux
je dirais que c'est mon numéro 1 gripe
avec tous ces tools maintenant
je vois les suggestions de l'esp
et puis le
l'AI est derrière
et je me suis dit, tapis et j'espère
100% et c'est
mais oui, je pense que c'est un moyen
qui peut nous innover
je pense que nous devons
faire, juste parce que nous ne sommes pas
un code de VS
nous devons faire des choses
extrêmement différemment, juste parce que
mais je pense que
nous sommes truis à nos valeurs
de rester truie à nos performances
et de minimum, c'est
l'addit de la valeur que nous pouvons
ajouter à l'AI
et je pense aussi que
les aspects de collaboration
de ZED, comme je l'ai dit
nous ne sommes que les services
mais le fait que nous avons un CDT
et que nous pouvons
avoir vraiment
un contrôle de la graine
sur chaque personnage qui est dans le buffer
imagine un monde où vous avez
des agents qui changent
votre code dans le background
je ne sais pas, peut-être
que c'est un autonome
que vous n'aurez pas besoin d'un editor
je ne sais pas, peut-être que l'AI est derrière le corps
mais jusqu'à
je pense que l'Editor
est la plateforme
où le code sera
écrit et interacté
donc
je pense que l'investissement et ces prémotives
vont payer
pour ZED
oui, absolument
et je pense que vous avez fait
un bon travail de
rester en train de changer
l'industrie
je me sens
que la collaboration
a un peu de table-stakes
dans un moyen où
ce n'était pas
d'ailleurs 10 ans auparavant
mais même plus tard que ça
et en fait
maintenant
l'intégration LLM
est en train de
faire des table-stakes
comme les éditors plus anciens
pour parler de la mCP
le protocole de l'interoptation
et c'était cool
oui, je suis content
de voir cette histoire continuer
de se développer
le plus intéressant pour moi
c'est que ZED est
un des
des éditors non
de la VSCode
qui sont en fait
en faisant des choses innovatives
et je ne veux pas
que le team de la VSCode
ou Microsoft, évidemment, ils sont fantastiques
mais je pense que le space
a besoin de beaucoup de choses principales
merci, je l'apprécie
que vous avez apprécié
parce que oui
c'est vraiment beaucoup de choses
merci pour voir ça
oui, je pense que c'est pour ça
que nous faisons cet area
de mieux essayer de nouvelles choses
et nous avons besoin de plus de gens
pour essayer de nouvelles choses
et de plus de choses
totalement, et je pense
que si on parle de la mCP
c'est super cool
en général, je pense
qu'il y a une opportunité pour ZED
pour être
même si on parle de sensibilité
je pense que c'est incroyable
d'avoir une telle sensibilité
d'avoir une telle sensibilité
c'est très facile
d'exprimer ZED avec votre agent AI
je pense que nous devons
être nécessairement au marché
de vendre l'AI
je ne sais pas
que ça doit être
notre job
je ne sais pas
je pense qu'il y a une bonne opportunité pour nous
et je suis content de
voir ce qu'on peut faire
c'est super cool
je suis vraiment en train de voir ce que vous avez fait
et quand nous sommes en train de râper
nous aimons toujours
poser une question de futur
et je pense que nous sommes déjà sur le sujet
pour vous
je me demande
quelles sont vos pensées
que ce sera en arrière
et que nous allons regarder pour
peut-être votre path à 1.0
et peut-être plus fort que ça
que ce que vous pensez de futur
de texte édition
oh man, oui, c'est...
c'est la dernière question
mais
en termes de 1.0
je pense que
nous sommes marchés à 1.0
et 1.0 signifie
d'acheter
une expérience de solid AI
nous avons mis ça en camp
et
de finir les features de table stake
par exemple, nous n'avons pas un debugger
encore, beaucoup de gens veulent un debugger
ou un debugger
nous avons juste évoqué un private beta
d'un debugger
il va devenir public
bientôt, je ne sais pas quand ça va
aller, mais si ça va
vérifier le blog de Zed
parce que c'est aussi
disponible
et on n'a pas
de support Windows
comme nous sommes encore sur Stumbac OS et Linux
donc je pense que le path à 1.0
va être
intervier
je pense aussi que
nous devons faire un meilleur travail
d'accueillir les nouveaux utilisateurs
je pense
qu'une chose cool
de ces autres outils
comme
Cursor, Windsurf, etc
c'est très facile de
se changer de VS Code pour eux
parce que c'est la même chose
donc je pense que
pour Zed, nous devons
faire un meilleur travail
de faire l'édit
d'accueillir les nouveaux utilisateurs
d'exemple, les outils importés
d'autres outils
même les simples outils
de la setting de votre thème
pour un thème de match
et Zed
je pense que c'est
vraiment important
de nous faire attention
et bien sûr, la sensibilité, on a parlé beaucoup de ça
et c'est un partage de la 1.0
plus que ça
je ne sais pas, je suis vraiment
très excité de collaboration
comme je l'ai dit
maintenant, quand vous partez
un projet en Zed, c'est
comme ce
qui se passe en ce moment
on part pour ce moment
et quand le host
se dévouille, c'est fini
on a parlé beaucoup
et on a une picture
très claire de comment nous voulons
construire
ce système de record
CRDB
qui est un CRDT
mais pour
les changements de code
et je suis vraiment excité
à l'exécuter
ce qui ne veut pas
de tracer votre code
à un niveau
de la clé

et
de
d'abord, de pouvoir hopper
et collaborer
et si je vais en haut
vous pouvez toujours continuer
à travailler et de faire de la vice versa
il y a encore beaucoup de pouvoirs
en ce moment
et sur le Front AI
je pense
que je peux voir un monde
où plus et plus de choses se sont agentes
c'est difficile
de faire
les forecastations
à chaque fois que je vois un monde
predicter quelque chose dans le espace
je pense que c'est possible
peut-être que ça va arriver
donc je ne vais pas
essayer
de le predicter mais je pense
que
une chose c'est pour sûr
c'est d'être plus facile
je pense que nous allons en faire
moins de codes
je pense
que nous avons maintenant des machines
qui peuvent être plus rapides
que nous
je pense que c'est
un grand
et un grand
c'est important
pour un texte editor
je suis intéressé de voir
comment vous interagissez
dans les ai-ins
vous avez mentionné un debugger
et c'est comme si vous étiez
en train de construire un debugger
de la Terre 0
et vous avez tout ce autre
de la mélange et de faire des expériences
beaucoup plus facile
et peut être fait
comme si vous ne pouvez pas
je ne sais pas
beaucoup de code
mais c'est vrai
que nous avons
100% de code base
nous pouvons changer chaque ligne
et nous avons écrit chaque ligne
et on le viendra
ça me rappelle
bien, ça me rappelle
merci d'avoir regardé Antonio
c'était un bon moment de parler
ZED et toutes les différentes technologies
merci pour votre attention
merci pour avoir
nous, c'était vraiment bien
merci Antonio, c'est incroyable
vous avez fait un travail incroyable
j'ai switché le ZED tout le temps
je veux juste investir
parce que je me sens
on a besoin de plus
d'innovation dans ce space
c'est comme
le substrate pour
l'engineering
c'est important que ces tools soient bons
et je pense que vous avez
une opportunité fantastique
pour changer le façon dont nous pensons
et je suis content de voir ce que vous faites
merci Justin, j'apprécie vraiment
merci

Les infos glanées

Je suis une fonctionnalité encore en dévelopement

Signaler une erreur

devtools.fm:DeveloperTools,OpenSource,SoftwareDevelopment

A podcast about developer tools and the people who make them. Join us as we embark on a journey to explore modern developer tooling and interview the people who make it possible. We love talking to the creators front-end frameworks (React, Solid, Svelte, Vue, Angular, etc), JavaScript and TypeScript runtimes (Node, Deno, Bun), Languages (Unison, Elixor, Rust, Zig), web tech (WASM, Web Containers, WebGPU, WebGL), database providers (Turso, Planetscale, Supabase, EdgeDB), and platforms (SST, AWS, Vercel, Netlify, Fly.io).
Tags
Card title

Lien du podcast

[{'term': 'Technology', 'label': None, 'scheme': 'http://www.itunes.com/'}]

Go somewhere