I have been thinking about green programming for the past six months. As I see the battery on my phone die over and over, and now the iPad too. I can’t help but think: what is using up all the power?
Miniaturization, more efficient components, and better batteries can go a long way. Unfortunately this kind of improvement sometimes mean we use our phones, tablets, and other devices more as they become faster and easier to use (Jevon’s paradox: http://en.wikipedia.org/wiki/Jevons_paradox).
I believe there are opportunities to improve hardware utilization at the software level by minimizing unnecessary use of hardware. There are some barriers however to achieving this and the first is measuring the energy cost.
The ideal location to measure would be operating systems. APIs that access disks, cameras, wireless networks can measure their usage. CPU & GPU utilization can be sampled. The information would be based on usage instead of actual energy consumption (the latter could vary substantially based on hardware). This usage can be combined for a “greenness” rating of software. The data would be gathered and accumulated anonymously across a large sampling of users. To avoid bias between online and offline the information can be accumulated to disk and batch sent periodically.
This generic rating is going to be fuzzy but it ought to be able to effectively say: between applications A & B that do roughly the same thing, on the same hardware A will use more energy than B.
Collecting these metrics on how software uses hardware may provide easy targets to improve the operating system and subsequent iterations of the hardware, reducing usage for all applications.
The results can be collected for each version of the software. Results from previous versions could be used when there is insufficient data for a recently released updated version. I propose publishing the “greenness” rating of software online in the application’s description in the store along with the user rating.
The data ought to be available to developers as they are building their application to address issues to meet their targets before their software ships (smaller sample, but it can be more detailed).
This data can be used to manipulate searches and promote social change by driving sales towards more energy conscious solutions.
Software has an opportunity to make significant strides in conscientious power usage. Software iteration can occur very quickly and delivery is very efficient. Small improvements in power usage by commonly used applications can result in much greater savings in the aggregate. Reduce the number of units plugged into the wall, recharging.