Porting Node to Windows With Microsoft’s Help

I’m pleased to announce that Microsoft is partnering with Joyent in formally contributing resources towards porting Node to Windows. As you may have heard in a talk we gave earlier this year, we have started the undertaking of a native port to Windows – targeting the high-performance IOCP API.

This requires a rather large modification of the core structure, and we’re very happy to have official guidance and engineering resources from Microsoft. Rackspace is also contributing Bert Belder‘s time to this undertaking.

The result will be an official binary node.exe releases on nodejs.org, which will work on Windows Azure and other Windows versions as far back as Server 2003.

This entry was posted in Uncategorized. Bookmark the permalink.

117 Responses to Porting Node to Windows With Microsoft’s Help

  1. That’s big news! Even if I’m not a Windows user nor I don’t foresee installing node on windows, knowing that Microsoft will help Joyent in what can only be described as a challenging task puts a smile on my face. Nice going MS!

  2. Do you have any idea of time scales? Are we looking at an early Beta this year?

  3. Luke Bennett says:

    Great news, and great to see Microsoft getting involved rather than trying to write their own equivalent.

  4. Joe Reynolds says:

    That is interesting! Especially given the tidbits we are hearing about the next version of windows being based heavily around the HTML5 framework…

  5. Nice hear that. This is a sign of your success…

  6. Nikhil Gupta says:

    That is brilliant news! Can’t wait to see betas!

  7. This makes me happy, nice to see its not all about the Mac boys 🙂

  8. This is fantastic, exciting news. If you think Node was a thunderbolt up to this point, wait until it’s easily accessible to the Windows crowd…

  9. This is great news! I never would have expected this to happen. Seems like even Microsoft thinks node is going to be big

  10. Just read through the talk and the post. I’m super excited about this! Glad to see MS supporting this.

  11. OMG, this is one of my best moments in developing life

  12. That’s awesome news. Those interoperability guys at microsoft are great.

  13. Tim Caswell says:

    Will this run on Windows 7? Vista? or possibly XP in some reduced form? The main reason I want node on windows is so that it can be a runtime for cross-platform stuff and so people can develop node on their laptops. I don’t know many people running Azure or Window Server on their development laptop.

    Still great news! Just trying to understand the scope of the possibilities.

    • asbjornu says:

      Did you read the post? The last sentence clearly states “will work on Windows Azure and other Windows versions as far back as Server 2003”. The “as far back as Server 2003” part means it will work on Windows Vista and 7, but not on Windows XP.

    • boggin says:

      IOCP API is available on all NT 3.5 on machines (so basically anything you may want from MS).

      Quite a few developers use Windows Server as their development platform. It’s even better if it’s fixed up to be more like W7 [http://www.win2008r2workstation.com/]. Personally, I use a pre-modded version, dual-booted on my MacBook Pro, and it’s perfect.

      Looking forward to the even bigger Node community.

    • Bert says:

      For windows “client” versions, windows Vista and 7 will be supported. Since the windows server 2003 api is very similar to XP, it is likely that node will work on windows XP as well if you have the appropriate service pack installed – we’re just not committing to that atm.

    • some one says:

      Supported Platforms:

      Microsoft Windows operating systems since Windows XP sp2. It can be built
      with either Visual Studio or MinGW.

      Linux 2.6 and MacOS using the GCC toolchain.

      Solaris 121 and later using GCC toolchain.

    • Miguel says:

      I have written two Windows services using I/O Completion Ports. The API has been around for a while – I used it first on 2000. My development environment was a Windows XP laptop, so yes it’s available in all current version of Windows today.

  14. Tim Becker says:

    smells like node 1.0!

  15. _NT says:

    Embrace, extend and extinguish. It’s even on Wikipedia: http://en.wikipedia.org/wiki/Embrace,_extend_and_extinguish

  16. Good stuff – a shallow timeframe would rock btw…

  17. JD Conley says:

    That’s really awesome. IOCP is great. Can’t wait for the Linux vs. Windows benchmark. Those ought to raise some eyebrows. 😉

  18. Marco says:

    That is good news. Don’t forget to port NPM too

    • ??? says:

      But cygwin is slower than a native implementation, for example, node on cygwin might use the spawn command, on cygwin, you call a unix-like spawn on cygwin, which then calls the windows spawn. Without cygwin, (node.exe), you only call the windows spawn.
      Thus, less work for your processor, and the result is that code executes faster.

  19. Tom Weir says:

    Microsoft has done an incredible job making it very easy to deploy PHP apps on top of IIS. I’m hoping we’ll see a similar deployment experience w/ Node.

  20. dbjdbj says:

    Are we talking Node.JS4WIN being written in WINC++ ?

    dbjdbj

    PS: this is beyond huge … this is: grizzly has been woken up …

  21. Ryan says:

    You guys must have very short memories: http://www.catb.org/~esr/halloween/

  22. This is great news! This is a similar approach that MS took when they began contributing to jQuery and adopting it and decided to deprecate it’s own mediocre ajax library.

    • meandmycode says:

      If you think microsoft are planning to retire IIS for nodejs you are hugely mistaken, microsoft is just interested in making their platform attractive.. nodejs is an interesting server product that as far as they see, should be on windows.

      • Jeff says:

        They are putting money into it. That almost certainly means they intend to make that money back somehow. Maybe through developers using complementary Microsoft products to host their apps or MAYBE through some of the underhanded and illegal bullshit they are well known for. I think the latter is a much safer bet.

        http://www.catb.org/~esr/halloween/

  23. Cyberius says:

    Finally some great Windows news! You’re doing it right!

  24. Cyberius says:

    And we also want NPM!

  25. Really great news. Can’t wait to get my hands on the node.exe.

  26. meteorist says:

    Yeeha, will you be using RX too? – only being a little tongue in cheek here.

  27. Trygve Lie says:

    This is great news! Is it so to understand that MS will contribute to liuv which will be the abstraction layer?

  28. simon says:

    Big news but I don’t think many developers will start developing node.js sites on a win box really

    • Tim says:

      Why wouldn’t you? Node.js on a win server and on Azure is a very good match.

    • KevDog says:

      And what, exactly, do you base that claim on?

    • Jeff Nugent says:

      Yeah, give up already M$. Perhaps the general public are dumb enough to buy all your FUD and drivel about “innovation” but it won’t wash with developers. Hurry up and die already please.

  29. Waw! It is a good sign from MS. Any timeline to get early bits? Hope MS will support it as much as it did for IronPython and IronRuby 🙂

  30. Witold Szczerba says:

    Guys – was that really hard, for Windows users, to install VMware, VirutalBox or any other virtual machine with minimal linux on it? Having ready-to-use image, it would be as easy as installing any other software, few clicks and you are ready to go.

    • Lots of web development technologies already run on windows (apache, memcached, sass, php, ruby, etc…) for those who just want to add, say coffeescript, to their aresenal, its a rather large bite to take off to install an entire vm just for node. Hassle to have it “a box away” in VM land. Also having node run as a service natively would rock.

  31. Jorge says:

    June, 23, 2011: Microsoft embraces Node.js

  32. Tom says:

    This will end badly.

  33. Thaddee Tyl says:

    Two years ago, Microsoft was waaayyy behind Apple. Everything they had to deliver were losing market shares. Well, it seems like they are starting to make smarter choices! IE9, Windows 8, now this, …

    • Paulo says:

      Microsoft seem to have a cyclic existence. They’ve been hibernating in a state of complacence for a while. Now they’re getting ready to come out of that hibernation and start “innovating” (stealing, bullying, aquiring etc.).

  34. Jeff Nugent says:

    Fuck you Joyent. Fuck you very much.

    You’ve taken this great project and sold the fuck out to Micro$haft.

  35. meandmycode says:

    I take it the work involved is to abstract your product to use a nix / windows networking stack? or is it more involved, such as using chakra on windows over v8?

  36. Bryce Miller says:

    Will the code base that Node for *NIX is built from change? In other words, will this affect Node on *NIX?

    • ryandahl says:

      Yes. Platform changes are being abstracted into a layer called “libuv”. The Node code base is being carefully fork lifted onto this new layer.

      • Bryce Miller says:

        My apologies, but I’m not much of a programmer at this point; “abstracting into a layer”? “fork lifted”?.

        So this will theoretically have a negative effect on Node for *NIX?

      • S. Baldmer says:

        Developer time is being redirected to Windows and the codebase is being abstracted with extra complexity. Of course it will affect it.

        Joyent have clearly identified Ryan as a real talent and started paying his bills so they can take control of the project ( http://nodejs.org/cla.html ). It could have lead to a nice long-term symbiotic relationship with the community. However, now Steve Baldmer is on the scene, all hope is lost.

        A fork would be the best thing that could happen now but with the original talent and vision under the control of yet another Microsoft sock puppet (Joyent), it’s probably not going to happen.

        Anyone that thinks I am a loon needs to do a bit of historical research on the past deeds of Microsoft.

      • Bryce Miller says:

        In that case, someone fork it quick!

        Surely it’s on GitHub?

      • Gn0r says:

        @Bryce Miller

        What about, I fork it then you maintain it? I guess you can do that since you’re so bloody smart.

      • Bryce Miller says:

        I’m sorry if I’ve been a jerk, I just don’t want this port to negatively affect node on UNIX. I’m not much of a programmer so I don’t much know what i’m talking about. 😦

  37. Caesar Chi says:

    It is a real great news for windows user.

  38. Franco says:

    Well, it seems node.js and javascript will conquer the world.
    I wonder what will happen to the available mvc web frameworks? For me, there is no reason to start a new project on any other technology but I don’t like js, so the future will be a pain for me.

  39. Mad Wax says:

    A native win32 port of node.js, yer bady yer!
    I’ve been playing with node for a long time and while I have Linux boxes I can’t get other into it due to the fact there is not native win32 port (and sorry a VM of Linux is not acceptable for most, I’ve tried).

  40. Bryce Miller says:

    My apologies, but I’m not much of a programmer at this point; “abstracting into a layer”? “fork lifted”?. thx.

    So this will theoretically have a negative effect on Node for *NIX? 😐
    In that case I’d rather Microsoft fork it.

  41. alektraunic says:

    not really understanding the negative responses. running node easily on more platforms just means a larger community and greater adoption. being against this is being against node. this greatly increases the chance that node will be used by developers in corporate environments. what is the down side of lowering the barrier of entry for your favored technology?

    although, node as a chrome extension (for dev purposes & assuming a plugin component) would be an interesting approach to getting it on all platforms as well. would pose some interesting UI challenges (terminal in the browser window?) but I bet it could be done.

  42. Tom says:

    You can clearly see node’s Mac-centric roots in all the comments. Instead of a general “huzzah, wider adoption of the product we all love!” you see “doh Wind0ze SUX!” Fairly typical of those who worship at the church of Jobs, but still, the whole “Microsoft is teh evil!” thing is so very 2004…

    Me, I use all major platforms every day, and I’m excited to see wider adoption of a promising young technology.

    • Paulo says:

      Get a clue you idiot. This has nothing to do with Mac or Steve Jobs. Very few people will be deploying production apps on anything other than Linux.

      If you want to be an ignorant moron, go right ahead. Hating Microsoft isn’t a cult or a trend – it’s a very practical thing. Microsoft bear a hatred of free software and want to “extinguish” it. Anyone who advocates or uses free software doesn’t want this to happen and hence hates Microsoft.

      Also, hating Hitler was so 1945. Let’s forgive and forget that too eh?

      Moron….

  43. Bryce Miller says:

    You are mistaken. Node (before port to Windows) is for *nix operating systems (UNIX, Linux, etc.) Which does include Mac OS X. I would think that Linux is by far a more popular choice for running Node than Mac. (Unless we’re talking testing servers)

    • alektraunic says:

      A vast number of developers are not working on unix based machines, for various reasons, some by choice some by employer mandate. This port means that more developers will have the option to reliably work with Node. I do not think anyone is suggesting that Windows is an ideal server OS for Node, but it is adequate for development. It would be nice to see Node being an alternative to the wamp stack. In contrast, Ruby support has all but dried up on Windows; and for that reason alone I have seen corporate dev shops stick with Java. Those same shops have let developers sneak in a bit of PHP here and there because of work done with wamp setups on developer machines.

      So, let them work with Node on their Windows workstations, of course the production servers will be unix, but if nobody is building anything then no servers will be getting the Node install anyway.

  44. tentonipete says:

    great news – can’t wait!

  45. Let’s wait and see if the IOCP API is up to the challenge. My tests with the *Async socket API in .NET (supposedly built on completion ports) didn’t leave me very enthusiastic about it. Maybe it’s .NET’s implementation fault…

  46. Hank Azaian says:

    I hope the “rather large modification of the core structure” doesn’t impact performance for the *nix platforms

  47. ksjquery says:

    Great news for somebody like me who have to develop for windows platform.

    One concern though – Microsoft seems to be very clever in leveraging Node.js windows version to push the world’s large group of XP users to upgrade to Windows 7 by leaving out XP as an un-supported platform for the future windows version of Node.js.

    It’s good to hear that MS offers to help, but history told us that MS usually kills more than one birds when they throw out some cash to help open source projects. I just wish the Node team is careful enough to not fall into the MS trap – in another word, I wish the Node.js windows version supports XP.

  48. anonymous says:

    fantastic

  49. if this is not huge i don’t know what is

  50. thangchung says:

    Great news. Wait and see what’s happen in the next. Hope we can see a fantastic things.

  51. Bart says:

    NEED.

    Can’t wait, if only for easy development before pushing to server. I’ve been fighting both Windows XP and Vista using Cygwin and it’s a bloody drag. My-first-linux-using-Ubuntu is a continuous fight against lack-of-knowledge and broken updates (had a spell of fun with those crappy scrollbar things in Eclipse).

    Too bad we still have some sort of modded XP at the office (yeah.. really, it messed up 🙂

  52. Steve Perry says:

    I strongly urge anyone using Windows (or porting software to it) to read this:

    http://www.kmfms.com/whatsbad.html

    The evil that you read about Microsoft isn’t propaganda or hearsay, it’s cold, hard facts. Microsoft are probably THE most damaging, innovation-stifling company the world has ever seen.

    If you’re using and paying for Microsoft software, you are being taken for a ride and funding yet more of this disgusting and illegal behaviour from Microsoft. Do yourself and the rest of the world favour and boycott all Microsoft products unconditionally.

    Use Linux!

  53. It would be nice to see more people using Linux, but many companies don’t support it. They’ll only use systems that are “well known.” So, in order to get away from Microsoft, the only other option most companies will consider is Apple. Which is a very feasible choice, but the cost is usually a no-sell factor. I will say there are a lot of horror stories in the various links here about Microsoft. It’s pretty scary stuff, nothing like what I’ve seen about Apple. Hopefully this port of Node doesn’t end up costing people more trouble than it was worth…

  54. red says:

    you dont specify the ETA, approximately when will be the first alpha release ?

  55. Bangon Kali says:

    Hi guys! I’ve cooked up an installer for NodeJS for Windows along with some of its common modules. But I’m still learning. And some of the Modules are hard to run on Windows with NodeJS. You can find my Google project page here http://code.google.com/p/nodejs-win/. I already have a working installer for Windows NodeJS which packages MySQL and Socket.IO modules.

  56. Eric says:

    Are there any thoughts on MS-SQL support as part of this project?

  57. Peter says:

    I see from the last line in the comment [“binary node.exe releases”] that its a binary only release. Why not the source?

  58. swambala says:

    This is amazing.
    Just now tried the node.exe in Windows 7.
    It is Simple and Quick… 🙂

  59. It works on Windows XP too. npm also available.

  60. Tom Rollins says:

    Lol, Microsoft care about hype and emerging markets (of clueless hipster developers).

    Feel free to steamroll this shitty project Microsoft. No sane person is gonig to use it anyway.

  61. Pingback: Using Node.js in an ASP.NET MVC application with iisnode – 108minutes.info

Leave a reply to meandmycode Cancel reply