Rant about Vue.js development, pt. 1


I may end up saying unkind things, so before sharing my frustration to achieve some symbolic closure, I must say that I respect people who create Free Software in general and Vue.js developers in particular. They are doing a good job, and I am deeply grateful for their contribution.

However, the way Vue developing and, even more, it's tooling, is going now is deeply upsetting me.

Part one: Vue itself

Closed-door development

First of all, the third version of Vue developing by Vue core team behind a closed door. There is a process of discussing RFC's, and that looks like a good method of communication with the community, but the source of the new version is not available. Evan You and Linus Borg explain that they don't want to create expectations and want to avoid the noise. They claim it is helping the core team to concentrate on development until basic ideas settle up a bit. They got their point, but it still bothers me.

My strong belief that Free Software development must be open by default (heck, look on the title of this blog). There can be exceptions, but one must have good arguments to step aside of default (like fixing security vulnerabilities before information about them is publicly available) and I am don't convinced Vue development is the case.

There are plenty of big successful Open Source projects out there that managed to keep the development process open without major issues as far as I know. React is the closest example.

What is more concerning for me is how Evan reacts to the question «why?».

He looked surprised that someone finds their decision questionable. That leads me to the conclusion that «open by default» principle doesn't sound obvious for Vue core team, and it's not vital for them. Why did I think it is in the first place? Don't know. It's... you know... default?

There is a Twitter discussion about this issue:

There Evan You give some arguments about why the source code of upcoming Vue 3 available only to team members.

And I'm not convinced. Something is off here.

Also, a lot of answers in this thread is like «I'm not concerned, Evan You and core team has proven themselves, I trust them.» And this attitude is what bothers me too. It's not about trust to certain people; it's about principle. You don't need «trust» if everything is open and you can check it by yourself.
And what these answers indicate, is that our community developed a specific social phenomenon: charismatic leadership. And this is bad news if you ask me.

Maybe I don't have enough experience and don't understand how big open projects development works. But still, one of the Vue selling points for me was it's open community-driven development. Now, this point slowly losing its power.

It has practical consequences as well. I'm very interested in custom renderers announced for Vue 3 in the light of VueMapbox development. Any code, even raw and unpolished, can help me to learn and develop my own ideas, be better prepared for future updates. At least for me, it's enough to mark code as «in development», «not ready», even 0.x in library version (if it's faithful to semantic versioning) to understand that until stable release things can change dramatically, I can't expect backward compatibility, and I should not bother developers with complaints. Because I was explicitly told, «do not rely on this.»

Is this not enough?

Of cause, it's their toy, and they have the right to do with it whatever they want and don't have to explain their decisions to me.

But I have the right to raise my concerns.

Moving to TypeScript

I'm not a fan of an idea of strictly typing in-browser JavaScript in general. In my opinion, until Web Platform embraces strict typing in it's APIs, things like TypeScript creates more problems than solves. And TS as a language and its type system has flaws. Although there are perfectly valid use cases for TypeScript, UI library for Web, the thing that inevitable tightly coupled to Web API's is not one of them.

Most importantly, it's another step away from Web Platform. Back in a day, Vue was closer to the Web, than, for example, React or Angular (now Dan Abramov even writing about React as «UI Runtime»). Then comes virtual DOM and other stuff and now TypeScript. I think an approach like in LitElement or, to some extension, in Svelte is more viable and future-proof. TypeScript will be gone, runtime-heavy frameworks will lose their attractiveness as Web Platform itself will progress and Vue, I think, have turned to the wrong direction.

In Part 2 I will talk about tooling. Oh boy, I have a lot of frustration to share.