Brainstorm: Software Engineering and Climate Change

Monday, December 15, 2008

A few of us in the software engineering group have met over the past few weeks to brainstorm software engineering research ideas for dealing with climate change. We are attempting to refine our ideas into research questions and projects, and this is what we've come up with so far.

Better understanding of climate processes

The general public doesn't have a such a great understanding of some of the basic climate processes (Sterman & Sweeney, 2007). So, what about creating an environment to learn these sorts of things in? This is, of course, directly connected to raising awareness of climate change and enabling people to make better decisions (see below).
  • Simplified Climate Model: create a really simple climate model (even simpler than JCM[1]) that an 8 year old would want to use to explore various climate scenarios.
  • SimClimate: like SimCity, create a game that's played out in a world with a simulated climate and players learn about climate process implicitly through playing. Maybe you have to play out various scenarios, or maybe it's a massively multiplayer game where each player controls a region and has to work with others in the game. There are several existing examples of this sort of thing.
  • Climate laboratory: let users build simple climate models themselves, or tinker with existing models, and then run experiments on them. The focus with this idea is to get users to understand climate processes by directly manipulating them, rather than just tweaking various settings.

Raising awareness and making better decisions

The more information you have, the better decisions you can make...
  • Wiki decision: a wiki-like database linking decisions and an explanation of the impacts of those decisions. For instance, in choosing a particular Ontario apple v.s. a New Zealand apple, you might be able to follow the chain of events in the production, transportation and distribution. Maybe expert opinions are included or figures for fuel consumption.
  • Barcode Reader: for any product, a hand-held reader that provides all sorts of related environmental information. E.g. food miles, carbon footprint, pesticide use, etc... like current Nutritional Information given on packages.
My bias: I'm really wary of ideas like these that may increase obsessive, paralyzing worrying about making the best decision. Sometimes more information is not what's needed. I'd want plenty of care and forethought to go into crafting such tools.

Access to climate data and resources

What can we do to provide both the public and scientists with easier and more useful access and analysis of existing climate data (both observations and model predictions)?
  • WikiClimateStats. In the same vein as StatsJam (watch the screencast), give people a method to easily explore and analyse climate data, and have discussions about it. As a tool for scientists we'd want this to help them share results and analysis (i.e. furthering open science).
Some questions:
  • What questions are climate scientists asking about their data?
  • What questions are the public asking? What questions would it be helpful to be able to ask? What does 'helpful' mean here?
  • What sort of query interface makes sense (SQL won't cut it for non-programmers)?
For climate modellers, sharing their "digital resources" is still troublesome:
  • No standards yet for model metadata, configuration data, experiment output, etc..
  • Data visualisation
  • No way to discover existing climate modules, or to see if existing runs satisfy your questions
  • Access rights (data isn't always public)
See the Earth System Curator wiki page on Use Cases for some ideas on what's needed.

Collaboration and coordination amongst climate modelling groups

Climate modelling groups don't often collaborate or coordinate with other modelling groups, and when they do it's done face-to-face rather than in a distributed fashion. For really complex climate models, development may need to go distributed. How can we assist?
  • Integrate awareness tools. Get scientists to use existing collaboration and awareness tools and see if it improves things.
  • What are scientists asking about their code?
  • How can we help scientists to share tacit knowledge?
  • Allow access to the decision making of other modelling groups.

Software Engineering challenges in building climate models

We know a little bit about this (see here).
  • Can we borrow software engineering practices from other disciplines, or from commercial outfits?
  • What are questions scientists asking about their code?
  • Where do they get this information currently?
  • Why is it hard to modularise their models? (As mentioned before, it's tough)
Ideas:
  • Build better FORTRAN tools. FORTRAN is the language of choice for scientific computing but there doesn't seem to be the same level of sophistication of tools for it as for "modern" languages. We could build better a better IDE, debugger, refactoring tools, static analysis tools, etc...
  • Try standard tool-based code exploration. Would scientists write better code (or write it with less trouble) if they had access to some standard code exploration techniques. For example, profiling, code metrics, or reverse engineering tool analysis?
  • Teach 'em the basics. See Software Carpentry. If we teach scientists the basics of crafting software, does it help?

Validation and Verification

  • Document current methods of validation and verification.
  • Link climate model V&V to standard software engineering V&V
  • Link climate model V&V to philosophy of science.
  • Link to their software development practices and the choice of approximations used in the model.
  • Investigate current model benchmarks. What is a better benchmark?
  • Traceability (the ability to trace results from the simplifications of a model to their details in a more comprehensive model)
  • Seamless Assessment (the ability to vary resolution and time scales)

[1] Do me a favour: Start up JCM, click the 'mitigation' button/dropdown in the far right corner and choose "stabilise CO2 emissions", and then try to stop the global mean temperature from rising (bottom right chart) by playing with the CO2 emissions (top left chart). (Let your mouse hover over the CO2 emissions handle to get a read out.) Speak to me when you're no longer scared.

2 comments:

Tennessee Leeuwenburg said...

Great list of brainstorming ideas.

A few other practical suggestions:
* Improved CPU scaling algorithms to reduce PC power usage
* Improved traffic flow management algorithms to reduce car emissions
* Carbon offsetting of IT conferences
* Facebook application showing your carbon usage (to encourage offsetting)

Bryan Lawrence said...

You might also want to look at metafor for use cases and work on helping make climate data more accessible.

Post a Comment