The road to 1.0

Rolling road.

Figure 1: Rolling Road. Credit: Michael Krigsman.

Brightway2 has made enormous progress since the first commit on November 20, 2012. The current version is 0.10, and includes the foundation for work far into the future. There are a few big things and a number of small things that need to get finished before version 1.0 can be released, however.

Brightway2 uses semantic versioning, so reaching 1.0 is a big deal. To be more specific:

Version 1.0.0 defines the public API. The way in which the version number is incremented after this release is dependent on this public API and how it changes.

This means that it is difficult to make substantial changes, as software building on top of Brighway2 will expect certain interfaces and patterns.

Major features

Database and method explorer

Status: finished!

There is now the following:

Reworked treemap

Status: Almost finished. Just need to make hover elements outside the box, to eliminate flicker.

The current treemap is a decent start of an idea, but as a released graphic it sucks. It can be interactive, hierarchical, and (thanks to the idea of Pascal Lesage), include biosphere flows and their associated uncertainties.

See progress at online example 1 and online example 2. There is also an associated bug report.

Graph traversal improvements

Status: Good progress. Commit d52549 added all the basic machinery needed, including lots of tests!

The graph traversal class has undergone some serious work, both in additional tests and documentation, and in organization. However, final touches are needed for simplification and graph unrolling functions.

Graph traversal is useful, among other things, for better treemaps and supply chain circles.

Minor features

  • Set all preferences in the web UI
  • All documentation should be checked to make sure they are current
  • More notebook examples
  • New homepage with emphasis on framework aspects

Dreaming of 2.0

Getting to 1.0 means the start of planning for 2.0. Here are the major features I am currently thinking of for 2.0.

  • Compatibility with Python 3. Python 3 is already at 3.4, and all major Brightway2 dependencies are Python 3 compatible.
  • Pluggable data backend. Using a simple database, like SQLite 3 or CodernityDB would make random access into inventory databases, and especially big databases like ecoinvent 3, much faster.
  • Addition modules, most notably sensitivity analysis and regionalization.