A vezetékek között: Interjú a Vue.js alkotójával, Evan You-vel

Megkérdeztem Evan You-t, a vuejs.org létrehozóját, amely egy népszerű progresszív JavaScript keretrendszer. Evan teljes munkaidőben dolgozik a Vue-n a patreoni kampány finanszírozásával. Korábban a Google-nál és a Meteornál dolgozott.

Ezt a cikket eredetileg a Betűk a vezetékek között, egy interjúsorozaton tették közzé, amely bemutatja azokat, akik fejlesztői termékeket építenek.

Meséljen egy kicsit gyermekkoráról és arról, hogy hol nőtt fel.

Oké, tehát Kínában születtem, szülővárosomat Wuxinak hívják. Ez egy közepes méretű város, amely közvetlenül Sanghaj mellett található. Valójában három évig Sanghajba jártam gimnáziumba, és ide-oda ingáztam. Középiskola után az Egyesült Államokba mentem egyetemre. Azt hiszem, korán hozzáférhettem a számítógépekhez, de valójában nem kezdtem túl sokat programozni. Engem inkább a játékok érdekeltek, és középiskolás koromban sokat játszottam a Flash-szel, mert nagyon élveztem ezeket az interaktív történetmesélési élményeket.

Mi volt az első programozási tapasztalatod?

„Azért vonzott a JavaScript, mert egyszerűen építhetek valamit, és azonnal megoszthatom a világgal. Ön felteszi az internetre, és megkap egy URL-t, és bárkinek elküldheti böngészővel. Ez az a rész vonzotta az internetet és a JavaScriptet. ”

Amikor egyetemre mentem az Egyesült Államokban, őszintén szólva nem tudtam, mit akarok csinálni, és stúdióművészet és művészettörténet szakon végeztem. Amikor érettségizni készültem, rájöttem, hogy nagyon nehéz munkát találni a stúdió művészetével és művészettörténetével.

Arra gondoltam, hogy elmehetek olyan mesterképzésre, amely jobban megfelel az érdeklődésemnek és több képességet fejleszt. Elmentem Parsonsba, és a Design and Technology képzőművészeti mestert tanultam. Nagyon klassz program volt, mert mindenki félig tervező és félig fejlesztő volt. Olyan dolgokat tanítottak meg neked, mint az openFrameworks, a feldolgozás, az algoritmikus animációk, és neked is meg kellett tervezned alkalmazásokat és interfészeket.

Parsons valójában nem tanított sok JavaScript-et, de vonzott a JavaScript, mert egyszerűen építhettem valamit, és azonnal megoszthattam a világgal. Ön felteszi az internetre, és megkap egy URL-t, és bárkinek elküldheti böngészővel. Ez az a rész vonzotta az internetet és a JavaScriptet.

Abban az időben a Chrome-kísérleteket éppen most hozták nyilvánosságra, és engem teljesen feldúlt. Azonnal beugrottam a JavaScript-be, és elkezdtem magam megtanulni, és elkezdtem a Chrome-kísérletekhez hasonló dolgokat építeni. Betettem ezeket a dolgokat a portfóliómba, majd valahogy felvette a toborzó a Google Creative Lab-nál. Az Öt program részeként csatlakoztam. A Creative Lab minden évben öt új diplomát vesz fel. Alapjában véve egy kis csapat, szövegíróval, kreatív technológussal, grafikai tervezővel, stratégával és helyettesítővel.

Oké, mikor vagy hogyan fedezte fel az aktuális problémát, amelyet a Vue.js segítségével próbál megoldani?

A Google-nál végzett munkám sok prototípust tartalmazott a böngészőben. Ez az ötlet volt bennünk, és a lehető leggyorsabban szerettünk volna valami kézzelfoghatót szerezni. Néhány projekt abban az időben Angulart használt. Számomra az Angular valami jót ajánlott, ami adatkötés és egy adatközpontú módszer a DOM kezelésére, így nem kell magának megérintenie a DOM-ot. Ez magával hozta ezeket a különféle fogalmakat is, amelyek arra kényszerítették, hogy a kódot úgy szerkesszék, ahogyan szeretné. Túl nehéznek éreztem az akkori használati esetemet.

