Between the Wires: Et interview med Vue.js-skaberen Evan You

Jeg interviewede Evan You, skaberen af ​​vuejs.org, som er en populær progressiv JavaScript-ramme. Evan arbejder på Vue på fuld tid med finansieringen fra Patreon-kampagnen. Tidligere arbejdede han hos Google og Meteor.

Denne artikel blev oprindeligt udgivet på Between the Wires, en interviewserie med dem, der bygger udviklerprodukter.

Fortæl os lidt om din barndom, og hvor du voksede op.

Okay, så jeg blev født i Kina, min hjemby hedder Wuxi. Det er en mellemstor by, der ligger lige ved siden af ​​Shanghai. Faktisk gik jeg til Shanghai på gymnasiet i tre år og pendlede frem og tilbage. Efter gymnasiet gik jeg til USA på college. Jeg antager, at jeg fik tidlig adgang til computere, men jeg kom ikke rigtig ind i programmering for meget. Jeg var mere interesseret i spil, og jeg spillede meget med Flash, da jeg var i gymnasiet, fordi jeg virkelig nød at lave de interaktive historiefortællingsoplevelser.

Hvad var din første programmeringsoplevelse?

”Jeg blev tiltrukket af JavaScript på grund af muligheden for bare at bygge noget og dele det med det samme med verden. Du lægger den på nettet, og du får en URL, du kan sende den til alle med en browser. Det var den del, der lige tiltrak mig til internettet og JavaScript. ”

Da jeg gik på college i USA, vidste jeg ærligt talt ikke, hvad jeg ville gøre, og jeg studerede studiekunst og kunsthistorie. Da jeg var ved at tage eksamen, indså jeg, at det var ret svært at finde et job med studiekunst og kunsthistorie.

Jeg regnede med, at jeg måske kunne gå til et kandidatuddannelse, der passer bedre til mine interesser og udviklede flere færdigheder. Jeg gik til Parsons og studerede Master of Fine Arts for design og teknologi. Det var et rigtig sejt program, fordi alle var halvt designere og halvt udviklere. De lærte dig ting som openFrameworks, behandling, algoritmiske animationer, og du var også nødt til at designe apps og grænseflader.

Parsons underviste ikke rigtig meget JavaScript, men jeg blev tiltrukket af JavaScript på grund af evnen til bare at opbygge noget og dele det med det samme med verden. Du lægger den på nettet, og du får en URL, du kan sende den til alle med en browser. Det var den del, der lige tiltrak mig til internettet og JavaScript.

På det tidspunkt var Chrome-eksperimenter netop blevet frigivet, og jeg blev helt blæst væk. Jeg sprang straks ind i JavaScript og begyndte at lære det selv og begyndte at bygge ting, der ligner Chrome-eksperimenter. Jeg lagde disse ting i min portefølje, og så blev det på en eller anden måde afhentet af rekruttereren hos Google Creative Lab. Jeg sluttede mig som en del af Five-programmet. Hvert år rekrutterer Creative Lab fem nye kandidater. Det er dybest set et lille team med en tekstforfatter, en kreativ teknolog, en grafisk designer, en strateg og et wildcard.

Okay, hvornår eller hvordan opdagede du det aktuelle problem, du prøver at løse med Vue.js?

Mit job hos Google involverede en masse prototyper i browseren. Vi havde denne idé, og vi ønskede at få noget håndgribeligt så hurtigt som muligt. Nogle af projekterne brugte Angular på det tidspunkt. For mig tilbød Angular noget sejt, som er databindende og en datadrevet måde at håndtere en DOM på, så du behøver ikke at røre ved DOM selv. Det bragte også alle disse ekstra koncepter ind, der tvang dig til at strukturere koden, som den ønskede dig. Det føltes bare for tungt for brugssagen, som jeg havde på det tidspunkt.

