Consumer software often has interpreter dependencies. How should a situation where the required interpreter is not by default installed on the targeted system be handled for consumer software, soft for non-technical people?
Bellow, I give an example with Node.js and macOS, but my question applies equally to other platforms.
Let's say I release some consumer software for macOS written to be run with Node.js (via a shebang). macOS doesn't have Node.js installed by default, so I guess there are two-ish major options here:
- Pack Node.js into my software
- Mention that Node.js is required to run the software on the download site
- (Include a piece of software that can be run by default, that is run before the main program. This piece of software checks if Node.js is installed. If not, it should ask the user whether he would like to install the required dependency and help him to do so.) ~ Would work, but this doesn't seem to be a common thing.
I've seen both options used extensively (although not per se with the Node.js and macOS example combo). Both have their pros and cons.
Having the user install Node.js on their system is probably quite a bit of a hassle for non-technical people.
Packing the entire Node.js runtime with an application is also not that ideal, especially for software where the interpreter takes up more space than the actual application code. If all apps on the users computer would do this, the majority of the disk would be filled up by packed Node.js-executables, though only one global one would really be required.