Gondoltam, mi lenne, ha csak kibontanám azt a részt, ami nagyon tetszett az Angular-ban, és valami igazán könnyű dolgot felépíthetnék az összes extra koncepció nélkül? Kíváncsi voltam arra is, hogyan működik a belső megvalósítása. Ezt a kísérletet csak azzal a minimális szolgáltatáskészlettel próbáltam megismételni, mint a deklaratív adatkötés. A Vue alapvetően így indult.

Dolgoztam rajta, és éreztem, hogy van benne potenciál, mert élveztem, hogy magam használtam. Kicsit több időt töltöttem bele és rendesen összecsomagoltam, nevet adtam neki, Vue.js-nek hívtam. Ez 2013-ban volt. Később azt gondoltam: „Hé, ennyi időt fordítottam erre. Talán meg kellene osztanom másokkal, hogy ők legalább profitáljanak belőle, vagy talán érdekesnek találják.

2014 februárjában először tettem közzé tényleges projektként. Tettem ki a Github-ra és elküldtem egy linket a Hacker News-hoz, és valójában az első oldalra szavaztak. Néhány órán át ott maradt. Később írtam egy cikket, hogy megosszam az első heti használati adatokat és a tanultakat.

Ez volt az első tapasztalatom, amikor láttam, hogy az emberek elmennek a Githubba, és egy főszerepet játszanak. Azt hiszem, az első héten több száz csillagot kaptam. Akkoriban nagyon izgatott voltam.

Ha fel kellene sorolnia néhány alapvető dolgot, amely meghatározta a Vue-t a többi keretrendszerhez képest, mit mondana?

Úgy gondolom, hogy az összes ottani keretet tekintve a Vue valószínűleg a legjobban hasonlít a React-re, de tágabb értelemben az összes keret között az a kifejezés, amelyet magam alkottam meg, progresszív keret. Az ötlet az, hogy a Vue ebből a magból áll, amely csak adatkötés és a React-hez hasonló alkatrészek. Nagyon koncentrált, korlátozott problémákat old meg. A Reactel összehasonlítva a Vue egy kicsit nagyobb hangsúlyt fektet a megközelíthetőségre. Annak biztosítása, hogy olyan emberek, akik ismerik az olyan alapokat, mint: HTML, JavaScript és CSS, a lehető leggyorsabban fel tudják venni.

Keretszinten megpróbáltuk nagyon karcsú és minimális maggal felépíteni, de ahogy összetettebb alkalmazásokat épít, természetesen további problémákat kell megoldania. Például az útválasztás vagy az, hogy miként kezeli a többkomponensű kommunikációt, ossza meg az állapotokat egy nagyobb alkalmazásban, és akkor ezekre az összeállító eszközökre is szüksége van a kódalap modulálásához. Hogyan rendezheti a stílusokat és az alkalmazás különböző eszközeit? Sok olyan teljesebb keretrendszer, mint az Ember vagy az Angular, megpróbálnak véleményt mondani minden problémáról, amellyel összefut, és megpróbál mindent beépíteni a keretrendszerbe.

Ez egy kis kompromisszum. Minél több feltevést tesz a felhasználó használati esetére, annál kevesebb rugalmasságot enged meg a keretrendszer. Vagy hagyjon mindent az ökoszisztémának, például a Reactnek - a React ökoszisztéma nagyon-nagyon élénk. Nagyon sok remek ötlet érkezik, de sok a kavarodás is. Vue megpróbálja kiválasztani azt a középutat, ahol a mag még mindig ki van téve, mint nagyon minimális szolgáltatáskészlet, de ezeket a fokozatosan átvehető darabokat is kínáljuk, például útválasztási megoldást, állapotkezelési megoldást, build-eszközláncot és CLI-t. Mindegyikük hivatalosan karbantartott, jól dokumentált, együttműködésre tervezett, de nem kell mindet használni. Azt hiszem, valószínűleg ez a legnagyobb dolog, ami miatt a Vue mint keretrendszer különbözik másokétól.

Hogyan sikerült pénzügyi szempontból fenntarthatóvá válnia a Vue.js segítségével?

"Értéket teremtenek ezeknek az embereknek, tehát elméletileg, ha ezeket az értékeket valahogyan pénzügyi formában tudom összegyűjteni, akkor képesnek kell lennem fenntartani magam."

Értéket teremtek ezeknek az embereknek, tehát elméletileg, ha ezeket az értékeket valahogyan pénzügyi formában tudom összegyűjteni, akkor képesnek kell lennem fenntartani magam. Ez bonyolultabbá válik, mert a JavaScript keretrendszert az emberek viszonylag nehezen fizetik előre, tekintve a JavaScript ökoszisztéma működését.