Jeg regnede med, hvad hvis jeg bare kunne udtrække den del, som jeg virkelig kunne lide ved Angular, og bygge noget rigtig let uden alle de ekstra koncepter, der var involveret? Jeg var også nysgerrig efter, hvordan den interne implementering fungerede. Jeg startede dette eksperiment med bare at forsøge at replikere dette minimale funktionssæt, som deklarativ databinding. Det var dybest set, hvordan Vue startede.

Jeg arbejdede på det og følte, at det havde potentiale, fordi jeg nød at bruge det selv. Jeg lagde lidt mere tid i det og pakket ordentligt op, gav det et navn, kaldte det Vue.js. Det var i 2013. Senere tænkte jeg, ”Hej, jeg lagde så meget tid på dette. Måske skulle jeg dele det med andre, så de i det mindste kunne få gavn af det, eller måske finder de det interessant. ”

I februar 2014 var det sådan, jeg først udgav det som et egentligt projekt. Jeg lagde det ud på Github og sendte et link til Hacker News, og det blev faktisk stemt til forsiden. Det blev der et par timer. Senere skrev jeg en artikel for at dele brugsdata om den første uge, og hvad jeg lærte.

Det var min første oplevelse at se folk gå til Github og medvirkede i et projekt. Jeg tror, ​​jeg fik flere hundrede stjerner i den første uge. Jeg var super begejstret dengang.

Hvis du skulle nævne et par centrale ting, der definerede Vue sammenlignet med andre rammer, hvad ville du sige?

Jeg tror, ​​med hensyn til alle rammerne derude, er Vue sandsynligvis det mest lig React, men i en bredere forstand blandt alle rammerne er udtrykket, som jeg opfandt mig selv, en progressiv ramme. Ideen er, at Vue består af denne kerne, som bare er databinding og komponenter, der ligner React. Det løser et meget fokuseret, begrænset sæt problemer. Sammenlignet med React sætter Vue lidt mere fokus på tilgængelighed. At sikre, at folk, der kender grundlæggende som: HTML, JavaScript og CSS, kan hente det så hurtigt som muligt.

På et rammeniveau forsøgte vi at bygge det med en meget slank og minimal kerne, men når du bygger mere komplekse applikationer, skal du naturligvis løse yderligere problemer. For eksempel routing, eller hvordan du håndterer kommunikation på tværs af komponenter, del stater i en større applikation, og så har du også brug for disse buildværktøjer til at modulere din kodebase. Hvordan organiserer du typografier og de forskellige aktiver i din app? Mange af de mere komplette rammer som Ember eller Angular, de prøver at være meningsfulde om alle de problemer, du vil løbe ind i, og forsøger at gøre alt indbygget i rammen.

Det er lidt af en afvejning. Jo flere antagelser du gør om brugerens brugssag, jo mindre fleksibilitet vil rammen i sidste ende have råd til. Eller overlad alt til økosystemet, såsom React - React-økosystemet er meget, meget levende. Der kommer mange gode ideer ud, men der er også en masse churn. Vue forsøger at vælge mellemgrunden, hvor kernen stadig er eksponeret som et meget minimalt funktionssæt, men vi tilbyder også disse trinvist vedtagelige stykker, som en routing-løsning, en state management-løsning, en build-værktøjskæde og CLI. De er alle officielt vedligeholdt, veldokumenterede, designet til at arbejde sammen, men du behøver ikke bruge dem alle. Jeg tror, ​​det er sandsynligvis den største ting, der gør Vue som en ramme, forskellig fra andre.

Hvordan lykkedes det dig at blive økonomisk bæredygtig med Vue.js?

"Jeg skaber værdi for disse mennesker, så hvis jeg på en eller anden måde kan samle disse værdier i en økonomisk form, så skulle jeg være i stand til at opretholde mig selv."

Jeg skaber værdi for disse mennesker, så hvis jeg på en eller anden måde kan samle disse værdier i en økonomisk form, så skulle jeg være i stand til at opretholde mig selv. Dette bliver kompliceret, fordi JavaScript-rammer er relativt vanskelige for folk at betale på forhånd, i betragtning af hvordan JavaScript-økosystemet har fungeret.

