Skip to main content

backlogops

There are 3 related packages for backlog operations:

  • backlogops a collection of library functions to manipulate backlogs

  • backlogops-cli command line interface to use the functions in the library. This is just a thin wrapper around the library functions. It serves a dual purpose as both an example of how to use the library and as a tool for the user to use the library.

  • backlogops-gui graphical user interface to use the functions in the library. It is based on TkInter. The ambition is to keep it as a thin wrapper around the library.

Project status

The three packages share a version number and are released together.

The library is not meant to ever be "finished": using it for real planning keeps surfacing new ideas. Some of those will be added to backlogops itself, and others will fit better in separate packages built on top of backlogops.

Available functionality

The following functionality is available in all 3 packages:

  • Reading backlog and releases from file types that TableIO supports reading from (Currently CSV, Excel, and ODS).

  • Writing backlog and releases to file types that TableIO supports writing to (Currently CSV, Excel, ODS and 9 other file formats).

  • File format is detected from the file extension, but may be overridden.

  • Adjust release content to fit the planned release dates.

  • Create a demonstration backlog and releases (for exploring the features).

  • Estimate ready date for the backlog items based on available teams, team velocity, vacation dates, periods with half time work, etc.

  • Configure what a backlog item that nobody has estimated counts as, per backlog item level, so that an unestimated item does not make the estimated dates too optimistic.

  • Extract backlog keys at given backlog item levels.

  • Reorder the backlog so that the dependencies are satisfied.

  • Reorder the backlog so that items identified by keys in a list come first. If the key is at a higher level it will bring all items it is a parent of in front of it (recursively).

  • Reorder the backlog in release order, optionally taking dependencies into account.

  • Set planned release dates from the estimated release dates.

  • Calculate the release dates from the backlog items estimated ready dates, with a configurable buffer time.

  • Validate the backlog and releases for consistency.

  • Convert a backlog and releases between table file formats.

  • Order the releases by their planned or estimated date.

  • Rename columns when reading a file and when writing a file.

  • Map custom status names in input files to backlog item statuses.

  • Choose how backlog item levels are written: by number, by name, or both, and configure custom level names.

  • Create stand-alone input or output preset configuration files.

  • Migrate an older configuration or preset file to the current file format.

  • A wizard to create a backlog-ops configuration file with the workforce, named input and output presets, level names, status name mapping, the guess for unestimated items, how the graphical user interface shows the data, and the Jira integration.

  • An editor showing a whole configuration file or a stand-alone preset file at once, folded where it is deep, to change a single value without stepping through the wizard.

  • Encrypt the Jira API token to a pass-phrase-protected file, so that no configuration file holds the token in clear text.

  • Read a backlog and releases from Jira into a backlog and release table.

  • Write a backlog to Jira, creating a new Jira issue for each backlog item.

  • Update a backlog that is already in Jira, changing only the chosen columns.

  • Add the releases to Jira as Jira versions.

  • Update the releases in Jira, setting their dates to the planned release dates.

  • Order the releases in Jira by date, by a name list, or by the input order.

  • Rename releases in Jira, changing the Jira version names.

  • Move backlog items to a chosen anchor in the Jira rank order, following a key list.

  • Report what a Jira operation did not do. Every Jira result opens with what Jira refused or what was skipped, so a value that was not written is visible without reading the whole listing.

The operating model

The operating model that most of the functionality is designed for is that the teams work off a single backlog in the order of the backlog. The backlog items are ordered by priority and dependencies to allow the teams to work in the backlog order. Each backlog item and each release may have a planned ready date, that records what has been communicated to the customer. Each backlog item and each release may have an estimated ready date, that is calculated from the current backlog state, the team velocity, and what we know about the availability of the team members.

The backlog item fields

Each backlog item has the following fields that are used by the algorithms in the library:

  • key The key of the backlog item. Required. Must be unique. Must not be empty, must not contain whitespace and must not contain any of the characters , . ; : ( ) [ ] { }.

  • level The level of the backlog item. Required. Must be an integer.

  • title The title of the backlog item. Required.

  • story_points The story points of the backlog item. Optional. An item with no story points is one that nobody has estimated yet, and what such an item is worked with when a completion date is estimated is configured. May be a fraction, such as 0.5.

  • status The status of the backlog item. Required.

  • parent_key The key of the parent backlog item. Optional. Must exist as a key in the backlog. Parent keys are used to build the hierarchy of the backlog. The parent key must be at a higher level than the current item. Parent keys introduce implicit dependencies between items: the current item cannot start before the parent item starts, and the parent item cannot finish before all its children have finished.

  • release The release of the backlog item. Optional. Must not be empty string, must not start or end with whitespace, and must not contain tabs, newlines or control characters.

  • team The team responsible for the backlog item. Optional. Must not be empty string. Must be a valid team name. If None the item can be done by any team. If not None. the item can only be done by the specified team.

  • depends_on_f2s The list of keys of the backlog items that must have been finished before the current item can start. May be empty.

  • depends_on_f2f The list of keys of the backlog items that must have been finished before the current item can finish. May be empty.

  • depends_on_s2s The list of keys of the backlog items that must have been started before the current item can start. May be empty.

  • planned_ready_date The planned ready date of the backlog item. The date that is communicated to the customer. Optional.

  • estimated_ready_date The estimated ready date of the backlog item. Optional.

Additionally each backlog item can have any number of other fields.

Installing backlogops

