Is VueJS A Viable Framework Yet?
Image proudly created in Fireworks because Adobe can pry it from my cold, dead hands.

Is VueJS A Viable Framework Yet?

Preface

For the sake of brevity, I am using a number of technical terms that managers and PM's may not be familiar with. I try to keep my use of technical terms to a minimum because I want these articles to be useful to the broadest spectrum of readers, but when talking about the technical details of tools, trying to avoid the terms ends up making the article even more opaque and confusing. I've linked out to descriptions of terms when it seemed reasonable, but I think that even without this understanding, the gist of my article should be understood.

What is Vue?

Vue is a front-end JavaScript framework… yes, another one... being developed by a single, dedicated superhuman, Evan You. It is most similar to React in purpose in that is nothing more than an rendering and diffing engine. It builds a large JavaScript object to represent the DOM, monitors changes in that object, then re-renders parts of the DOM based on those changes.

If that's all you knew about it, it would sound almost identical to React — it even supports JSX! — but it is quite different in implementation. First, its virtual DOM isn't quite as powerful as Reacts, and the way that you develop your application modules will be more immediately recognizable to those versed in the ways of Angular or Ember. Furthermore, Vue's interface is simpler than both React and Angular and more elegantly achieves the goals of a pure render engine. It is also small, with a base JavaScript package of only 9,000 lines. For what Vue does, that is incredibly impressive.

Much like Aurelia’s genesis, Even You’s motivation for creating it was the belief that Angular’s abandonment of the MVVM model was made in haste, and there was life yet in the old girl. Also, much like the creator of Aurelia, Evan You previously worked on Angular while at Google.

You’s confidence in the MVVM model has ostensibly been proven true with Vue’s immense success and the success of smaller MVVM frameworks such as the aforementioned Aurelia and the seemingly immortal Ember.

But as I’m fond of saying, a tool is not just a tool, it is a society. For example, it doesn’t matter if a special hammer is better than an ordinary hammer if it requires special nails that are hard to find and special people to use it. It’s better to use the ordinary hammer because it will be easier to find nails and people… which makes it sound like you’re using people as a building material. Furthermore, it will be easier to find tool belts and tool boxes, and hammers made by different companies, and hammer accessories, and on and on.

But as with any tool, there comes a point where it may not yet be the equal of what already exists, but it’s good enough, may actually be best for your particular needs, and seems to have enough momentum where it will, at some point in the foreseeable future, become the equal of extant tools. That is the question we must ask of Vue. Has it reached a critical velocity?

Vue vs. The Gorillas

I am a pragmatist when it comes to tools. You learn tools to get jobs, and for that, you learn React and Angular. That has not changed. If you do not know a framework, and you are looking for work, learn one of these two. It doesn’t matter which one. Just learn it inside and out. Once you have done that, and have a job, learn Vue in your spare time.

If you are bootstrapping a project, your concerns are not merely technological, they are also logistical. You do not want to choose a tech stack that will be difficult to staff. You don’t choose Haskell, you choose Java, warts and all, because there are a hundred times more Java packages and twenty times as many Java developers.

If you are working in a Fortune 500 company and are primarily part of a feature factory for an enterprise-level app, Vue is again not an option. You will have a team of commodity developers who will need robust online documentation and help to solve problems with what is likely an unwieldy and complex existing application. Vue’s philosophy and quality aside, it is simply not old enough for this use case. It needs time for people to try, fail, ask questions, and post solutions.

There is a fourth scenario, though, where Vue is viable. If you are on a team of dedicated employees, who are all already skilled, and know exactly what they need, and are prepared to do the bulk of the work themselves, then Angular and React are NOT your only choices. Here, you can tailor your tools to your use case, be relatively confident that your employees will remain stable, and explore technology safely.

For that final scenario, let’s analyze Vue’s current state and see if it offers sufficient reason to use it over Angular or React.

Popularity

Vue is improbably popular. On Reddit, as of this writing, it has 6,500 subscribers and has nearly doubled its growth speed in the past six months. It’s best day ever was this past August 19th, when 49 people joined. On Github, it has 68,000 stars(!). And even more amazing, when I started writing this article, it had 66,000.

It’s important to put these numbers into perspective. Obviously, React and Angular are going to be much more popular in most metrics, so I think that Ember provides better context from which to appreciate Vue’s rise.

