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, he 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?