The basic definition of a quine is a program that, when run, produces its own source code as output. There are a number of techniques and a number of way to implement those techniques across a number of different languages.
However, not all quine programs are equal. Clearly, any quine in HQ9+
or a related language is not a proper quine, and nor is an empty program.
Some cases are more ambiguous, though. Some languages like PHP or HTML, when given a program with no executable tokens, will just output the contents. However, that does not necessarily mean that every quine written in one of those languages necessarily takes advantage of this.
Another type of 'cheating' quine, one that directly accesses its source code, via a file or otherwise, and outputs that.
A program shouldn't necessarily be considered 'cheating', though, just because it accesses a file. For instance, if a program were to use source code spread across multiple different files, it could still be a proper quine, assuming it outputs all of its source. It might even use external non-code files, such as images or other data. This doesn't necessarily mean that it is not a proper quine, as long as it outputs all of its source code and source data.
A program might even directly access its own source code file: For instance, in PostScript it is common practice to access the source file in order to access binary data appended to the end of the source file. In this case, the program is merely accessing source data, and shouldn't necessarily be considered 'cheating' for it.
One particularily ambiguous case is this answer to Build a Twitter-quine. (Long story short, write a program that tweets its source code.) One version of the program uses a link-shortener service to redirect a shortened URL (http://tinyurl.com/erjk34
) to a longer one (https://twitter.com/intent/tweet?text=window.open(%22http%3A%2F%2Ftinyurl.com%2Ferjk34%22)%3B
). Even though the question OP stated that cheating quines are allowed, it is still worth considering whether this is a proper quine or not, or if the link redirection (not the code performing the redirection, the redirection itself) should be considered part of the program's source.
What should the criteria be for determining what is and isn't a proper quine in quine-related challenges?