Ember has been around for eight years. It is one of the earliest major JavaScript frameworks, being only a little younger than Angular, Knockout, and Backbone. It is used by major companies, and has hundreds of major deployments on the public web. It is an old hand. An elder statesman.

After all of that time, Ember only has 3,212 subscribers on Reddit, with stable subscriber growth of just a few per day. On Github, it has 18,000 stars. That is a third as many stars as Vue, which has been around for less than two years. That is mind-blowing.

That is not the entire story, though. As I said, a tool is also a society, and even if a society is small, if it is productive, it can be vibrant and powerful. Ember perfectly embodies that. On Stack Overflow, Ember has nearly 22,000 questions posted, compared to just 9,200 for Vue. Ember has also maintained a high degree of backwards compatibility between versions, meaning that even though many of these questions are old, they are still of value. Whether Vue is able to do this going forward is as yet unknown.

I want to focus on the Stack Overflow activity because it is perhaps the most important metric with which you should concern yourself because, as with most open source tools, it is your primary diagnostic tool. You are RELYING on users of the tool to solve novel problems. If this community is small, problem solving is harder, and you WILL encounter difficult problems. You WILL encounter WTF moments. You WILL have your development ground to a halt as you try to figure out a solution. Raw activity is not the only consideration, mind you, but if you are going to make a decision based on high-level information, it is the best ballpark number to use.

With a baseline of sorts provided with Ember, let’s bring in React and Angular to see how Vue compares to the 800lb Gorillas of the industry.

On Github, Angular has 28,000 stars. That's a huge success by any measure, but it pales in comparison to Vue. And even React, which is a massive success with over 76,000 stars is only 10,000 stars ahead of Vue. This seems to fly in the face of earlier statement that React and Angular will be far more popular by most metrics. The key word, though, is most. Github is something of an outlier, the reasons for which I will explore shortly.

On Reddit, React has 28,026 subscribers, with a still-increasing speed of growth. Angular 2 has 11,725 subscribers but has seen its growth flatline. It is young, though, and developers are still hesitant to back it after the break between it and AngularJS.

On Stack Overflow, React has a healthy 57,000 questions asked, Angular has 71,000, and the old goliath, AngularJS, has an eye-popping 242,000 questions. Only languages have more questions, such as Java which has 1.3 million questions. It should be noted that a great many questions in Angular are about transitioning from AngularJS to Angular, and as such are useless to a significant number of people who are starting fresh. That returns to my point about how raw question volume isn’t a perfect determinant of tech ecosystem vibrancy but it’s good enough for government work.

The final rough number we can use to try to take stock of Vue’s ascendency is Google Trends, which tells us how many people are searching for Vue information. Here is the greatest cause for concern, with Vue barely appearing on the chart.


These numbers tell an interesting story. Vue is wildly more popular on Github than it is on any other platform. The divide between its popularity there and its popularity on Google Trends is huge, indicating that it is much more popular among developers than it is among the rest of the business world.

Locale

The popularity of Vue is heavily determined by location. A huge amount of Vue’s activity is being driven by China, India, and Eastern Europe. In China, I believe that some of its success is fueled by nationalism, since Evan You is Chinese. In India and Eastern Europe, I think it is popular, oddly enough, because of AngularJS.

Let me explain. Offshore houses make the majority of their money from Fortune 500-type companies in the United States, Europe, and Oceania, and they used AngularJS because it so easily socketed into their existing technology stacks. To wit, an Oracle or IBM back-end would serve data to a Microsoft .NET middleware, which would then deliver a partially-built HTML page to the client, where AngularJS would build the rest of it.

React, and to a lesser extent Angular 2, are not easily compatible with this stack. They are purely forward-thinking with no regard for the past. You can see this split with the Google Trends charts for React and Angular 2. Globally, React is WILDLY more popular than Angular, but as can be seen in the above chart, Angular is catching up in India, where Fortune 500 companies source countless developers who learned AngularJS for their clients. And AngularJS remains a force to reckoned with in India. Globally, React is nearly as popular as AngularJS, but in India, AngularJS is FOUR TIMES as popular and is actually more popular than it has ever been!

With all of this legacy, it is unsurprising that Vue has become a tool of great interest to those who don’t want to leave the MVVM model behind. And since this crowd is primarily comprised of developers who are future-proofing their skillsets, this helps to explain how Vue can be shockingly popular on Github but nowhere else.

