## Code style The best thing you can do is follow the code style used in the files you are changing or look for files in format same as those you are adding and use that code style. ## Static data In many cases using immutable static data rather than generating at runtime and caching it is more optimal. If you want to add code that uses data tables use naming such as `MIBTbl` which makes it easy to look for and Python script for generating the data tables if possible. Check out the existing scripts in the scripts directory of Katie source code for examples. ## Compatibility Neither source nor binary compatibility is guaranteed between releases which means hacks for binary compatibility and such are not required. If there is breaking change, the changes that need to be applied to other projects should be kept to minimum with backwards compatibility where possible. ## Standards All standard and extension requirements for optional feature should be checked for during build if they are newer than POSIX.1-2001 (https://en.wikipedia.org/wiki/POSIX). Read any documentation that may be relevant to the changes you make such as manual pages for Linux (https://linux.die.net/man/), FreeBSD (https://www.freebsd.org/cgi/man.cgi), NetBSD (https://man.netbsd.org/), OpenBSD (https://man.openbsd.org/) and Solaris (https://docs.oracle.com/en/). Open Group documentation is also a good source of information (https://pubs.opengroup.org/onlinepubs/9699919799/idx/head.html). ## Tests You can import tests and adjust them as needed from stock Qt4 copy if there are no tests in place relevant to the changes you do. Adding regression tests is optional. ## Translations To contribute translations either use the web interface at https://www.transifex.com/smil3y/katie or the .pot files provided as base and submit them as pull request. ## Licensing Unless you add new files you do not have to worry about that. Otherwise use as liberal as possible, preferably public domain (no license) or 3-clause BSD. The reason for that is simple - many vendors (distributions) and consumers will have strict requirements what they distribute and/or use. Debian for an example does not enable by default non-free software repository thus user interaction is required before non-free software can be installed. If you cannot contribute your changes with license that is more or equally permissive than those already in use (3-clause BSD, FDL v1.3 and LGPL v2.1+) than your contribution may not be acceptable.