Vue har en meget levende brugerbase. Mange af Vue-brugere er fra Laravel-samfundet, og de er også virkelig entusiastiske og hyggelige mennesker. Tænkte jeg, ville crowdfunding fungere? Jeg ville bare prøve denne idé på Patreon. Faktisk gjorde Dan Abramov, skaberen af ​​React-Hot-Loader og Redux, også en lille kampagne på Patreon før. Det er faktisk det, der interesserer mig. Jeg har en grov idé om, hvor mange mennesker der bruger Vue. Lad os sige, at der er 10.000 brugere. Hvis måske 1% af dem er villige til at give mig ti dollars om måneden, er det noget.

I februar startede jeg en Patreon-kampagne, og det er en todelt ting. Den ene del er målrettet mod personer, der bruger Vue. Typisk er de bare villige til at opgive en lille sum, ligesom at købe kaffe til mig. Derefter er der den anden lejr med faktiske forretningsenheder, som nystartede virksomheder eller konsulentbutikker, der har bygget ting med Vue. Det er vigtigt for dem at se, at Vue opretholdes i det lange løb. Det giver dem ro i sindet ved at vide, at deres økonomiske støtte vil gøre Vue mere bæredygtigt, og de kan føle sig sikre ved at bruge det i det lange løb.

Et andet aspekt af det er Patreon-belønninger. Hvis virksomheder er villige til at sponsorere os, kan jeg lægge deres logo op på en sponsorside på vuejs.org. Det øger samfundets bevidsthed. Halvdelen af ​​Patreon-midlerne kommer fra enkeltpersoner, og en af ​​dem sponsorerede $ 2000 om måneden. Jeg anede ikke, om det ville ordne sig, da jeg prøvede det, men det viser sig, at det er lidt arbejde. Jeg tror, ​​jeg sprang på fuld tid, da jeg havde $ 4000 om måneden på Patreon, og nu er den vokset til over $ 9800 om måneden.

Tog det lang tid at overbevise dem om at sponsorere dig? Var de overhovedet skeptiske, som om du bare er en ung ramme, holder du muligvis ikke seks måneder?

Da jeg startede Patreon-kampagnen, så Vue allerede virkelig stærk vækst. I begyndelsen af ​​2015 var Vue stort set kun et tilfældigt open source-projekt, men Laravel-samfundet begyndte at fortsætte med Vue. Jeg følte, at hvis jeg faktisk ikke kunne tjene penge på det, ville det ikke give mening.

Jeg er nødt til at takke Strikingly specielt, som er en start-up i Shanghai. De er virkelig aktivt involveret i JavaScript og Ruby-samfund i Kina. De bruger faktisk ikke Vue meget, men de har denne månedlige fond, som de bruger til at sponsorere open source-projekter. De var den første $ 2000 om måneden sponsor i seks måneder.

Det hjalp betydeligt i den tidlige fase. Taylor Otwell, skaberen af ​​Laravel, sponsorerer også Vue. Han startede med 100 og stødte det op til 200 og 500 over tid.

Du nævnte, at du var i stand til at blive sponsoreret, fordi den voksede så hurtigt. Var du nødt til at foretage nogen markedsføring? Eller voksede det organisk?

Jeg vil sige, at der ikke er nogen rigtige penge involveret i markedsføring. Jeg købte ikke annoncer eller noget. Det er for det meste bare at skrive nogle blogindlæg. Mange gange administrerede jeg bare Twitter-kontoen. Jeg synes, det er stort set det. Lejlighedsvis vil jeg skrive et indlæg på Medium.

Du endte med at få stor trækkraft på internationale markeder, hvilket sandsynligvis er ret unikt. Vi vil meget gerne høre, hvordan det skete, og nogle af udfordringerne og bedste praksis for at engagere udviklere uden for USA.