A Vue nagyon élénk felhasználói bázissal rendelkezik. Sok Vue felhasználó a Laravelcommunity-ből származik, és ők is nagyon lelkes és kedves emberek. Gondoltam, működik-e a tömeges finanszírozás? Csak ki akartam próbálni ezt az ötletet Patreonban. Valójában Dan Abramov, a React-Hot-Loader és a Redux megalkotója is korábban kisebb kampányt folytatott a Patreon-on. Tulajdonképpen ez érdekel. Körülbelül tudomásom van arról, hogy hány ember használja a Vue-t. Tegyük fel, hogy 10 000 felhasználó van. Ha talán 1% -uk hajlandó havi tíz dollárt adni, az valami.

Februárban elindítottam egy Patreon kampányt, és ez két részből áll. Az egyik rész a Vue-t használó egyénekre irányul. Jellemzően csak hajlandók lemondani egy kis összegről, olyanok, mintha kávét vásárolnának nekem. Aztán ott van a másik tábor tényleges üzleti szervezetekkel, például induló vállalkozásokkal vagy tanácsadói üzletekkel, akik dolgokat építettek a Vue-val. Fontos számukra, hogy a Vue hosszú távon fennmaradjon. Nyugalmat biztosít számukra, tudván, hogy pénzügyi támogatásuk fenntarthatóbbá teszi a Vue-t, és hosszú távon biztonságban érezhetik magukat.

Másik aspektusa a Patreon-jutalom. Ha a vállalatok hajlandók szponzorálni minket, akkor feltehetném a logójukat a vuejs.org szponzoroldalára. Növeli a közösség tudatosságát. A Patreon alapok fele magánszemélyektől származik, és egyikük havi 2000 dollárt szponzorált. Fogalmam sem volt, hogy sikerül-e, amikor megpróbálom, de kiderült, hogy ez valahogy működik. Azt hiszem, akkor teljesítettem a folytatást, amikor havi 4000 dollárom volt a Patreon-on, és most havi 9800 dollár fölé nőtt.

Hosszú időbe telt meggyőzni őket, hogy támogassanak? Szkeptikusak voltak-e egyáltalán, mint te, csak egy fiatal keretrendszer vagy, nem biztos, hogy hat hónapig bírod?

Amikor elkezdtem a Patreon-kampányt, a Vue már igazán erős növekedést mutatott. 2015 elején a Vue nagyrészt még mindig csak egy véletlenszerű nyílt forráskódú projekt volt, de a Laravel közösség teljes mértékben folytatni kezdte a Vue-t. Úgy éreztem, hogy ha valójában nem tudnék pénzt keresni belőle, akkor nem lenne értelme.

Külön köszönetet kell mondanom a Strikingly-nek, amely egy induló vállalkozás Sanghajban. Nagyon aktívan részt vesznek a JavaScript és Ruby közösségekben Kínában. Valójában nem nagyon használják a Vue-t, de van ez a havi pénzeszközük, amelyet nyílt forráskódú projektek szponzorálására használnak fel. Ők voltak az első havi 2000 dolláros szponzor hat hónapig.

Ez jelentősen segített a korai szakaszban. Taylor Otwell, a Laravel alkotója szintén szponzorálja a Vue-t. 100-al kezdte, és idővel 200-ra és 500-ra rúgta.

Említette, hogy szponzorálhatott, mert olyan gyorsan nőtt. Kellett-e valamilyen marketinget folytatnia? Vagy szervesen nőtt?

Azt mondanám, hogy nincs valódi pénz a marketingben. Nem vettem hirdetéseket vagy ilyesmit. Leginkább csak néhány blogbejegyzés írása. Sokszor csak a Twitter-fiókot kezeltem. Szerintem nagyjából ennyi. Időnként írtam egy bejegyzést a Medium-ra.

Végül nagy tapadást kapott a nemzetközi piacokon, ami valószínűleg elég egyedi. Örömmel hallanánk, hogyan történt, valamint néhány kihívást és bevált gyakorlatot a fejlesztők bevonására az Egyesült Államokon kívül.

