Skip to content

Latest commit

 

History

History
58 lines (36 loc) · 5.49 KB

File metadata and controls

58 lines (36 loc) · 5.49 KB

Roadmap

GraphCompose is solo-maintained. This roadmap is a direction, not a contract. Dates are intentionally omitted. Concrete work is tracked in issues and shipped work is recorded in CHANGELOG.md.

Now — after 2.1

Consolidation ahead of the next patch: the documentation and contributor surfaces are being brought onto the 2.x vocabulary, the CI guards onto what they actually run, and the committed example assets onto a regeneration path. Open engineering threads are tracked in issues — vector clipping for the PPTX backend, backend-neutral font measurement, and font-face selection are the live ones.

Current stable — 2.1

The 2.1.0 GA is the current stable line. Its headline is the fixed-layout PPTX render backend: the same DocumentSession that prints a PDF also emits an editable PowerPoint deck — one page per slide, identical geometry by construction, native shapes. It ships as @Beta (Experimental) while its API shape settles; the geometry identity with the PDF backend is a design invariant, not subject to change. See the API stability policy and the backend capability matrix.

2.1 also hardened pagination: keepWithNext() for headings, orphaned-heading fixes ahead of paragraphs, tables and lists, and the layered CV presets wired to the keep-with-next policy.

Full detail in CHANGELOG.md under v2.1.0.

Previously — 2.0

The 2.0.0 GA opened the 2.x line. 2.0 was about packaging and internal hygiene, not new authoring API — binary-breaking by design.

  • Modular split — the single jar is split into graph-compose-core plus graph-compose-render-pdf / graph-compose-render-docx / graph-compose-render-pptx / graph-compose-templates / graph-compose-testing, with render backends discovered through a ServiceLoader SPI. graph-compose stays a drop-in wrapper (core + render-pdf) so existing PDF callers upgrade unchanged. See the 2.0 modules migration guide and ADR 0016.
  • Legacy removal — the dead Entity-Component-System execution layer and the deprecated (forRemoval) public API are gone; the classic template presets are replaced by the layered templates.* stack on BrandTheme.
  • Release & publishing pipeline — multi-module Maven Central publishing, the core/-layout reactor (./mvnw clean verify at the root builds everything), and the cut / tag / GA runbook.
  • Compatibility tests — the guard, snapshot, and visual-regression suites that prove the split left rendered output unchanged.

The v1.9.x line receives critical fixes only.

Next — post-2.0 engineering

Committed internal direction for the post-2.0 line: refactors, scale work, and tooling that do not change the public authoring API. Tracked in docs/roadmaps/post-2.0-engineering.md.

  • Decompose the layout hot files — split LayoutCompiler and TextFlowSupport along their natural seams into individually-tested collaborators, with layout output unchanged.
  • Per-module binary-compatibility baselines — now that the 2.0 GA artifacts are published, switch japicmp from the single-artifact baseline to per-module baselines in break-on-incompatible mode.

Later (directional)

Not committed. Reflects current thinking; priorities may shift based on user feedback and adoption signals.

  • PPTX beyond beta. Graduate the fixed-layout PPTX backend from @Beta to stable and close the remaining fidelity gaps — true vector clipping instead of the raster fallback (#413), exact numeric dash arrays, and distinct per-corner radii.
  • DOCX visibility for unsupported nodes. Make currently-silent skips (shape, line, ellipse, barcode) loud — minimum a warn log, ideally a strict-mode flag that fails instead of dropping content silently.
  • Block-level alignment for fixed-size flow children. Paths, images, layer stacks, shape containers and barcodes currently left-align in a flow; centring one means wrapping it in a full-width ShapeContainer just to use its CENTER anchor. Add a per-node horizontal align (left / centre / right — the margin: auto / align(center) analogue) so a fixed box can place itself in the flow directly. Surfaced by the v1.8 SVG icon-gallery and feature-catalog work.
  • Backend-neutral layout measurement. Decouple measurement from PDFBox-specific resources so non-PDF backends do not pull PDFBox into the dependency graph.
  • DOCX maturity. Either expand DOCX coverage toward PDF parity, or move DOCX behind an explicitly experimental flag.
  • Property-based testing. Expand the @Property layout-invariant seed to random table spans, pagination edge cases, and deeply nested layouts.
  • Public Javadoc site. Generated and hosted, kept in sync with releases.

Not on the roadmap

  • Hosted PDF rendering service.
  • WYSIWYG editor.
  • HTML / CSS input.
  • Browser-side rendering.

See README — What GraphCompose is not.

Feedback

Have a use case that should be on this list, or strong feelings about priority? Open a discussion issue or comment on the relevant tracked issue.