Speaking of community, what role has npm played for the Node.js ecosystem?
npm is a huge influence over why Node.js has been so successful. There are tons of packages in npm for just about anything you need or want to do. I believe recent reports have shown that npm is also the most used package manager for all platforms, too.
In the recent years, they’ve made some really great changes. For example, the left-pad.io incident that happened a couple years ago that broke a lot of packages. They’ve changed their structure, so they don’t allow that kind of thing to happen. Now, when you contribute to the community, it’s there. I recommend that everyone investigates getting their own private npm server for their companies. It can cache packages, pin versions, and host your own private packages, too.
Another nice thing about the npm community is they are moving forward with a lot of helpful features – like, lately they’ve been adding a lot of security features. They are also adding in features to check what outdated packages might be in your applications. npm@6 introduced “npm audit,” which checks for any versions of packages with known security gaps, referencing the Node Security Platform database.
They are also looking at what the community is looking for in package managers – so, the speed of installing your Node.js modules and the way that they get packaged. Since they are really the only game in town for the modules in Node.js, they could have sat back and done nothing, but they aren’t stopping instead. They’re moving forward, constantly iterating. You really can’t have Node.js without npm. To me, those two things are synonymous, and I think it’s great to see that they are both moving forward.
What attracted you to first get involved with these communities? And what brought you to Microsoft?
There was a cognitive dissonance, in my opinion, before that. Microsoft has historically targeted the .NET audience and now there is a real focus on ensuring that our platform is the best for all technologies and developers. Instead of asking developers to change for Azure, we’re asking questions and listening to developers, so we can change Azure to suite them. I love that.
One of the big values of these three frameworks – Vue, Angular, React – is that all three have adopted a CLI [Command Line Interface]. They’ve created their own CLIs that run on Node.js and help you build, generate and test. Basically, the CLI gives you everything you need to create robust Angular, React, or Vue applications. It’s all built on Node.js and it’s super helpful for developers.
What is Microsoft doing to help Node.js developers?
If you would have asked me this question a year and a half ago, I would have told you, not enough! Which was one of the reasons I was so shocked when I got here and learned that we were building so many great things. Very quickly, I was very happy to learn that we were working on and we’ve since released, Azure App Service on Linux, which really was a game changer.
It’s a big switch in approach for Microsoft. Instead of forcing developers to change the way they do stuff, we’re focused on making it easy to use what they already love. We say, Node, Python, Go, Java developers – what are you using? Let’s make that work great on Azure. For example, in the Node.js community, a lot of us, including myself, work with a Mac. And some do Windows, but we deploy to Linux mostly, and when we deploy Node.js, we just want Node.js to work without other things to learn and figure out. We want the Azure platform to just take our Node.js code and run it. And now with App Service for Linux, it just does that. That was one of the biggest changing of the guards here at Azure.
We already did this with Visual Studio Code [VS Code], right from the beginning. VS Code specifically is a game changer, not only because it’s the most phenomenal editor – that’s my personal opinion and its rise in popularity is ridiculously great – but also, the extensions for Azure make everyone’s jobs so much easier.
Instead of having to go to the portal and the Continuous Integration server website for Visual Studio Team Services, or Circle CI, or Jenkins, and then switch to VS Code, and then go to CLI, then go to eight different places to work with the cloud… now I can just be inside VS Code, and everything is integrated in one place. The Azure Extensions Pack for Node Developers makes this possible. I’ve found the Docker one to be incredibly useful. And I never have to go anywhere except for my browser to look at the thing running. And it’s made deployment super easy.
Cognitive Services and AI are just so amazing to me. To be honest, I think for a lot of people, when we show it – and I used to feel this way – it’s this scary thing. We recently did a hackathon on AI and Cognitive Services and what was amazing was that everyone had an air about them…like, is this going to be too hard? And after the five-minute demo, they all started hacking away and within two hours they had all built something. Somehow, we’ve made these APIs for AI really easy to talk to. And you can do it right from Angular, React, Vue, or Node.js. To me, we’re bring AI and advanced features to the masses of developers, which is only going to make everybody’s lives more fun and easy.