I'm working on a web application that runs on node.js and uses MongoDB. It's important to mention that I plan to release the application as commercial software. The way I wrote the installer, it asks the user to confirm the location of the node and mongod binaries (after autodetecting first). I figured I could skip this step altogether by bundling said binaries together with my application or making the installer download them, but there are a few issues I need to address:

  1. First and foremost, the licensing issue. The friendly folks at 10gen (the company that develops MongoDB) answered an email I sent them and told me their license allows this, and from what I can figure out, this is the case with node.js too. Are there any problems I should keep an eye out for?
  2. Is it worth (from the user's point of view) fetching ~20MB of extra data during installation just for the convenience of not having to manually install node.js and mongod (the MongoDB server binary)?
  3. Should I expect any problems if I bundle the 32-bit binaries and the user installs the application on a 64-bit machine?

Bandwidth is cheap. Time is not. I would suggest that if you are selling your software that you have the process as automated as possible, asking as few questions as possible, and have it "just work". Given this, 20mb isn't a lot and you're really looking at 20 seconds or less for most broadband connections. at least in my country.

Bundling the software also ensures that you distribute the version you've done your testing on so if node.js is 3 versions ahead in 5 years time, and there are breaking changes, you won't be having support issues.

Think about it from a users perspective. If you can get one package, that contains everything you need for something you bought, or you can get the software but then need to go find the dependencies online, you'd be frustrated.

  1. If 10gen have said it's ok, and you have that in writing, you shouldn't have any problems. Node is MIT-licensed so I doubt there would be problems there. Also bare in mind most software that is designed to operate as a service, runtime or component does come with a redistribution policy and this is normal.

  2. If you're always able to provide the files then you could go down this path, as I said above bandwidth is cheap. You might have more luck bundling the required files for a few reasons: offline installation, and in case your server goes down / you decide to stop selling software / etc.

  3. You should install the correct architecture for the CPU, although there is unlikely to be problems.

  • Thank you very much for your input, I'm a big fan of convenience myself when I install software. Regarding 3: I guess you're right, an extra check and then downloading the proper build just to be safe wouldn't hurt. – Victor Stanciu Mar 10 '13 at 20:36
  • No worries, good luck! – Sam Mar 10 '13 at 22:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.