Det kinesiske marked er unikt. Jeg er kinesisk og er temmelig involveret i det kinesiske JavaScript-samfund. Mange mennesker kendte Vue, fordi de kendte mig. Vi havde hele denne oversættelse af Vue-dokumentation til rigtig velskrevet kinesisk, så det hjalp meget med Vue's adoption i Kina. Mange brugere ved også, "Hej, forfatteren af ​​dette bibliotek er kinesisk." De føler sig naturligvis tilbøjelige til i det mindste at tjekke det ud, men jeg tror, ​​det hjalp ganske meget i de tidlige faser. Vue begyndte lige at blive brugt af flere og flere virksomheder i Kina, herunder hold i Alibaba, Tencent og Baidu. Det er alle virksomheder, der værdiansættes til milliarder dollars i Kina. React har også en rigtig stor mindshare i Kina.

Der er en Quora-klon i Kina ved navn Zhihu, folk stiller alle mulige tilfældige spørgsmål derude, og jeg besvarer en masse JavaScript og Vue.js-relaterede spørgsmål til dem.

Har du nogle forslag til virksomheder, startups eller open source-projekter, der ikke let er i stand til at engagere sig eller kommunikere med internationale samfund?

Jeg antager, at sprogbarrieren sandsynligvis er den sværeste del. Ideen er, at hvis du ikke rigtig lægger en dedikeret indsats i at skubbe noget i Kina, så vil ingen lægge mærke til det, medmindre du er så stor som React. Du har brug for nogen, der kan tale kinesisk, nogen, der kan tale indfødt kinesisk for faktisk at gøre det.

En anden interessant ting er, at der faktisk er mange andre brugere fra andre regioner i verden som Italien, Spanien, Portugal og Japan. Nogle af de mest aktive bidragydere er fra Japan. De er virkelig, meget omhyggelige med at oversætte dokumentationerne.

Har du lavet nogen fejl under opbygningen af ​​Vue, som du håber aldrig igen?

"Jeg er nødt til at genoverveje problemet helt på en bestemt måde, men jeg tror, ​​det er sådan, softwareudvikling går, fordi du aldrig ville få noget lige lige fra første forsøg."

Hm, jeg ved, der er sandsynligvis en hel del. Til dato er Vue blevet omskrevet fra grunden to gange. Selvfølgelig omskrev jeg det, fordi den oprindelige implementering havde problemer, der bare ikke kunne løses ved gradvist ildfast. Det er som hvert halve år, jeg ser på kodebasen fra seks måneder siden. Jeg bliver ligesom, wow. Hvordan fungerede dette endda?

Jeg er nødt til at overveje problemet helt på en bestemt måde, men jeg tror, ​​det er sådan, softwareudvikling går, fordi du aldrig ville få noget lige lige fra første forsøg.

Rejsen med at opbygge Vue er også en rejse med bare at vokse som udvikler, for over tid var jeg nødt til at tilføje nye funktioner, vedligeholde det, rette fejl og sikre, at hele økosystemet fungerede korrekt sammen. Det udsætter dig naturligt for alle de problemer, du vil støde på som softwareingeniør. Det er bare en læringsproces.

Har der været følelsesmæssige eller ikke-tekniske vanskeligheder, som du har været udsat for Vue?

”Der vil ikke være denne ene sande ramme, der bare gør alle glade. Den vigtigere del er, gør det bedre for de mennesker, der rent faktisk nyder din ramme. Fokuser på, hvad du mener er den mest værdifulde ting i dine rammer, og sørg bare for at du laver et godt stykke arbejde i stedet for at bekymre dig om, hvordan du sammenligner med andre. ”

Der har helt sikkert været. Der er meget pres med hensyn til konkurrence. Da Vue stadig var relativt ukendt, er trykket ikke der, fordi enhver eksponering er god. Folk vil ikke holde dig op til en bestemt standard. Men da Vue er blevet større og større, begyndte folk naturligvis at sammenligne Vue med ting som Angular eller React, og de påpegede ting som, “hej, React gør det bedre. Vinkel gør dette bedre. ”