A kínai piac egyedülálló. Kínai vagyok és eléggé részt veszek a kínai JavaScript közösségben. Sokan ismerték Vue-t, mert ismertek engem. Megvolt a Vue dokumentációjának ez az egész fordítása igazán jól írt kínai nyelvre, így ez sokat segített a Vue kínai elfogadásában. Sok felhasználó azt is tudja: „Hé, ennek a könyvtárnak a szerzője kínai.” Természetesen hajlamosak arra, hogy legalább megnézzék, de úgy gondolom, hogy ez a korai szakaszban elég sokat segített. A Vue-t egyre több kínai vállalat kezdte használni, köztük az Alibaba, a Tencent és a Baidu csapatai. Ezek mind milliárd dolláros vállalatok Kínában. A Reactnek Kínában is igazán nagy gondolkodása van.

Kínában létezik egy Zhihu nevű Quora klón, az emberek mindenféle véletlenszerű kérdést feltesznek ott, én pedig sok JavaScript-sel és a Vue.js-rel kapcsolatos kérdésre válaszolok nekik.

Van javaslata olyan vállalatok, startupok vagy nyílt forráskódú projektek kapcsán, amelyek nem képesek könnyen eljutni vagy kommunikálni a nemzetközi közösségekkel?

Gondolom, a nyelvi akadály valószínűleg a legnehezebb. Az ötlet az, hogy ha valóban nem fordítasz különösebb erőfeszítést valami erőfeszítésre Kínában, akkor ezt senki sem fogja észrevenni, hacsak akkora vagy, mint a React. Szüksége van valakire, aki tud kínaiul, valakire, aki tud kínai anyanyelvűen, hogy valóban megtegye.

Egy másik érdekes dolog, hogy valójában sok más felhasználó van a világ más régióiból, például Olaszországból, Spanyolországból, Portugáliából és Japánból. A legaktívabb közreműködők közül néhány Japánból származik. Nagyon-nagyon aprólékosak a dokumentációk fordításában.

Csináltál olyan hibákat a Vue építése közben, amelyeket remélsz, hogy soha többé nem fogsz elkövetni?

"Teljesen át kell gondolnom a problémát egy bizonyos módon, de azt gondolom, hogy csak így megy a szoftverfejlesztés, mert soha az első próbálkozástól kezdve soha nem lesz semmi rendben."

Hm, tudom, valószínűleg jó néhány van. A mai napig Vue-t kétszer is átírták az alapoktól. Nyilvánvalóan átírtam, mert az eredeti megvalósításnak olyan problémái voltak, amelyeket fokozatosan nem sikerült megoldani. Olyan, mintha félévente megnézném a fél évvel ezelőtti kódbázist. Olyan leszek, wow. Hogyan is működött ez?

Teljesen át kell gondolnom a problémát egy bizonyos módon, de azt gondolom, hogy csak így megy a szoftverfejlesztés, mert soha az első próbálkozástól kezdve soha nem lesz semmi rendben.

A Vue építésének útja egyben a fejlesztőként való növekedés útja is, mert az idő múlásával új funkciókat kellett felvennem, karbantartanom, hibákat kijavítanom és biztosítanom, hogy az egész ökoszisztéma megfelelően működjön együtt. Természetesen minden olyan problémának kiteszi Önt, amelybe szoftvermérnökként ütközne. Ez csak egy tanulási folyamat.

Voltak érzelmi vagy nem technikai nehézségek, amelyekkel szembesültél Vue-val?

„Nem lesz ez az igazi keret, amely mindenkit boldoggá tesz. Ami még fontosabb, az legyen jobb azoknak az embereknek, akik valóban élvezik a keretet. Összpontosítson arra, amit Ön szerint a legértékesebb dolog a keretrendszerében, és csak győződjön meg arról, hogy nagyszerű munkát végez, ahelyett, hogy aggódna, hogy mihez viszonyul másokkal. "

Mindenképpen voltak. Nagy a nyomás a verseny szempontjából. Amikor Vue még mindig viszonylag ismeretlen volt, ez a nyomás nincs, mert minden expozíció jó. Az emberek nem fognak bizonyos színvonalon tartani. De ahogy a Vue egyre nagyobbá vált, természetesen az emberek elkezdték összehasonlítani a Vue-t olyan dolgokkal, mint az Angular vagy a React, és rámutattak, hogy „hé, a React jobban csinálja ezt. A szögletes jobban csinálja ezt.

