Title: [ENH]: Backend versioning · Issue #30559 · matplotlib/matplotlib · GitHub
Open Graph Title: [ENH]: Backend versioning · Issue #30559 · matplotlib/matplotlib
X Title: [ENH]: Backend versioning · Issue #30559 · matplotlib/matplotlib
Description: Problem Beyond our builtin backends there are a few third party ones. It is extremely difficult to evolve the backend API without hard-breaking these third party backends. Issues with the current state: We've jumed hoops to work around A...
Open Graph Description: Problem Beyond our builtin backends there are a few third party ones. It is extremely difficult to evolve the backend API without hard-breaking these third party backends. Issues with the current s...
X Description: Problem Beyond our builtin backends there are a few third party ones. It is extremely difficult to evolve the backend API without hard-breaking these third party backends. Issues with the current s...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/30559
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"[ENH]: Backend versioning","articleBody":"### Problem\n\nBeyond our builtin backends there are a few third party ones. It is extremely difficult to evolve the backend API without hard-breaking these third party backends.\n\nIssues with the current state:\n- We've jumed hoops to work around API incompatibility in #29044\n- #30547 suggests a one-time API break to make changes like #29044 more tractable in the future\n- #30554 also introduces new functionality in the backend that should be propagated to all backends\n\n\n\n\n### Proposed solution\n\nWe define a backend version. It unambiguously describes the expected functionality of an interface. \n\n- The current is version 1.0\n- API changes result in a new backend version.\n- Backends must define the version they are written for. All backends that do not explicitly specify a version are considered to be version 1.0.\n- A Matplotlib version can decide to accept multiple backend versions, e.g. we could at some point accept v1.0, v2.0 and v3.0 and selectively call appropriate functions.\n- We may later decide to drop support for v1.0 in which case we'd reject to load backends of that version.\n\nThis should allow to evolve the backend API and third partry backends alongside with grace transition periods so that we maintain maximal compatibility throughout the evolution.","author":{"url":"https://github.com/timhoffm","@type":"Person","name":"timhoffm"},"datePublished":"2025-09-14T21:32:13.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":6},"url":"https://github.com/30559/matplotlib/issues/30559"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:cc400b89-1d61-bf60-dcea-e26eda226220 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 9C2C:12E3C6:1103390:169922F:6A51C53E |
| html-safe-nonce | dbace7dbafdeecd1e893ff20bbe7394af93a89a2f7a8186891bd68140fabbd31 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5QzJDOjEyRTNDNjoxMTAzMzkwOjE2OTkyMkY6NkE1MUM1M0UiLCJ2aXNpdG9yX2lkIjoiMjY2Njg5ODkzNDIyNDUwNDEyNiIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | db2a30997aa54733e2334e3e9aa95fbc9afb5c25e6e5570a5caee00e4fe6a00a |
| hovercard-subject-tag | issue:3415611006 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/matplotlib/matplotlib/30559/issue_layout |
| twitter:image | https://opengraph.githubassets.com/4aaaf21640ec7e186f7273acbcae564886f8d67ee66105b2bb94a3ca95140d8a/matplotlib/matplotlib/issues/30559 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/4aaaf21640ec7e186f7273acbcae564886f8d67ee66105b2bb94a3ca95140d8a/matplotlib/matplotlib/issues/30559 |
| og:image:alt | Problem Beyond our builtin backends there are a few third party ones. It is extremely difficult to evolve the backend API without hard-breaking these third party backends. Issues with the current s... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | timhoffm |
| hostname | github.com |
| expected-hostname | github.com |
| None | b9a586c06a05a7a86fc7e3f4dbd03e42f6869085879aa184aa6369456dbd50fb |
| turbo-cache-control | no-preview |
| go-import | github.com/matplotlib/matplotlib git https://github.com/matplotlib/matplotlib.git |
| octolytics-dimension-user_id | 215947 |
| octolytics-dimension-user_login | matplotlib |
| octolytics-dimension-repository_id | 1385122 |
| octolytics-dimension-repository_nwo | matplotlib/matplotlib |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 1385122 |
| octolytics-dimension-repository_network_root_nwo | matplotlib/matplotlib |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 7aed05249554b889eb33d002851a973eebcc7e91 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width