Det lægger et stort pres på dig, og det kan være stressende at skulle konkurrere med alle de store fyre. Især nu hvor jeg gør det på fuld tid. Levedygtigheden af ​​Vue i økosystemet er grundlæggende direkte relateret til hvor godt jeg har det.

Men for nylig så jeg lige en tale af Evan Czaplicki, forfatteren af ​​Elm, hvor han talte om, hvordan han havde et lignende pres, da han arbejdede på Elm. Der var Om, ClojureScript-grænsefladen oven på React. Der var PureScript, der er andre funktionelle kompilering til JavaScript-sprog derude, han var også bekymret for, hvordan Elm kunne konkurrere med disse biblioteker.

Senere talte han med Guido, forfatter af Python, og Guido gav ham råd, han sagde, "bare gør et godt stykke arbejde." Ideen bag det er, at Python også havde dette problem. Det konkurrerer med mange dynamiske sprog som Ruby, JavaScript, Perl, og det er også i det samme problemdomæne. Det ender med alle disse sprog, der har succes i deres egen ret, og de har deres eget dedikerede samfund, der bruger dem og nyder disse sprog.

Folk foretrækker forskellige sprog af en grund. I lighed med JavaScript-rammer foretrækker folk forskellige rammer af en grund. Der vil ikke være denne ene sande ramme, der bare gør alle glade. Den vigtigere del er, gør det bedre for de mennesker, der rent faktisk nyder din ramme. Fokuser på, hvad du mener er den mest værdifulde ting i dine rammer, og bare sørg for at du laver et godt stykke arbejde i stedet for at bekymre dig om, hvordan du sammenligner med andre.

Hvad ville du betragte som et vellykket resultat for Vue.js?

Det er et hårdt spørgsmål, fordi omfanget af Vue.js er bestemt steget over tid. Vi har nu hele dette rammeøkosystem, og vi udvider også til at udforske ting som Weex, der gengiver Vue-komponenter til et oprindeligt brugergrænseflade.

Jeg er også meget interesseret i Vue-tilgængelighedsdelen, der er rodfæstet i troen på, at teknologien skal gøre det muligt for flere mennesker at bygge ting.

De næste par er bare sjove spørgsmål uden for programmering. Hvad er nogle andre hobbyer eller interesser, du har uden for programmering?

Anime, jeg læste en masse manga. Hvis du ikke har bemærket det, er Vue's udgivelser kodenavnet med anime-navne. Det startede i .09, hvert store frigivelseskodenavn øges med et bogstav. 2.0 er G, som er Ghost in the Shell. F er faktisk forbeholdt 1.1. 1.0 var Evangelion.

Jeg nyder virkelig karaoke.

Hvad er nogle af de bedste teknologier eller trends, som du er mest begejstret for?

Generel teknologi. Det er underligt, fordi jeg ikke er meget begejstret for AR eller VR ting. Jeg vil virkelig tale om noget, der er tættere på udviklere. Noget som Guillermo laver med Now. Udviklere bygger værktøjer til udviklere, og udvikleroplevelsen af ​​disse værktøjer, det er også brugeroplevelse, men til udviklerværktøjer.

Hvem er nogle af dine programmeringshelte? Hvis du har nogen.

Naturligvis TJ Holowaychuck og Guillermo Rauch. Jeg er ikke en datalogi-hovedfag. Jeg lærte dybest set programmering gennem bare tilfældige online ressourcer og bøger, men en vigtig måde, jeg lærte, var bare ved at læse andres kode. Når jeg læser TJs kode, har jeg altid lyst til, at det er virkelig elegant. Det er det ord, der kommer til at tænke på mig, og som påvirkede mig meget. TJ er bestemt en helt for mig.

Dette projekt er muliggjort med sponsorater fra frontendmasters.com, egghead.io, Microsoft Edge og Google Developers.

Doner for at støtte dette projekt.

For at foreslå en producent, som du gerne vil høre fra, skal du udfylde denne formular.

Du kan også sende feedback til betweenthewires på Twitter.