
Vue.js Creator Evan You Interview - Evrone
https://evrone.com/evan-you-interview
======
apacheCamel
>Another important thing is that I take long breaks (several weeks) whenever I
feel I need to — which is probably harder to do if I’m a full time employee at
a company.

A "Patreon-funded full-time job position" and the ability to take weeks off at
a time? What an amazing career path Evan has taken. He sounds so passionate
about Vue and he is fully funded to be able to do it. And what a good project
to fund, always moving forward but at the same time pushing for the features
that users want.

~~~
langitbiru
And the money is not bad.

[https://blog.patreon.com/vue-js-creator-evan-
you](https://blog.patreon.com/vue-js-creator-evan-you)

~~~
matthoiland
>$16,000/mo, enough to cover his salary along with his new hire

That's $192k, pre-tax, between two people and likely infrastructure and
tooling costs. Most developers of You's skill earn nearly double that at FAANG
companies.

~~~
kyawzazaw
DO we know where he lives? Patreon is not his sole revenue source.

~~~
wetmore
New Jersey iirc.

------
jdellinger
So I recently had the opportunity to use the new composition API, which will
come in V3, in a project and want to share my two cents. The project had some
limitations tho: no webpack and no typescript (so basically inline x-templates
and pure browser JS).

Starting of with the composition API was great. No "this", easy reuse of logic
via react-like "useXYZ" hooks and a general fast development. But two things
really bugged me:

* You need to be really careful when passing around values and how you handle them. Destructure a Proxy object? You instantly lose reactivity. Not using a reference to proxy object in computed? Changes won't trigger the computed function. There is a lot of magic involved and while it may seem that it takes a lot of "thinking" from you, once it doesn't work you will have to rethink and maybe even ditch some of the underlying language's features.

* "ref" vs "reactive", where "ref" is used for primitives which need a proxy object wrapper and "reactive" is used for objects/arrays. Now, my primary problem is that you again have to use specific operations based on whether your using ref or reactive. A "ref" array can be easily set to an empty array via `arr.value = []`. If you try this with a "reactive" array, you will lose reactivity; you would have to use `arr.length = 0`.

TypeScript detects a lot of those pitfalls and, IMO, it is essential when
using the composition API. Without it, there is too much invisible magic
happening.

~~~
midrus
I used to prefer (and by a lot) Vue more than React because of its simplicity
and completeness (router + store + everything you need).

After trying to use v3 for a new project and trying out the composition API,
I've gone back to React.

With v3, and the composition API, to me, it lost all of its appeal (being
simple, easy and complete). Now to me it has the worst of both worlds... it's
not as easy anymore, has a lot of gotchas and conceptual overhead.

~~~
brylie
The same thing happened to Meteor.js, another project with which Evan was
involved. Meteor started out with an ethos of simplicity and friendly
developer experience. It lost it's ethos and was picked apart in the name of
"scalability". This has left people in a lurch who were drawn into Meteor for
it's simplicity and now have projects to maintain in a largely abandoned
framework.

I've primarily moved over to Django with server rendered content and sprinkles
of JavaScript where needed.

~~~
brightball
This is the appeal of Phoenix LiveView for me. Server rendering was already
incredibly fast with Phoenix, but the ability to forgo the majority of JS with
LiveView bypasses all of these framework complications.

~~~
brylie
Yes, LiveView is very exciting, although I haven't used it.

For those interested in LiveView-esque functionality in other frameworks ,
there are some similar projects cropping up:

\- Django Reactor
[https://github.com/edelvalle/reactor](https://github.com/edelvalle/reactor)

\- Laravel Livewire: [https://laravel-livewire.com/](https://laravel-
livewire.com/)

\- Rails Stimulus Reflex:
[https://docs.stimulusreflex.com/](https://docs.stimulusreflex.com/)

\- Intercooler.js: [https://intercoolerjs.org/](https://intercoolerjs.org/)

~~~
brightball
I’d be very curious if those can be implemented in a performant way.

There’s a combination of low level features that combine to make LiveView work
effectively.

------
skc
Vue is the one js framework that was really a breeze to learn. In most cases,
your first attempt at doing something in Vue will just work the way you intuit
it to work.

Docs are fantastic as well.

Congrats to Evan You for a stellar job

~~~
genidoi
The Docs take Vue to a league of its own. I'd contend that no other JS
ecosystem has docs that are as lucid, concise and beginner friendly as Vue's.
This intro to VueX (Vue's state management library) is a good example:
[https://vuex.vuejs.org/](https://vuex.vuejs.org/)

~~~
azangru
Are you guys all using ad blockers? I open Vue docs — and the right-hand
column of the screen is a wall of ads. For comparison, I open React docs — and
there are only docs there (unless you count the obligatory BLM header). With a
larger font, too, because there, docs don't need to compete for page space
with the ads.

~~~
_coveredInBees
You might want to check your browser/machine for something hijacking and
inserting ads. The only ad I see is in the top-left and it is very non-
intrusive and doesn't distract from the content at all.

------
Crazyontap
Whenever people mention how awesome Vue is, there is always a comment that
nothing beats vanilla JS.

I recently I learned that it not always true. As a matter of fact Vue (and
many frameworks) does a lot of optimization under the hood to keep your apps
breezy.

For example when you're dealing with lots of data, One of such concepts is re-
using input fields and DOM elements via keying. So if you are trying to render
lots of input fields, Vue can intelligently reuse(1) the components so as to
make minimal changes to the DOM (implementing this vanilla JS is possible but
might require lots of efffort).

(1) [https://vuejs.org/v2/guide/components.html#Reusing-
Component...](https://vuejs.org/v2/guide/components.html#Reusing-Components)

------
red2awn
Just here to thanks Evan (and friends) for building such an awesome
technology.

~~~
newsbinator
Seconded. Using Vue makes me happy like no other tech has quite done.

~~~
DJBunnies
3rded from a backend engineer. Vue.js just makes sense.

~~~
nullsense
4thed from a full stack developer where some parts of the stack are a little
fuller than others.

------
kinow
Great stuff, waiting for Vue 3 release, then after a few weeks will start
updating my current project.

As a former backend engineer, I'm really grateful to be working with Vue. I
used Backbone, and a little React and Angular before. Vue was the simplest and
the most fun so far.

------
onion2k
Vue is awesome. The encapsulation that comes from single file components is
something I would _love_ to have in React.

~~~
petepete
That's my least favourite thing about Vue. One directory per component makes
so much more sense to me, not having a mix of syntaxes in a single file.

Still, Vue is my favourite tech for SPAs.

~~~
jtwaleson
I really love single file components. We are extending the syntax more by also
adding <specification> and <requirements> tags to single file components.
Great for automatically generating documentation and keeping it in the same
place as the components. Was a bit afraid that the compiler would protest, but
so far so good.

~~~
buzzwordninja
Where do you put the elements? Next to the <template> or inside it?

~~~
jtwaleson
Next to it, so that it doesn't interfere with either <style>, <script> or
<template>.

------
jaeming
>The "Function-based Component API" proposal for Vue 3 received a massive
pushback from community members.

I'm having a hard time getting on board with the Composition API. I'll admit I
was one of those that pushed back against it. While it looks like a powerful
API and I think it would be a great replacement for mixins for instance, I
don't want to start writing all my components with it.

BTW, My main fear was not that they would deprecate the object-based syntax,
like Evan points out in the interview. What I'm worried about is now walking
into a Vue role where I don't know if they're using Object syntax, Class
syntax, or the Composition API syntax, or a combination of all three.

My fear was partially confirmed when we had a meeting at work about the
upgrade path to Vue 3 and almost all of the other engineers stand in support
of writing everything with the Composition API.

Time will tell if the Composition API becomes like React Hooks in terms of
popularity I guess. But I'm already using frameworks like Svelte, and a few
others at home as a kind of backup plan. BTW, Some nice looking, Typescript-
friendly frameworks I've also checked out are
[https://aurelia.io](https://aurelia.io) and
[https://stenciljs.com](https://stenciljs.com)

------
syndacks
How was Evan able to work on Vue while employed by Google? Didn't his contract
have a clause in it (as I know most tech companies do) that more or less
states: anything you make while working here is ours, regardless of wether you
do it in your free time or not (especially an Angular competitor).

~~~
hasperdi
I think he started Vue after his Google time. Tde story is covered in thing
short documentary
[https://m.youtube.com/watch?v=OrxmtDw4pVI](https://m.youtube.com/watch?v=OrxmtDw4pVI)

------
spoonsearch
There's a good documentary on Vue.js and it's creator Evan You -
[https://www.youtube.com/watch?v=OrxmtDw4pVI](https://www.youtube.com/watch?v=OrxmtDw4pVI)

------
Bergrebell
Vue just makes fun. Especially with tools like nuxtJS.

------
sam_goody
I was turned off of Vue when they put a big "Join BLM" banner on the top of
their site.

In my vue, that is mixing politics and personal opinions into a public coding
project. I believe this to be a non-no. It implies that those that don't share
your [unrelated] views are not legitimate.

In this example, it implies that those who are pro-minority rights but anti-
protests are in some way less committed than their pro-rights and pro-protest
counterparts. Which is not correct - there are many, many people like myself
who have dedicated their lives to helping minorities, but think it can better
be done if we don't turn them into victims.

You can disagree, but don't make it part of the code.

I encourage all large public projects to please respect the opinions and
efforts of all their users and possible contributors, even if their users are
not woke, or try to do good in ways other than you would.

The banner is gone, so am hoping that other commenters will respond to this as
an example, not as a specific. (In other, don't defend BLM, there are other
venues for that.) Please, please keep politics for the media to exagerate, and
keep large projects politics free.

edit - _sigh_ For all those erstwhile readers that are righteously downvoting
me into oblivion - that's fine. I respect your right to consider my verse
worthy of ire. But a comment to explain why you disagree would be so much
better! Angry destruction without reason is already plentiful, but it is
neither constructive nor persuasive. It reinforces the feeling that you will
happily cancel anyone with another point of view just because you don't care
to hear it.

~~~
Pelic4n
I disagree with you and I will explain my reasons why: BLM is not about
politics or personal opinions, it is about human rights, so is the LGBT flag
stuff, so is speaking out against the chinese governement for the Uyghurs
genocide currently being carried out.

You know what has happened to Georges Floyd, Breonna Taylor and many others.
People murdered routinely by the police without any consequences. Using
whatever platform you have to speak out against it is morally right. Protests
happens after decades of police violence against black communities, by being
against those you are standing against an human rights issue (Whatever is your
reason, even COVID). You need to be aware of that and think if that's a good
use or your life. Plenty of people do, usually white nationalists, KKK members
and neo-nazis, who are vocally againsts humans rights and equality between
white people and people of colors.

~~~
sam_goody
Thank you very much for explaining.

I also am pro human rights. Very much so. And yet I think that BLM does it all
wrong, and all that will come out of their protests are more police, more
government, more bigotry against the blacks, and more slums.

I suspect that there are a lot of people like myself.

~~~
Pelic4n
BLM is showing us uncomfortable reality, which is how poor black people are
treated in the US. For anyone slightly better off, all this pain, anger and
the violence which stems from it is difficult to process and can lead us to
cognitive dissonance to avoid these feelings. "they're doing it wrong! BLM is
violent thugs and terrorists, if they wanted results they would be 100%
peaceful. They're working against these causes!" is that cognitive dissonance.

Turns out, human rights activists have been peaceful. For decades. It did
nothing. Even filmed in broad daylight, with people begging him to stop and
with the whole world watching it on the internet, a police officer can still
murder a black man and get away with it. Which they would have without the
protests. Now, each time that happens, there will be a wave of righteous anger
through the country. Until that doesn't happens anymore I hope.

MLK's protests weren't peaceful. There was the same stuff happening, looting,
violents elements, confrontations with white nationalists, and they've changed
things, tremendously for the better. I hope the same happens with BLM.

------
candiddevmike
Isn't this a little ironic considering the backlash against Vue 3 and the
creation of Svelte?

~~~
uallo
> backlash against Vue 3

What backlash against Vue 3? I know that there were very passionate
discussions about several different RFCs that eventually lead to the current
Composition API. But as far as I can tell, the current Composition API is very
well accepted in the community. Also, the Composition API is an addition and
does not replace the API of Vue 2.

So do you refer to the controversies about older RFCs? Because I can't see any
other backlash. BTW, having discussions in an RFC is a _good_ thing as it
helps getting to a better overall solution.

> creation of Svelte

How is Svelte related to Vue in general or Vue 3 specifically? Svelte 1.0 was
released in 2016 and I can't really see any irony here at all.

~~~
nailer
I don't know much about Vue but the single file components used in Svelte was
inspired by Vue.

I think they share more goals than they compete on, with Svelte being newer
(compiler based) and Svelte taking an older style approach (Virtual DOM) to
implement those goals.

~~~
arxpoetica
Other way around. Vue adopted Ractive's SFC approach. (Ractive was Svelte's
predecessor.)

[https://twitter.com/Rich_Harris/status/1028683965983584256](https://twitter.com/Rich_Harris/status/1028683965983584256)