Ez nagy nyomást gyakorol rád, és stresszes lehet, ha versenyezni kell az összes nagy sráccal. Különösen most, amikor ezt teljes munkaidőben végzem. A Vue életképessége az ökoszisztémában alapvetően közvetlenül kapcsolódik ahhoz, hogy jól teljesítek.

De nemrégiben csak néztem Evan Czaplicki, az Elm írójának egy beszélgetését, ahol arról beszélt, hogy hasonló nyomást gyakorolt ​​rá, amikor Elm-en dolgozott. A React tetején ott volt az Om, a ClojureScript interfész. Volt PureScript, létezik más funkcionális fordítás a JavaScript nyelvekhez, és aggódott az is, hogy Elm hogyan tud versenyezni azokkal a könyvtárakkal.

Később Guido-val, a Python írójával beszélt, és Guido tanácsokat adott neki, és azt mondta: „csak jó munkát végezzen”. Az az ötlet, hogy a Pythonnak is volt ilyen problémája. Számos dinamikus nyelvvel versenyez, például a Ruby, a JavaScript, a Perl, és ugyanabban a problématerületen van. Végül ezek a nyelvek önmagukban sikeresek, és saját dedikált közösségük használja őket, élvezve ezeket a nyelveket.

Az emberek okból a különböző nyelveket kedvelik. A JavaScript keretrendszerekhez hasonlóan az emberek okokból jobban szeretnék a különböző kereteket. Nem lesz ez az igazi keret, amely mindenkit boldoggá tesz. Ami még fontosabb, az legyen jobb azoknak az embereknek, akik valóban élvezik a keretet. Koncentráljon arra, ami szerinte a legértékesebb a keretrendszerében, és csak arra ügyeljen, hogy nagyszerű munkát végezzen, és ne aggódjon, hogy másokhoz hasonlít.

Mit gondolna a Vue.js sikeres eredményéről?

Ez nehéz kérdés, mert a Vue.js hatóköre az idő múlásával határozottan megnőtt. Most már megvan ez az egész keretrendszer-ökoszisztéma, és kibővülünk olyan dolgok felfedezésére is, mint a Weex, amely a Vue-összetevőket natív felhasználói felületre rendereli.

Nagyon érdekel a Vue megközelíthetősége is, amely abban a meggyőződésben gyökerezik, hogy a technológiának több embernek kell lehetővé tennie a dolgok felépítését.

A következő néhány csak szórakoztató kérdés, a programozáson kívül. Milyen egyéb hobbid vagy érdeklődési köröd van a programozáson kívül?

Anime, sok mangát olvastam. Abban az esetben, ha nem vetted volna észre, a Vue kiadásai kódnevekkel és anime nevekkel rendelkeznek. .09-ben kezdődött, minden nagy kiadási kódnév betűvel növekszik. 2.0 a G, amely Ghost a Shellben. F valójában 1.1-re van fenntartva. 1.0 az Evangelion volt.

Nagyon élvezem a karaokét.

Melyek azok a csúcstechnológiák vagy trendek, amelyeken a legjobban izgatott vagy

Általános technológia. Furcsa, mert nem vagyok nagyon izgatott az AR vagy VR dolgok miatt. Nagyon szeretnék beszélni valamiről, ami közelebb áll a fejlesztőkhöz. Valami olyasmi, mint amit Guillermo csinál a Mosttal. A fejlesztők eszközöket fejlesztenek a fejlesztők számára, és ezeknek az eszközöknek a fejlesztői tapasztalatait, amelyek szintén felhasználói tapasztalatok, de fejlesztői eszközök számára is.

Kik a programozó hősök közül? Ha van ilyen.

Nyilvánvalóan TJ Holowaychuck és Guillermo Rauch. Nem vagyok informatikus szak. Alapvetően csak véletlenszerű online források és könyvek segítségével tanultam meg a programozást, de egy fontos mód, amit megtanultam, csak mások kódjának elolvasása volt. Amikor elolvastam TJ kódját, mindig úgy érzem, hogy valóban elegáns. Ez a szó jut eszembe, és ez engem nagyon érintett. TJ határozottan hős számomra.

Ez a projekt a frontendmasters.com, az egghead.io, a Microsoft Edge és a Google Developers szponzorálásával lehetséges.

Adományozzon a projekt támogatásához.

Kérjük, töltse ki ezt az űrlapot, hogy javasoljon olyan gyártót, akitől szeretne értesülni.

Visszajelzést is küldhet a Twitteren a két hálózat között.