Docker Containerization/Build Process

Brief description of feature (~1 paragraph).

Motivation

Why will this be worthwhile feature for GridLAB-D™? Why now? Who will it help (developers or users)? How will it help them?

Feature Objective

What problem will this feature solve?

Developer Goals

What do the developers want to see out of this feature?

User Goals

What do the users hope to see out of this feature?

Functionality

How will devs/users interact with this feature? Will it be behind-the-scenes, a new module, method, or interface?

Class/Sequence Diagrams

If apropriate, document the feature using class or sequence diagrams.

classDiagram GLD <|-- GLDModel GLDModel <|-- GLDObjHolder GLDObjHolder <|-- GLDObj GLD: gld - GridLAB-D™ GLD: wd - Path GLD: sim_running - bool GLD: sim_time - DateTime GLD:get_model() GLD:set_install_root(path|str) -> None GLD:get_install_root() -> str GLD:get_executable_path() -> str class GLDModel{ model: _GLDObjHolder extendable: bool _load_model() -> None } class GLDObjHolder{ _model: dict[_GLDObj] extendable: bool __init__() __setitem__(key: str, value: Any) -> str __getitem__(key: str) -> _GLDObj __delitem__(key: str) -> str __iter__() __reversed__() __contains__(key: str) __repr__() -> str } class GLDObj{ _data = dict __init__() __setitem__(key: str, value: Any) -> str __getitem__(key: str) -> Any __iter__() __reversed__() __contains__(key: str) __repr__() -> str }

Itemized Subfeatures

  • Determine expected release approach (Docker, binary, both?) - December 31, 2025 - revised to January 31, 2026
  • Initial Docker build/setup - February 13, 2026 - revised to February 27, 2026
    • Q: is GridLAB-D™ currently distributed in any way outside of a user cloning the github repo? If so, how is it currently done? If going with docker, are we wanting to put the Docker image into a registry like Docker Hub for distribution?
    • A: Right now, we do technically offer precompiled binaries/installers for Windows/Mac/Linux, but that's been becoming especially challenging on Mac (and building from source is recommended). With a Docker image, my hope is we will publish it to a common repo like the Docker Hub.
  • Integration of Docker publish/final release process into automation/CI/CD pipeline - March 15, 2026