|
| 1 | +# Roadmap |
| 2 | + |
| 3 | +This file provides an overview of the direction this project is heading. It contains both likely and more aspirational changes. For more granular improvements, see the [project’s issues backlog](https://github.com/springload/draftjs_exporter/issues). |
| 4 | + |
| 5 | +## Planned |
| 6 | + |
| 7 | +> Specific, well-scoped changes that have concrete time-bound implementation plans. |
| 8 | +
|
| 9 | +## Ready |
| 10 | + |
| 11 | +> Feasible, near-term improvement ideas that are clear in scope. |
| 12 | +
|
| 13 | +### Performance regression baselines in CI |
| 14 | + |
| 15 | +Add representative content fixtures and record `make benchmark` + memray stats per PR to fail builds on slowdowns in string, lxml, and html5lib engines. |
| 16 | + |
| 17 | +### Configuration cookbook and compatibility matrix |
| 18 | + |
| 19 | +Expand docs with end-to-end samples for Django/Wagtail and pure Python usage, plus tables covering supported Python versions, optional parser versions, and Draft.js releases. |
| 20 | + |
| 21 | +### Release and maintenance automation |
| 22 | + |
| 23 | +Add a tagged-release workflow that builds with `uv`, publishes to PyPI, updates `CHANGELOG`, and generates SBOMs; surface renovate rules and dependency review dashboards. |
| 24 | + |
| 25 | +### AI-assisted configuration starter kit |
| 26 | + |
| 27 | +Provide a cookbook showing how to prompt LLMs to draft block maps/entity decorators from HTML samples, and scripts to turn that output into typed configs and fixtures. |
| 28 | + |
| 29 | +## Experimental |
| 30 | + |
| 31 | +> Possible changes that require R&D, and high-risk ideas that could bring large benefits but with likely trade-offs. |
| 32 | +
|
| 33 | +### Rust-backed DOM engine |
| 34 | + |
| 35 | +Prototype a Rust extension or PyO3 module for DOM construction to outperform the current string/lxml/html5lib engines on large documents. |
| 36 | + |
| 37 | +### Streaming and async export |
| 38 | + |
| 39 | +Explore a streaming API that yields HTML incrementally (sync/async) to reduce memory for very long ContentState exports. |
| 40 | + |
| 41 | +### Python 3.12+ only refactor |
| 42 | + |
| 43 | +After dropping 3.10/3.11, adopt 3.12+ features (faster f-strings, `typing.Self`/`TypeAliasType`, better `match` exhaustiveness) to simplify Options/State internals and improve runtime speed. |
| 44 | + |
| 45 | +## Backlog |
| 46 | + |
| 47 | +> Likely useful but lower-priority or “filler” tasks. |
| 48 | +
|
| 49 | +### Demo gallery refresh |
| 50 | + |
| 51 | +Publish a richer set of showcases (static site and notebooks) covering Wagtail, vanilla Django, Flask, and headless integrations with generated screenshots. |
| 52 | + |
| 53 | +### Draft.js export diffing |
| 54 | + |
| 55 | +Diff outputs between engines or configurations or content states. |
| 56 | + |
| 57 | +### Security review cadence |
| 58 | + |
| 59 | +Document a quarterly process to update upper bounds for html5lib/bs4/lxml, run CodeQL/SAST reports, and refresh SECURITY.md with any findings. |
0 commit comments