Damn The Man

I think there is another reason for Vue's success, though, and that has to do with Angular and React's primary advantage: their corporate backing. Google and Facebook are no longer cool, little upstart companies. They are now genuine goliaths and are just as evil as the companies that came before them. And, outside of actual anarchists, there are few demographics more distrustful of big companies than computer geeks.

The very fabric of computer geek culture is weaved through with threads of distrust as seen in works like Hackers, Antitrust, Pirates of Silicon Valley, Mr. Robot, Silicon Valley, and even bad guys in films like Bait, Black Hat, and Skyfall. Steve Wozniak was a phone phreak. Early Atari was run by a bunch of stoned-out-of-their-gourds socialists. Computer geeks are weird people who dwell in dark closets and care not for money and power. They value freedom.

Or so it is said.

Geeks still need to pay the bills, though. So much like the ex-hippies who became the yuppies of the 1980's, revolutionary geeks swallow their pride and try to find a middle way between being a complete sell-out while still being able to afford health insurance. Every decision to use corporate tech sullies the true geek just a little more, so the true geek will take every opportunity to embrace something that is divorced from corporate tech. With this as a goal, React and Angular, being evil, are both hard pills to swallow. React was especially evil with a legal agreement that scared off countless companies from using it (amazingly, React's license was changed literally as I was writing this). And while there are a great many frameworks out there — such as the aforementioned Ember and Aurelia, and also smaller projects like Bobril or Mithril — the problems that come with using a small framework may be too great to make them viable, much less wholesale new languages like Elm.

These people, these pure geeks, were literally just sitting there, waiting for a snowball to start forming. And once it did, they jumped on board fast.

Available Jobs

WHAT available jobs? There are nearly none, and this isn’t surprising. Vue is being taken up by developers working in small shops and who have the time to experiment. It’s not being used by major houses that do the bulk of the hiring out there.

References to VueJS and Vue.JS first appear on Indeed in February of this year, and even then, briefly disappeared for all of April — as in there were no job postings. The number of references is now climbing, but still only appear on 0.00059% of all job postings. Compare that to references to Angular, which appear on nearly 0.2%, and JavaScript, which appears on 1% of all job postings.

Basically, there are no Vue jobs. If a job is your goal, learn React or Angular.

Developers

The flipside of the no-job coin is the chicken to its egg. Namely, there's no reason to adopt a new framework if you are concerned about hiring, and there's no reason for candidates to learn that new framework unless you are hiring. As such, starting a new Vue project means that anyone you hire will have to learn it, or your extant team will have to learn it. That is a not-inconsequential investment of time and money.

Thankfully, Vue is pretty simple, so it can be picked up more quickly than Angular or React, but you are still looking at a non-zero amount of time. Whereas with React, you could conceivably be looking at a non-zero amount of time.

Tooling

As I said earlier, tooling is critically important to the success of a project. Tools help guarantee quality, automate repetitive tasks, and facilitate collaboration. Both Google and Facebook understand this very well, which is why they dedicate a great deal of development resources to the creation of tools for Angular and React. Google, for example, provides deeply integrated end-to-end testing for Angular in the form of Protractor, and Facebook offers React Native for developing native applications in React. This sort of ecosystem is not within reach of Vue, at least not yet.

That said, Vue’s tooling situation is far from bad. Granted, that is at least partially because Vue is simple and easily integrates with open-source tools, but that’s besides the point. While I would still bootstrap my own application with Angular or React for the time being, that decision is not for lack of tools.

Want to do testing? Karma, Mocha, and Jasmine are all compatible. Want to analyze your app within the browser? Vue Devtools for Chrome is powerful. And while Vue does not have a full-featured native application solution yet, NativeScript is planning to complete one within the year, meaning that this problem will soon go away as well.

This just covers the basics, which are honestly all that most projects need. You should be aware, though, tooling for major frameworks is going to have more developers, meaning more features, meaning more power, even if you only use those features once in a blue moon. Furthermore, when tools and frameworks are being developed by small teams, you can run into misalignments, where the framework supports a feature, but the tooling does not.

Weapon of Choice

