From wiki

Triple scripts are an embodiment of the SDIPD principle (pronounced "serendipity" or "s'dipity"?). SDIPD stands for "package distribution is source distribution [sic]". (Yes, really. Equality is commutative.)

Software that obeys the SDIPD principle must eschew with conventional toolchains, requiring instead non-destructive compilation (if any compilation occurs at all). Traditional compilers take as input human readable source code and mangle it to produce an executable from which the original source code cannot be recovered. This implementation detail of computing systems in the 1980s catalyzed the free software movement, which was later given the label "open source" in 1998, motivated by the release of the Netscape Navigator source code. Much of the free and open source software corpus, however, does not exhibit or enable a form of computing with the goal of non-destructive compilation. Even if the source code is readily available, most projects' build procedures still rely on techniques that involve mangling the source code in pursuit of producing the "executables" or other object files. With non-destructive compilation, the program maintains some level of readability for humans whether in executable form or in its pre-compilation form, because the executable produced by the compiler can be considered equivalent to the original source code from which it was created; that is, it is possible reverse the compilation process to reproduce the original source code with perfect fidelity. That's a precondition for non-destructive compilation generally; for the non-destructive compilation approach that takes in particular, it's feasible for a human to open the compiler output and modify it directly to effect the sorts of changes he or she desires, with no need for intermediate decompilation and recompilation steps.

Among other properties that triple scripts exhibit, the triple script file format was designed to respect SDIPD. The reference compiler trplkt applies non-destructive compilation to the programs it processes. (The obvious question is whether trplkt as a program itself exhibits SDIPD, and the answer is "yes"; trplkt is itself implemented as a triple script.)

See also[edit]