Yesterday we were privileged to have a couple of developers from the Argonne National Lab’s (ANL) GREET model group come by the office to demo the newest version of GREET. What is GREET? GREET is “The Greenhouse Gases, Regulated Emissions, and Energy Use in Transportation Model.” Used for understanding the emissions profiles (GHG and criteria pollutants) from transportation energy and utilization pathways, GREET is popular and highly respected. For example, if someone wanted to know how total lifecyle emissions from a battery electric vehicle whose electricity came from coal compared with a conventional gasoline vehicle’s emissions, GREET would be a typical tool in such an analysis.
GREET has been around since 1996. It began its service as an Excel spreadsheet loaded with formulas and constants. It has continued on the Excel platform up through the present time, becoming bigger and more complicated in the process. The latest GREET spreadsheet is a monster with formulas running back and forth across multiple tabs. Attempting to trace the logic of a spreadsheet that large is an exercise in frustration. Spreadsheets like Excel are great for building a small modeling application quickly, but its lack of structure, which accelerates the development of small projects. becomes a hindrance as the code base grows. Large applications are written in highly specific languages like C++ because they enforce structures that allow for maintainability. Enforcing the integrity of operations on units in an Excel application (e.g. making sure you don’t add dollars and kilograms) is practically impossible. You need to rely on the user to get things right. This is not much of a problem in a standard programming language environment.
I’m happy to report that GREET is stepping up from a spreadsheet to an actual application. The new GREET is going to be a lot more fun to work with. Users will drag and drop pathways on to a grid, configuring parameters along the way. Unit conversions will run automagically, eliminating the oft occurring problem of a missed or inverted conversion in a long and complicated equation spanning multiple spreadsheet pages. Programmatic constants can be viewed and edited in an XML file. Users can even add features that are not included in the standard package. I am thrilled to see GREET become a modern tool, emerging from the evil swamp of large excel applications.
That said, I have two complaints. The first is a major complaint — that the new GREET application will not be open source, and that is terrible. GREET is a scientific tool and scientists need to know how their tools work. Full stop. It is now possible to peek under the hood of Excel GREET (although the visual basic macros are closed source) to see how the model is working. The new GREET, however, will offer only documentation. Documentation can be wonderful, but active code is the ultimate documentation when you need to know exactly how some thing works. Not everyone who uses GREET will read its code, but the fact that some users will review it will both improve the quality of the code and assure the user community of the quality of the product.
The reasons for keep GREET closed source are unclear. ANL provides GREET free of charge so the monetary concerns are moot. I suppose there could be concern about the code forking into a GREET competitor, but that seems unlikely. GREET is a standard that a competitor would have a hard time overcoming. Another concern might be that opening the source would allow developers to alter the code and thus could create confusion when they claim the result is from GREET, but that is actually from a modified GREET. One way to address that problem is to create an Open GREET version that is disallowed for usages that explicitly mandate GREET. I don’t know what the specific reason for closed sourcing GREET is but I would urge ANL to figure out how to address it some other way. An open source GREET is going to advance in leaps and bounds in both quality and content as more eyeballs review the code; ANL will get thousands of hours of free debugging from open-sourcing.
Finally, I’m just a little disappointed to see the new GREET app written for Microsoft’s proprietary .net platform, which means all users will have to Windows access (although it does acceptably on virtual machines, e.g. Parallels), but I can forgive that. Developing a Windows app for a Windows only user base is efficient, especially if you already have an expertise in .net on your staff. I’d love to see GREET written in Java which would open up native access on multiple platforms: Windows, Mac, and Linux, but that’s a low priority wish.
Complaints aside, I’m mostly just happy to see GREET mature into a genuine application with a GUI. Congratulations GREET team and Argonne!