Contributions to the official OpenTag codebase must meet the official coding guidelines. Subordinate to the official coding guidelines are the Official Style Guidelines and the Official Performance Guidelines.
Write code that is fast and compact. Speed and compactness trump ease-of-use, but always strive to write modular, easy-to-read code. Never use C++ or other languages designed for object-oriented syntax. Never make important data types “static” or otherwise private. Compulsive OO is the way of the devil, and it will not be tolerated in official codebases.
Official codebases are blessed by JP – that is the overriding requirement. This said, code that does not meet the guidelines is very unlikely to be blessed. Official codebases will be hosted in the main source distribution (sourceforge). Unofficial codebases may be interoperable with official codebases, and they may be made available to the community, just not on sourceforge alongside the official codebases.
C99 is the preferred coding language for OpenTag. Compiler-specific language options (like pragmas) are OK as long as they are dealt with in the preprocessor such that other supported compilers can work.
Assembly language is permitted inside platform code or custom application code. Platform code is inside the
/OTPlatform/ directory and application code is inside the
/Apps/[app-name]/ directory. Assembly code is not permitted inside the OpenTag library (
For compiled languages, only C is permitted. Languages that resolve to C after the compiler (like ObjC and Ada) might be given special dispensation at a later time. However, C++ will never be permitted in the OpenTag official codebase because JP agrees with Linus.
OpenTag will support a brand of Forth called DASHForth (pun intended), that is being developed. It is not available at the current time (Oct 2011), and it probably will not be integrated into the codebase until version 1.1 or 1.2. DASHForth is designed mostly for application-layer programming at the client-level, but could be used for other types of programming, too.