This is a list of design decisions to support version 0.2 of the Node.js library
- We want to make it simple to work with asyncronous IO
- No function should direct perform I/O. Use callbacks instead
- Have built in support for important protocols (TCP, DNS, HTTP) and support many HTTP features (chunked requests, keep alive, comet etc.)
- The API should be both familiar to client-side JS programmers and old school UNIX hackers.
- Be platform / operating-system independent
- Reuse solid platforms (Google V8) and minimize dependencies (python only)
- Use JavaScript since it's designed to be used in an event-loop
- I/O needs to be done differently from traditional systems. Other threads of execution should run while waiting. We are inspired by NGinx and the event loop.
- Stream everything; never force the buffering of data
Note: These decisions are copied from the original Node.js paper by Ryan Dahl and adapted to this format.