Also, am I right that the "interface definition file" that
Ted Ts'o
explained is entirely different from the "interface definition file"
that you (Josh) have in mind? BTW, you (Josh) speak of "system
interface definition files", but weren't those explicitly excluded
from the definition of complete source code in GPLv1? (Otherwise, what
you mean by a "system interface definition file" must be different
from what GPLv1 means by "standard header files or definitions files
that accompany that operating system" in the GPLv1 version of the
system library exception.)
Yes, we are referring to different things. But, rereading the sentence
again, I think that I was being too narrow in my thinking and that the
term is being used in a more abstract way than I was originally
thinking. There are two things influencing my thinking now:
1) The term "interface definition files" follows the abstract term
"modules". So maybe what it is trying to say is something like: "source
code for modules + interface definitions between modules."
2) RMS didn't really like UNIX/C that much -- LISP is his hearts
de)ight. So, the idea of putting down programming concepts that are UNIX
or C specific into a definition of "source code" would probably make him
want to puke :-)
Check out how the term "interface" is used in this Wikipedia article on
"Modular Programming",
<
http://en.wikipedia.org/w/index.php?title=Modular_programming&oldid=5...;:
"""
Modular programming (also called "top-down design" and "stepwise
refinement") is a software design technique that emphasizes separating
the functionality of a program into independent, interchangeable
modules, such that each contains everything necessary to execute only
one aspect of the desired functionality.[1] Conceptually, modules
represent a separation of concerns, and improve maintainability by
enforcing logical boundaries between components. Modules are typically
incorporated into the program through interfaces.[2] A module interface
expresses the elements that are provided and required by the module. The
elements defined in the interface are detectable by other modules. The
implementation contains the working code that corresponds to the
elements declared in the interface.
"""