On macOS and Linux

To install backlogops on macOS and Linux, run the following command:

pip3 install --upgrade backlogops

On Microsoft Windows

To install backlogops on Microsoft Windows, run the following command:

pip install --upgrade backlogops

Using backlogops documentation

For a better understanding of how to use the library, CLI or GUI, see the user documentation: Using backlogops

API documentation

For more detailed code documentation, see the API documentation:

Library main entry points

All names an application programmer is most likely to need are re-exported from the top-level backlogops package, so they can be imported directly, for example:

from backlogops import (
    read_backlog_releases, order_by_dependencies, estimate_ready_date,
    get_demo_backlog)

Core data model

  • Backlog, BacklogItem, Status: the backlog and its items.

  • Releases, Release: the planned releases.

  • BacklogReleases: a backlog together with its releases.

  • AvailableTeams, Team, Person, Membership: the workforce that the date estimation uses.

Reading and writing

  • read_backlog_releases, write_backlog_releases: read and write a backlog and its releases from and to a table file.

  • read_available_teams, write_available_teams: read and write the available-teams workforce on its own.

  • read_backlog_ops_config, write_backlog_ops_config, get_backlog_ops_config: read, write, and look up the top-level BacklogOpsConfig (workforce, named input and output presets, the status-name map, the guess for unestimated items, the GUI display settings, the Jira configuration, and the optional backlog item levels).

  • read_key_list, write_key_list: read and write a list of keys.

  • get_demo_backlog: create a demonstration backlog and releases.

Editing a configuration

  • CONFIG_DESCRIPTIONS, INPUT_DESCRIPTIONS, OUTPUT_DESCRIPTIONS: what each configuration member is for, shown below it in the editor. A member has no docstring at runtime, so this is what the editor is told; descriptions_for picks the mapping of one configuration class. The nested TableIO endpoint is described by tableio-cfg-json, which is asked for that text rather than having it repeated here.

  • EDIT_SETTINGS: what the editor may do to a configuration file of this application, including keeping what it writes over as a .bak file.

Operations

  • order_by_dependencies: reorder the backlog so that dependencies are satisfied.

  • move_keys_first: reorder so that listed keys (and their children) come first.

  • backlog_in_release_order: reorder the backlog to follow the release order, optionally honouring dependencies.

  • estimate_ready_date, set_plan_from_estimate: estimate ready dates and set planned dates from the estimate.

  • DefaultStoryPoints, use_story_points: what a backlog item that nobody has estimated counts as, and the story points to work any one item with. The estimate uses them, so an unestimated item does not count as free.

  • estimate_release_dates, release_plan_on_estimate, adjust_release_content: estimate and plan release dates, and adjust release content to fit the planned dates.

  • check_backlog_consistency: validate the backlog and releases for consistency.

Jira

  • read_backlog_from_jira: read a backlog and its releases from Jira.

  • add_backlog_to_jira, update_backlog_in_jira: create Jira issues for the backlog items, or update selected fields of existing issues.

  • add_releases_to_jira, update_releases_in_jira: create Jira versions for the releases, or update their dates.

  • order_releases_in_jira, rename_releases_in_jira: order and rename the Jira versions.

  • jira_rank_backlog, jira_rank_move_keys: rank backlog items in the Jira rank order.

  • JiraIOConfig, JiraPreset: the Jira connection and preset configuration.

  • format_add_result, format_backlog_updates, format_release_result, format_release_updates, format_rank_result, format_order_result, format_rename_result: turn the result of a Jira operation into a listing that opens with what Jira refused or what was skipped. report_has_problems answers whether such a listing reports something that did not happen, which is what marks it in a user interface.

For the full set of public names see the API documentation linked above.

Test summary

  • Test result: 2555 passed, 1 deselected in 58s
  • No flake8 warnings.
  • No mypy errors found.
  • No pylint warnings.
  • No python layout warnings.
  • Built version(s): 1.3
  • Build and test using Python 3.14.7

Metadata

Release files for backlogops 1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for backlogops 1.3
File Size Uploaded
backlogops-1.3.tar.gz 188.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for backlogops 1.3
File Interpreter ABI Platform
backlogops-1.3-py3-none-any.whl Python 3 none any Details

Total release size: 412.8 kB

Release files / backlogops-1.3.tar.gz

Download URL backlogops-1.3.tar.gz
Size 188.3 kB
Tags Source
SHA-256 checksum
How to use checksums
1472100fd190a3c9ac9ea3b67161cd3edbf5b54843c1087b06f98d6a79077089
BLAKE2b-256 checksum
How to use checksums
61d9e08665cc7110bf105bdb01647fa988ed00fe5589a434264a85a5d3202b32
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release files / backlogops-1.3-py3-none-any.whl

Download URL backlogops-1.3-py3-none-any.whl
Size 224.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1a3d78bcdc3e7c406e0602258340929e898e19eb91670d49505d4583f2c9e8ea
BLAKE2b-256 checksum
How to use checksums
73022a82ca0d6381f7e0abde116a5ec2512e485a30e42ae13758133a90afb71f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.7

Release history Release notifications | RSS feed

1.4

2 release files

This release

1.3 This release

2 release files

1.2

2 release files

1.1

2 release files

1.0

2 release files

0.9

2 release files

0.8

2 release files

0.7

2 release files

0.6

2 release files

0.5

2 release files

0.4

2 release files

0.3

2 release files

0.2

2 release files

0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page