The people who kick off this project should set the coding standards and conventions. In order of precedence the standards that we follow are,
The references for these standards are the GNU Coding Standards document, Harbison and Steele C: A Reference Manual, the GNU C Library Manual (version 2), and the Glib source code.
If the project has a philosophy it is to "Think in C". Since we are working in C we should only do what is natural in C, rather than trying to simulate features of other languages. If there is something which is unnatural in C and has to be simulated then we avoid using it. If this means leaving something out of the library, or only offering a limited version then so be it. It is not worthwhile making the library over-complicated. There are numerical libraries in other languages, and if people need the features of those languages it would be sensible for them to use the corresponding libraries, rather than coercing a C library into doing that job.
It should be borne in mind at all time that C is a macro-assembler. If you are in doubt about something being too complicated ask yourself the question "Would I try to write this in macro-assembler?" If the answer is obviously "No" then do not try to include it in GSL. [BJG]
It will be useful to read the following paper,
It is available from @url{http://www.research.att.com/sw/tools/sfio/dm-spe.ps} or the earlier technical report Kiem-Phong Vo, "An Architecture for Reusable Libraries" @url{http://citeseer.nj.nec.com/48973.html}.
There are associated papers on Vmalloc, SFIO, and CDT which are also relevant to the design of portable C libraries.