If you own an iPhone, you’ve seen the familiar message “iOS 9.3.3 is available for your iPhone and is ready to install.” If you’re like me, you hit “Remind me later” a few dozen times before you actually install the update. Call me paranoid, but I always have to take a quick look online to see if the software update is ready for prime time. Sometimes the update inadvertently introduces some new bug or creates a performance issue that might drain my battery.
Why use versions?
Producers of the biggest software packages sometimes use versioning to make a splash:
- “macOS Sierra – Say hello to Siri. And all the other new features coming to Mac.”
- “Windows 10 PCs do more. Just like you.”
Sometimes they use versioning to send a message. The SUSE Linux distribution started at version 4.2. This was a reference to the number 42. The number 42 was “the answer to the ultimate question of life the universe and everything” in Douglas Adams’ The Hitchhiker’s Guide to the Galaxy. Many versions of software have skipped the number 4 or 13, which are unlucky numbers in Asian and western cultures respectively.
For all the other uses, versioning is a digital signpost. These signposts are critical to our usage and understanding of software and data. They can be a number, e.g. iOS 9.3.3, or they can be a name like macOS Sierra. They can even just be represented by a timestamp like most documents in file systems that allow you to roll back to previous versions. Sometimes they are obvious to the end user, but sometimes they hide behind the scenes as in many SaaS products and web services.
However represented, versioning and version control are critical to making sense of our digital world. Versions allow you to know where you are and enable coordination. Without versioning, documents being exchanged and commented on by multiple parties could grow hopelessly confusing. Without versioning, software bugs would become difficult to diagnose. Could you imagine how the guy in the Genius Bar could diagnose why your iPhone wouldn’t take pictures anymore if he couldn’t tell what version of the software it was running? Like software, without versioning, authoritative digital datasets become difficult to use. Without versioning, calculations and conclusions that rely on unversioned data become impossible to reproduce. The data becomes “unbankable.”
Versioning in the solar space
One of the key benefits of versioning data in the solar space is bankability. Bankability means the ability of a financial institution to finance a project. If a project isn’t bankable it won’t receive financial investment and will not get built. If data isn’t “bankable” it can’t be used to support the diligence process used by the finance industry to evaluate a project.
A key tenant of “bankable data” is versioning to support reproducibility. Imagine if a utility scale solar project used a particular dataset to estimate solar production. If the investors came along to finance the project and couldn’t reproduce the data, they wouldn’t invest. Similarly, if a leasing company wants to securitize a portfolio of residential solar assets, it needs to be able to reproduce the underlying estimates of production.
At Clean Power Research, we have worked closely with the financial community, developers and independent engineers for many years. We understand their needs. A critical need is versioned data and software. Our SolarAnywhere® software has always been clearly versioned. We use the first number to represent the major version of the model used to generate the data. We use the second number to represent minor changes to the way the data is generated.
Some versions may not even make it to public release but numbers may still be incremented. We do that to maintain the utmost clarity and consistency even internally as we enhance our data-generating products. This allows calculations made using our data to be reproducible and bankable. So the next time you are working on financing, developing, operating or forecasting a PV plant or a PV fleet make sure to ask your data provider what version of data you are receiving.