npm Blog (Archive)

The npm blog has been discontinued.

Updates from the npm team are now published on the GitHub Blog and the GitHub Changelog.

npm Convos: the native web

Q: Hi! Can you state your name, what you do, and/or what your company does?

A: Hey, I’m Golo, founder and CTO of the native web. We provide consulting, training and development for Node.js, JavaScript, and related technologies. Our speciality is designing and developing distributed applications for the web and the cloud, for which we also develop our own framework called wolkenkit.

What’s special about us is that we work entirely remote. This has a lot of potential, but also brings its own challenges. The biggest challenge is the communication. To solve this, we use Slack extensively and we’re trying to do as much pairing as possible.

Working remotely also means that we try to outsource as much of our internal infrastructure as possible. This of course implies that we have to be able to rely one hundred percent on the many services that we use.

How’s your day going?

That’s depends essentially on whether I’m on the road with a customer or at a conference, or whether I’m developing together with my colleagues. We allow our employees to choose when and where they work. This means that for pair programming we have to coordinate when to meet online.

Some days start earlier, others later. We plan a lot before we actually develop and always try to put ourselves in the role of the user. Our goal is to develop simple but technically outstanding solutions for complex problems.

Originally I worked with .NET, but moved to Node.js around 2011. I especially liked the simplicity and rapidity with which Node.js can be used. The use of open source contributes significantly to this way of working, which is why sharing code with other developers is extremely important for us. We use a lot of open source code, but we also give back as much as possible.

Tell me the story of npm at your company. What specific problem did you have that npm solved?

Using open source is like playing with Lego: The power is not in having a single very powerful building block, but in having many small ones that can be flexibly combined. However, this automatically raises the question: How do you coordinate with other developers? How do you actually exchange code and distribute components?

This is where npm comes into play: The npm command line tool and the public Registry are by far the most sophisticated solutions to this problem. npm makes it incredibly easy to publish, version and share code — or to integrate other people’s code into your own projects. Other technologies should definitely take this as an example.

Thanks to the organization feature of npm we are also able to manage permissions on our code for different developers and teams.

To people who are unsure what they could use npm for – how would you explain the use case?

I’d say npm is like the Lego shop of your dreams, where you can find bricks in all shapes and colors and where you can design your own bricks and make them available to others.

Everyone wants to develop their own software first, but many core components are difficult to build on your own. Therefore it makes much more sense to get these components elsewhere. It’s not just writing code: You also have to test your components, document them, and so on.

This again is much easier for small building blocks than for large ones, and that is why it is so important to have a central location where all these building blocks can be stored and exchanged.

How’s the day to day experience of using npm?

Very good. We use npm a hundred times a day. It is mission-critical for our software development. Such an important tool has to work efficiently and reliably, and that’s exactly what npm does.

Of course npm, like everyone else, has occasional hiccups, but that’s very rare, and npm’s support has always been helpful and responsive.

We’ve also had contact with npm in other respects, namely we’ve taken over maintenance for a few packages from other developers. Transferring a package always feels a little bit tricky, because what if something goes wrong? But npm was always helpful and helped us to make sure everything went smoothly.

Would you recommend that another org or company use npm and why?

If they use Node.js or JavaScript, definitely! And we have done so in the past few years as part of our consulting job many times. As mentioned before, npm is by far the best way to exchange code with other developers, and as mentioned before as well, no one can develop software of a certain complexity completely from scratch.

Instead, it makes much more sense to act as a community — and that also applies to companies that can benefit enormously from open source, but should also give something back at the same time. And npm is the integration point for all of this.

Any cool npm stuff your company has done publicly that you’d like to promote?

On the one hand, we have published many of our core components as small, independent building blocks. Maybe there are some things in these packages that can be useful for someone else.

On the other hand, as mentioned in the beginning, we are developing wolkenkit as an open-source framework to build backends in no time with JavaScript and Node.js. For that, we rely on a number of proven architecture patterns such as CQRS and event-sourcing.

One of the biggest benefits of using wolkenkit is that it records all changes that were made to your application’s data, so you do not only have the current state, but also historical data. This makes it easy to learn from your past and gain further insights into your business.

To control wolkenkit you use its common line tool, which has also been written in Node.js. It bundles your source code into a number of Docker containers and runs them along with the required infrastructure. wolkenkit allows you to scale up the read side and the write side of your application independent of each other.

As every application relies on npm packages, we have integrated wolkenkit with npm, so that your dependencies get automatically installed when starting your application.

To get started, all you need to do is install Docker, install Node.js and run:


$ npm install -g wolkenkit


And you’re ready to go. That’s what we love npm for.