The basic idea of GNU Astronomy Utilities is for an interested astronomer to be able to easily understand the code of any of the programs or libraries, be able to modify the code if s/he feels there is an improvement and finally, to be able to add new programs or libraries for their own benefit, and the larger community if they are willing to share it. In short, we hope that at least from the software point of view, the “obscurantist faith in the expert’s special skill and in his personal knowledge and authority” can be broken, see Science and its tools. With this aim in mind, Gnuastro was designed to have a very basic, simple, and easy to understand architecture for any interested inquirer.
This chapter starts with very general design choices, in particular Why C programming language? and Program design philosophy. It will then get a little more technical about the Gnuastro code and file/directory structure in Coding conventions and Program source. The TEMPLATE program discusses a minimal (and working) template to help in creating new programs or easier learning of a program’s internal structure. Some other general issues about documentation, building and debugging are then discussed. This chapter concludes with how you can learn about the development and get involved in Gnuastro project webpage, Developing mailing lists and Contributing to Gnuastro.
|• Why C:||Why Gnuastro is designed in C.|
|• Program design philosophy:||General ideas behind the package structure.|
|• Coding conventions:||Gnuastro coding conventions.|
|• Program source:||Conventions for the code.|
|• Documentation:||Documentation is an integral part of Gnuastro.|
|• Building and debugging:||Build and possibly debug during development.|
|• Test scripts:||Understanding the test scripts.|
|• Developer's checklist:||Checklist to finalize your changes.|
|• Gnuastro project webpage:||Central hub for Gnuastro activities.|
|• Developing mailing lists:||Stay up to date with Gnuastro’s development.|
|• Contributing to Gnuastro:||Share your changes with all users.|