First and foremost, Gune will be ultimately portable to all strict implementations of ANSI C. This means that if Gune does not compile on an ANSI-compatible system, this is regarded as a serious bug. If Gune does not work on some system which doesn't implement ANSI C correctly, the implementation is considered broken, and we will not even attempt to make Gune run on that system. See the next point.
Gune must not do anything non-portable, ugly or almost correct. Submitted code or patches will not be accepted unless they adhere to the Gune coding standards (to be found in the HACKING file), the code is lint-clean and portable.
We want programming in Gune to be just as nice as programming in C, but without the off-by-one errors and other all too easily-made mistakes we can do without. In short, Gune will integrate seamlessly with the default ANSI C library.
If something can be done extremely fast in a very ugly or obscure way, or in a slightly slower but easily understood way, the latter will be used in most cases. This also means beginning programmers can easily understand Gune's code and learn how things are implemented in real-world applications. Having easy-to-read code also means programming mistakes will be easier to spot.
For example, we use BSD-style Makefiles as our project build system, because they are the easiest, most elegant way to express how a project is to be built. This is not unportable, since most implementations of BSD Make itself are written quite portably, and are available for almost all systems.
In our opinion, utility libraries are not of much use if they are poorly documented. We use Doxygen for code documentation, and intend to document most functionality in tutorials as well. We also try to ensure all documentation is up-to-date, complete and consistent.