So, at the end of all things, I sound like a broken record. My mind remains unchanged that if you are starting a new project, or transitioning an existing project to a new framework, your choices are Angular and React. If you are, as I mentioned, an agency that needs to rapidly produce e-commerce websites, then I think Ember can be a powerful choice for grinding out advanced-yet-boilerplate products. But if you are working with your application over the long term, or are in a feature factory, then I see no reason to adopt Vue.

Furthermore, Vue has good ideas — good ideas that Angular and React will both adopt. None of these frameworks are standing still, and both Angular and React are moving much more quickly because of their corporate support and the size of their ecosystems. React's recent wholesale change to their diffing system, Fiber, is a good example of the massive changes that can happen to the benefit of you and your project.

That's not to say that Vue is doomed. Far from it. Vue's simplicity means that changes and upgrades happen more quickly, and its adoption of a fast virtual DOM implementation earlier this year illustrate that very well. Still, with power comes complexity, and with complexity comes the need for large numbers of contributors. For now, Vue is at a significant disadvantage.

The desire to be part of the revolution also holds little sway over me. The anti-corporate sentiment that keeps geeks awake at night should not be a determining factor for most projects. React's license was genuinely concerning, but as I mentioned earlier, as I was adding images to this article, my cell phone dinged with Twitter updates where I saw that React had changed its license that day. Any legal concern with using React is now gone. It is free.

I repeat, React is free.

Similarly, Angular is completely free. You could take the most recent Angular, and then never touch Google again. You are simply getting an entire framework built for free. This is why open source is great. Even if the person writing the code is literally Hitler, it's still just free code.

Wrapping Up

To bring this all to a close, if you are in an enterprise environment, Vue is not yet an option, although it may become viable within the next 18 months. If you are looking to bootstrap your own application and are on a tight budget, completely ignore Vue. Instead, use a vibrant tool that's been around for awhile that will best enable to you create engaging, valuable features for your users. As with enterprise teams, consider Vue for maybe your next app.

If you are a small team with a budget that can accommodate downtime and want to experiment with something new and perhaps better, or if you are a one-geek show who's playing around with toys for future use, then Vue is an option. To answer my question from earlier, it has absolutely reached critical velocity to force people to at least consider it, and we haven't seen that since React.

Vue is also a hip option, since it gives you and your team the opportunity to get on board with something at the beginning. There’s a hipster-like prestige with being one of the first to like something. And while Vue is more popular than would be expected, it is not currently popular in major tech hubs, and is barely a blip on Google search results. You will definitely be able to say that you liked it before it was cool, and that can have real value. And ultimately, that's what all of this is about: producing value. Value earns customers, value generates revenue, value keeps you in business.

And despite its limitations, Vue will give you value.

Key Points

  • It is fast and lightweight but with more limited capabilities and tools.
  • Vue’s rise in popularity mirrors React. Its future is bright.
  • It is already more popular than all other frameworks save React and Angular.
  • It’s low popularity in key global tech hotspots such as Silicon Valley is troublesome.
  • For enterprise-level apps, agencies, and feature factories, Vue is not an option.
  • For smaller teams with dedicated engineers, Vue is an excellent option that should be vetted.
Chau Nguyen

Strategic Innovation / Space Sustainability / Cybersecurity

6 年

I checked out the new VueJS and it's pretty cool. VueJS as a framework is a good possibility.

回复

要查看或添加评论,请登录

Aaron Martin-Colby的更多文章

  • ReasonML : A Brief Introduction

    ReasonML : A Brief Introduction

    Contrary to popular opinion, JavaScript isn’t the worst thing to happen to humankind. If it were truly the worst, it…

    1 条评论
  • The Problem With JavaScript

    The Problem With JavaScript

    One of the best YouTube channels for developers of JavaScript is FunFunFunction. The host, Mattias, is a developer at…

    27 条评论
  • Angular: A Deeper Dive

    Angular: A Deeper Dive

    This is an extension of my first article on Angular, A High-Level Analysis. In this article, I will dive deeper into…

  • HTML & CSS Are Critical To Your Teams, Business, and Product.

    HTML & CSS Are Critical To Your Teams, Business, and Product.

    There is a nasty thread weaved through the world of web development that I consider insidious and different from the…

    1 条评论
  • Angular 2: A High Level Analysis

    Angular 2: A High Level Analysis

    This is not meant as a primer to get you learning Angular 2, although it could partially serve that purpose. This is…

    4 条评论

社区洞察

其他会员也浏览了