The foundation engages in a wide variety of activities, and has plans for many more. They come under five broad headings:
Some of our activities (e.g. workshops) naturally come under more than one of these headings.
A crucial part of our work is to change the policies towards code publication, at governments, institutions, agencies, funding bodies, and science publishers. There are already some positive policies – for instance, some journals require code publication, and some funding bodies recommend it – although they are not always honoured. Many organisations have made positive statements, but not yet instituted any policy. And unfortunately, many institutions block progress by preventing code publication, requiring restrictive licenses, in the name of protecting potential income from license sales. Actual income from licensing climate science software is very rare, and cannot justify such a serious impediment to progress.
We are working to convince organisations that positive policies need to be instituted, strengthened, and implemented. We are in contact with numerous national and international bodies to work towards this, by arguing the case for publication:
- Publication in climate science is essential to counter widespread accusations of secrecy, conspiracy, groupthink, and fraud;
- Publication will advance the field by allowing this key aspect of the scientific method to be subject to review, collaboration, and competition;
- Publication will allow interested parties, including many non-scientists, to promote public understanding of the field by developing visualisations and other resources, increasing the accessibility of the science.
We will have succeeded in this area when software publication is the norm in climate science.
Climate science, along with many other scientific fields, uses software very widely. Most scientists spend some time writing software, yet there is very little training: most learning is on-the-job, taught by predecessors who are similarly untrained. As a result, scientists are generally unaware of current methods and best practices in software development. There are many important areas which are very undeveloped, and which can greatly improve the quality and effectiveness of science software:
- Source code management and version control;
- Configuration management;
- Defect tracking;
- Testing, particularly unit-testing;
- Open-source and distributed development;
- Rapid and flexible techniques such as “Agile Programming” and “Evolutionary Development”;
- Documentation and “literate programming”.
We intend to provide training ourselves, and also to recommend existing training programs and systems, and to promote incorporation of software development modules within existing science training and education systems. Every science degree should include these elements, and it should be seen as important professional development by scientists and their institutions.
We will have succeeded in this area when all climate science software is written by scientists with some training in software development.
To change the scientific culture, it will help to clearly show the benefits of doing so. We are leading by example, showing how the publication of good science code advances the field.
Since 2008 our Clear Climate Code project has been writing, publishing, and maintaining software for climate science, with an emphasis on clarity and correctness. The project shows that it is possible to write science software which is highly accessible to interested outsiders. By doing so we have also provided the basis for asking and easily answering new and interesting scientific questions: to what extent does a result depend on particular algorithms or parameters chosen? What about sensitivity to noise or error in particular parts of an input dataset? How about combinations of different datasets?
We will continue this project, and broaden the work through collaborations with more climate science institutions and groups, applying the lessons and techniques to new bodies of code. We will continue to publish blog posts describing our work, and will also publish and co-author science papers. We expect that increasing numbers of scientists will learn from our work and copy our approach.
We will have succeeded in this area when we are recognised throughout the field as experts and leaders in climate science software development.
Increasing numbes of climate scientists want to improve their software practices, or to publish their code, but lack skills or information about how to do so. We are helping them by providing web resources: white papers, blog posts, directories. Our Open Climate Code project is an important part of this, creating and publishing a directory of open climate science software.
We will have succeeded in this area when we are among the first ports of call for climate scientists seeking software development guidance, or for interested members of the public looking for climate science software in particular domains.
We can amplify the individual efforts and interests of many climate scientists by creating networks and groups. By holding workshops and conferences we will bring together many people who share our interests and motivations, to share expertise, to develop skills, and to establish links between groups, agencies and nations. On a smaller scale we will create online communities and mailing lists, and hold minor gatherings at existing conferences.
We will have succeeded in this area when most climate scientists know of us and are aware of the networks we help to create.