The people who kick off this project should set the coding standards and
conventions. In order of precedence the standards that we follow are,

We follow the GNU Coding Standards.

We follow the conventions of the ANSI Standard C Library.

We follow the conventions of the GNU C Library.

We follow the conventions of the glib GTK support Library.

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 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.