Herding Code 122: Bert Belder on porting Node.js to Windows

This episode of Herding Code the guys talk to Bert Belder, a Node.js developer who’s working on the native Windows port.

  • Kevin asks how Bert got started with Node.js. Bert explains that he was working on a PHP based system which had a good amount of logic in Javascript, and he started looking to node as a way to consolidate that logic.
  • K. Scott ask Bert about how you’d go about sharing Javascript between client and server.
  • Kevin asks how the Windows port of Node.js got started, and whether there was any resistance to it.
  • Jon asks if the eventing model in Windows was one of the more difficult things Bert had to work on. Bert explains that getting REPL (read evaluate print loop) to work on Windows as it did on Unix was actually one of the more difficult challenges at the beginning.
  • K. Scott asks about experience of running Node.js. Bert talks about how Node.js runs as an executable, and it’s up to you to set up an HTTP server.
  • Kevin asks about the team that’s working on the Windows port.
  • Kevin asks Bert for more info on technical challenges on getting Node.js not only working on Windows, but really performing. Bert describes some challenges in implementing I/O Completion Ports, spawning child processes, etc.
  • Jon says that some of the initial negative feedback he’d seen on the announcement of the Windows port was concern over negative performance implications for the Unix version, and Bert says that one of the criteria they’re working under is that Unix performance not be degraded.
  • Kevin asks Bert if he had a background in high performance networking, of if he’d been  figuring things out as he went along. Bert explains that he and the team have had a good amount of time to work on this, so they had a pretty good idea of how to solve this.
  • Jon asks about performance testing, and Bert describes some of the load tests that they use.
  • K. Scott asks about if most Node.js modules will work on Windows. Bert says he guesses 90% will work, and the ones that won’t are making operating-system specific assumptions.
  • Jon asks Bert about his work on libuv, the abstracted platform layer for Node.js, and Kevin asks about the process of designing this abstraction layer.
  • Kevin asks Bert if there are places where Windows is more flexible or powerful than Linux. Bert explains that since node was written for Unix first, it wasn’t built to exploit Windows advantages, but with Windows kernel mode HTTP stack might be useful in the future.
  • K. Scott asks if the port could have been aided by open source projects like Cygwin. Bert explains how Cygwin isn’t really helpful in making node.js work well on Windows.
  • Jon asks if dropping support for Cygwin in Node.js will affect users, and Bert says the only effect may be for addons which are written so as to be Unix-only.
  • Kevin asks about Windows support for NPM.
  • There’s a discussion about the different hosting options on Windows including Azure and iisnode. Kevin asks about service hosting to allow socket level access (below IIS).
  • Kevin asks if there’s a plan for cross-platform system support for modules that need native access. Bert talks about changes to npm to support binary hosting so operating system specific binaries can be automatically downloaded.
  • Kevin asks if there will be a focused effort to get node module authors to support Windows.
  • Jon asks about multi-core scenarios. Bert talks about different options, explaining that iisnode can help with this, but he hasn’t seen options for interprocess communication in iisnode or in in either multi-core scenarios.
  • Kevin asks about the use of gyp for the node.js build process and about Bert’s development environment on Windows.
  • Kevin wraps up by asking Bert how to pronounce his twitter handle.

Show Links:

Download / Listen:

Herding Code 122: Bert Belder on porting node.js to Windows