What software to cite in a manuscript, and how? When writing a manuscript for a scientific article, I often wonder what software I should cite or acknowledge, and how.

The first problem is to make a choice which software to cite. On the one hand, there is no way to cite all software, as this would mean to cite my whole software stack (Linux, GNU tools, emacs, git, ...). On the other hand, not citing any software is not fair, either. Furthermore, some software explicitly asks to be cited, some software doesn't. Also, some software is really crucial to the results, some isn't. Another important aspect is that citing software is not only about giving credit to the authors of the software, but also to give other scientists hints on what software they might want to use. So, the choice which software to cite is a problem.

The second problem is how to cite the software. Some (scientific) software does provide a classical scientific article that can be cited. However, in this case, no URL to the software is given. Others do not have an associated article. How do I cite these? I have seen people that cite the manual of a software, others just give the URL. What is the way to go?

Another aspect is where to cite the software. Some software can be cited in the course of the articles text, but when it comes to more fundamental software, other places may be more appropriate.

Are there any good ideas out there on any of these aspects?
After some thought on the matter, my own approach in my next manuscript will probably go like this:


Which: To choose which software to cite, I would try to answer the following questions:


Is there a scientific article that can be cited and are the authors of the software asking to be cited? 
Was this specific software relevant to the results of the manuscript? If there are plenty of alternatives to the software and you use it merely because you knew it, this is probably not a reason to cite it. But if I used and profited from the specific features of a software, then it is probably worth citing it.
Do I explicitly want to give credits to the software? Maybe I found the software very good to use and I want to tell other scientists to use it, then I would cite it.

How: If there is a scientific article, I cite it in the classical way. However, I would also cite a URL of the software, as this makes it significantly easier for a reader to find the software. Otherwise, cite the URL. Citing the manual doesn't make sense to me, the only reason to do so would be to give explicit credits to an author.
Where: If I can cite a software in the course of the text, I do so, otherwise, I would make an appropriate paragraph in the Introduction or Acknowledgements.