>> Hello, JSConf holy Cow! There are so many of you. This is the biggest conference I've ever been to, and it is also, I'm embarrassed to say, this is my first JSConf EU. I kept trying to come but I had immigration issues and all sorts of stuff, and I made it just in lime for the last one. I'm extra specially thrilled to be here and be invited to speak, but before we get started, the way that I don't die of nervousness is I always take a speaker selfie, but there are millions of you, so I'm going to take a bunch. Look happy! Like you just heard the best talk of your life! Amazing.
All right. With that important business out of the way, hello, everybody, I'm Laurie. I'm one of the co-founders of npm Inc, one of the chief data officers there, but what I really am is a web developer, making the web bigger, and better, and more accessible to everyone is what drives me, and it's been driving me for 23 years now, which means sometimes I meet people who are younger than my web development career! Which is weird.
I also have one final surprise source which is ten years of JSConf EU talk proposals! Ten years! My goodness. That is so much work. Can we have another round of applause for ten years? [Applause]. As part of the celebration of the tenth year of JSConf EU, the organisers asked me to analyse the data.
They gave me all of the titles and descriptions of all of the talks that have ever been submitted to JSConf EU and they asked could I find something interesting in this? Boy, I found interesting things in this. First off, there are so many talks this year.
The first JSConf EU had 44 talks submitted, and this year, there were 932. In 2012, someone had the bright idea that someone submit their talks at JSON which was a goddamned nightmare to parse back into text and sentences, so thank you whose ever bright idea that was. The single most common phrase in the last ten years has been "in this talk we will ...", and the second most common phrase was "learn how to", and sometimes, it was both. But there's something much more interesting which is the JSConf hype meter. I wanted to track how popular various technologies were, and technologies get mentioned more and more often.
Everything is going up and to the right. Instead, I measured how many talks contain a word as a percentage of all of the talks submitted. This is an example one before it's of Node and npm.
We're talking about Node last time much less than we used to but talking about npm about as much as the same as we ever did. All through this talk, I will weave in the JSConf data and if what we are talking about lines up with the reality of what we're doing. But, l Laurie, you had a huge corpus of text. You could have built a markup generate colour.
You bet your ass I built up a markup generator. Here is a machine-generate the titles based on past submissions to use for your future consequences.
Train your next-level sequential arts. This is definitely going to be done by Jenn Schiffer. Talk about tools for capitalism! I think it's possible that CJ has already written this talk! Distributed computing in the world of CSS and JS. It is possible they did this yesterday! I wasn't here yet! AMP for why you're being an Eyebrow.
I don't know what it is but it's probably a bad idea, and I'm looking forward to seeing these conference talks in future. Before we dive in, a couple of disclaimers, some of what I'm presenting here are facts, and some of what I'm presenting are opinions, and I'm trying to be as clear as possible. Sometimes, you're going to see a graph that says that your favourite technology is getting less popular, and what I'm asking is that you don't get mad about that. Don't get mad about facts.
I have so many terrible opinions that you can get mad about, but try not to get mad about the facts. I do not have a horse in this race.
Apart from npm, I'm not a contributor to any of the technologies I'm discussing, I'm just presenting the facts. Secondly, a lot of what I'm talking about involves relative popularity of technologies, and I want to make clear that, just because a technology is popular doesn't mean that it is good. It doesn't mean that it's the best technology. I don't know what the best technology means. But for technology, popularity is useful in and of itself.
If there are a lot of people using your technology, then there will be a lot of people find and fix bugs, there will be a lot of tutorials, there will be a lot of Stack Overflow questions answered for you. If you work with something popular, it often makes your work easier regardless of how good it really is. Finally, I really love what I talk about, and I'm going to get excited towards the end and swear like an absolute fucking sailor, so I have no intention of toning that down in any way, so apologies in advance.
The npm registry is now the largest repository of open source of any kind, by any measure, by number of modules, by lines of code, number of users - what are you want to pick. It's more than twice as big as the next registry. You could fold all the other registries into our registry if you wanted.
They do more testing, they use more linters and bundlers, they care more about security, and so now the whole community is getting more experienced, and so everybody is caring more about those sorts of things. Since last year's survey, the number of people who said they were concerned about the security of the open-source modules that they use, has increased. In the last two years, npm has added two-parking auth to protect publishers from account theft as well as security teams to detect and flag malicious packages. Malicious packages aren't the good threat model. Accidental vulnerabilities are much, much more common.
That brings us to the first visit of the hype meter. Are we talking more about security? No. The thing that we talk about is performance. We talk about performance three times more than security.
If we care about security, we should be talking more about it. Another aspect of our increasingly experienced user base is that people actually care what software licence they use.
That was a big surprise to me. I like to throw it in there without thinking about it. 58 per cent of developers say that the software licence affects their decision to use a piece of open-source software, and of those, 55 per cent say that their company prevents them using certain open-source software licences means 45 per cent of people can't use them overall. Which? The GPL and the APL are unpopular because of the restrictions they place on commercial use of software, but much bigger than that was unrecognised licences.
Let's dig more into all of these numbers. First off, when people write for browsers, do they target the mobile web or do they target the desktop web? The overwhelming majority of us target both, but despite all our talk about mobile first, only two per cent of us target exclusively mobile. But 27 per cent of us are getting away without thinking about the mobile web at all, which is probably legitimate. There are probably a bunch of web apps that are never going to run on a phone, and that's fine.
Not only is it that queer not using electron, we're using less Electron than before. Where are they going? Let's ask the meter about it. It says interest has peaked since 2017 and going down since then? What is up? Somebody needs to tell me.
If you know what they're doing, please come and talk to me after this. Let's look at mobile app developers. I measured the popularity of a bunch of - don't pay too much attention to how I measured it. The green line is all native app frameworks.
So native development has been staying pretty much as popular as before, but the tools have fragmented. The most popular framework I can find is React Native which is the red line and then Cordova which used to be the only game in town for mobile apps but now little less popular of React Native.
Ex-extrapolating, about 19 per cent are using React Native, and those two add up to about the 35 per cent of us who are writing native mobile apps, but if you're using some other framework, I want to know. The final "where" question I want to answer is about server-side apps. Where are we deploying them? Unsurprisingly, Docker and Kubernetes is everybody's jam these days. They're the dominant way we deploy. Deployment platforms like Heroku and Netlify are surprisingly unpopular.
VMs are the way I that considered - the real number here is serverless. 33 per cent of us are deploying on serverless platforms. That's not some early adaptor shit any more, that's some mainstream technology.
It's part of a broader trend in ten providing that I'm going to touch on later. Let's check out the hype meter. I decided to look at serverless, micro services, and Docker. Docker came strong out of the gate in 2015 and you has slowed down recently, but serverless is on the up and up.
That's the blue line. But isn't serverless just like a microservice that one else is running for you? I don't know.
That brings us to the end of where. Now let's talk about what. What are we doing? What are we doing with all of this stuff? I'm going to try and keep this section also as factual as possible, and keep my opinions out of it. To measure this stuff, I use a metric called "shared registry".
I used it in that graph a little while. It's a very useful metric but it's also a kind of confusing metric so I'm going to explain it a bit. This is a graph of the weekly downloads from the npm registry.
We do nearly 12 billion downloads every week. This has grown. This presents a popular if you're trying to present how popular something is by download numbers, because download numbers always go up. Here's a graph of downloads from major front-end frameworks and they're all growing pretty fast in absolute terms.
In fact, everything in the registry grows super fast. Even the shittiest package is constantly acquire new users because there are so many people showing up all the time say I don't know what to use, I'm going to use evil package JS.
Absolute growth won't work. So just like with the JSConf submissions, we're using relative popularity. We use the percentage of downloads of a pack garage as a percentage of all of the downloads, and that is what we call a shared registry. Here's the same graph again using the shared registry metric instead. Suddenly, what is going on is a lot more clear - some stuff is going up, some stuff is staying flat, some stuff is going down, but it's important to remember that going down is not actually declining, it's just meaning that it is going up more slowly.
Staying flat on this graph means that you grew 25,000 per cent, and, if you're going up on this graph, it means that you are growing faster than 25,000 per cent. Growing up is growing incredibly fast. So now let's talk about these frameworks.
The story of front-end face, in 2019 is pretty simple, and it is that React has conquered the web. React has more than four times as many downloads as the next most popular framework. There hasn't been a framework anything like this popular, and part of the reason for that is that it's not just a front-end framework. In fact, it's not even a front-end framework.
React is just a component model, and that component model is used in web apps, in React Native apps, and also in desktop apps. This is the download data.
Angular version 1 is called Angular JS now. Angular version 2 is unrelated to the first one also called Angular which I think is still kind of confusing.
Angular JS has been in decline since 2016, and 2 since 2017. It's important to keep it in mind this is relative popularity. In absolute terms, both of these frameworks are growing up, both of these frameworks have more users than they've ever had before. Angular is extremely popular. 37 per cent of npm users say they use some flavour of Angular, 29 per cent say they use the current version of Angular.
That means there's probably about three million people using Angular which is definitely nothing to sneeze at, and Angular is not going anywhere. Let's look at one more framework of note which is Vue. Vue is the only major framework other than React showing strong positive growth, but it is very positive growth.
Its share of registry has doubled in the last two years which means that it its downloads grew 10x in that time. Our survey data backs that up. Up from 24 per cent last year, which means almost as many people use Vue as use the current version of Angular. Let's swing by the hype meter are and he and see what they said about front-end frameworks.
In 2009, of course was talking about Dojo and jQuery. You can see the trajectories.
They react well to share share of registry which is nice. Angular's decline starts in 2015. Amber is flat, and yellow, and React in blue is continuing to grow, just like it is in the registry data. One thing I haven't talked about in terms of front-end frameworks is web components, and part of that is they're built into browsers so there is no shared registry to track.
Nobody's downloading them. The other reason is they don't seem to be very popular. We didn't ask about npm survey, which is embarrassing, but the State of JS people did.
They allowed people to volunteer if they used web components but less than one per cent of deem did. I'm not ignoring web components, I don't have gad data about them. The people who build web components in browsers, they tell me that web components are a lot more popular than they think they are, and you but of course they would say that. Moving from the front-end to the back-end, there has been a real revolution. Previously, if I was talking about back-end frameworks, I would have talked about stuff like Sales, and Amber.
>> Happy, and they have still around about flat growth. They're not going anywhere. Everybody's right rich front-end apps and frameworks like those that produce static views are not as useful for that use case any more. So, instead, what has happened, is front-end framework enthusiasts realise that they needed no deliver pre-rendered HTML for performance reasons and they called it "server-side rendering" or SSV.
They invented stuff to do that which is is to say they invented back-ends. The front-end frameworks are also back-end frameworks, collections of servers and routers that make it easy to build a full server using your favourite framework.
I don't know about you, but the idea that I can just write components and then throw them into an existing framework and not have - that does the serving and the parsing and that pain-in-the-ass stuff for me is great but super familiar. I'm sure that's how PHP used to work! Some day soon, someone will tell me I can FTP my React components on a server and then the circle will be complete! [Laughter]. Before I talk about these SSR frameworks, it's important to know they're all still pretty small. Here for comparison is Express, which is a goddamned monster of a package. It used to be 1.5 per cent of the registry all by itself, and it is still enormous.
All of the other frameworks that I'm about to talk about are that flat line at the bottom of the graft that you can barely see. But, when you take Express out of the picture, something very interesting is happening. At the top of our list is Gatsby. It uses React and provides a whole set of tools for hooking it up to back-ends and deploying it. It snuck up on us.
Eight per cent of people are using it. Sales of Amber and Happy are all around the four to five per cent area, and Gatsby is bigger than that now, it's huge, and real, and growing like gang busters. The others I want to talk about are a trio of products that nearly have the same name. Next is NextJS.
Our survey respondents were big on that. Nine per cent said they use it. Share of registry is giving Gatsby the edge but clearly both very popular. Then there's NuxtJS which is like NextJS which is for Vue instead of React.
Then NestJS which is like NextJS except it's for Angular. I know very little about it.
I didn't ask about it in our survey, but extrapolating it from our survey, two per cent of people are using NestJS and showing healthy growth. What about the hype? It's super frustrating. "Next" is just a word. They say it all the time, don't mean the framework.
And "nest" shows up all the time because people talk about nested code and loops, and this is a graph about Gatsby. Closely related to these front-end frameworks which are now back-end frameworks is GraphQL, which is the hot new way of building an API to power all of this stuff. As you can see, GraphQL's core library and two of its most popular client libraries are growing off the chart super fast in share of registry, and that climb is reflected in the survey data. 22 per cent of our respondents say they're using GraphQL but 49 per cent say that they are considering using GraphQL which is an enormous number. It means that 2019 is going to be the year of GraphQL when everybody gets on board the train.
Last year, we were caught by surprise when 49 per cent of people - sorry, 46 per cent of people said they used TypeScript, and this year, that number is up to 63 per cent. But what does "using" mean? Are you using it, writing it, what are you doing with it exactly? It turns out 15 per cent of people are just using things that are written in TypeScript, and the main culprit there is Angular. Angular is written in TypeScript, so everybody who uses Angular reports themselves as a TypeScript user. In fact, React and Amber have TypeScript in them.
Now the only major framework that doesn't have TypeScript in it is Vue. Even if you say you write TypeScript, do you mean you write it all the time, or just to try it out? Are you a TypeScript dev or dabbler.
The first interesting thing is the speed, and the second is the people who write WebAssembly say that is less interesting than the second part which is the ability to use existing code written in other languages directly on the web. To me, one of the most exciting features of WebAssembly is that you can write modules to it and publish them to the npm registry and install them into your app and use them seamlessly without knowing they're there. The way I know that you can do that is that it has already happened. Our stats say that WebAssembly is very knew.
Only three per cent of people say they use it, but that's 300,000 people, and only 0.6 per cent of the packages in the registry with Wasm, but those packages are cool, but the big number for WebAssembly is 54 per cent - that's how many people say they consider they're using it which means the interest in WebAssembly is enormous. So, now we know what we are and what we are using, and those facts together can point us towards an explanation as to why. This is where I switch from facts to analysis, which is to say opinions, which is to say I am wrong. Before I do that, I need to split the room up into two teams.
Everybody on this side of the room is Team A. Everybody on this side of the room is Team B.
Let me hear it from Team A. Team B! [Cheering]. Team A! Team B! Great. I wasn't using that for anything.
The next question we're touching on is what the hell is going on with React? Part of the explanation is that React isn't a full web framework. It has no opinions about routing, or data models and other frameworks do, so as models change, it means that people can keep using the React components and shift and go and change within that group. It's just a component model and it creates truly reusable useful components. These are two examples that I particularly like: a colour-picker, and a date-picker.
I hate installing those. That's been the dream for 20 years.
Other projects provide libraries of excellent prebuilt components. This is one that does it for Google's Material UI. Reach UI makes React components more accessible. React can go further with React hooks which are a way of handling state that you can just npm-install into your application.
React Use is a library that gives you a whole bunch of really cool stuff that uses the web APIs without you having to write a bunch of code. You can just import it and start using it in your React app. This suggests an enticing future where we can build web apps as a new and higher level of abstraction. We won't have to think too hard about the server but put existing components together instead of building them from scratch for each project, especially components that we add will create the same feedback loop as npm itself, the more components there are, the stronger the gravity well, and the stronger the users will be in that community. It could make React an unstoppable force that changes web development forever.
It's not guaranteed. React is slowing down and Vue is showing strong growth. In the next couple of years we get to find out if React fades.
React's dominance on the front-end has totally changed the back-end. Frameworks that enable server-side rendering of React apps are now more popular than traditional back-end frameworks. Instead of writing code for client and server, we just write code for the client and we get the server to deal with it and figure it out. Is that a good idea? Is building all web apps as rich front-end apps and getting the server to do the work a good idea? I don't know.
It's certainly a popular idea, and popularity has its own momentum. At least one browser maker is already working on specific optimisations to make React apps faster at the browser level.
Last year, I made the case that React components should become part of the web API, and I stand by that. Let's take these trends and analyses and weave them together and make guesses about the future. I'm going to go from slightly wrong to completely wrong. The first is npm Tink, it's an tremendously exciting thing that I don't have time to demo.
Dan Abramov tweeted this, and it's exactly what this looks like where it might be going: imagine a world where you can build a web app without needing to know all the details of how your components work. People hate VB6 but at one point, it was the world's most popular programming language. That's us now. VB6 unlocked and created a whole generation of programmers by reducing the barrier to entry. Think how many more people could get involved if you could build a real useful web app by just dragging and dropping open-source components into your application.
You're in the right place at the right time to participate in that. The web is an amazing force for good and evil. It is a toy, and it's a tool. It's a playground, and it's a marketplace.
It's ultimately amazing and terrifying in the power that it gives us. We can do so much good and so much harm. But I choose to believe that, in the long run, we will collectively decide to do more things that help the world than hurt it. We've all made mistakes that hurt the world. I know that I have.
But I believe that, in the course of time, our good decisions will outweigh our mistakes, and the web will grow forever. I hope what I've shared with you today that is helped you see where you are, and what you're doing, and I hope it's helped motivate you, and made you curious, and I hope you all have a fantastic JSConf and thank you so much for your time and attention. [Cheering and applause].