Development Roadmap

Gregory Brown edited this page Feb 20, 2015 · 57 revisions

NOTE: This document is out of date. However, many of the things below remain on the TODO list for future Prawn releases.

This roadmap will outline the path to Prawn 2.0. It's a work in progress!

  • All features with open confirmed bugs need to either be fixed, gracefully degraded, extracted, or removed from Prawn entirely before the 2.0 release. (This doesn't imply that prawn will be bug free (far from it!), but that we won't go into 2.0 with a backlog of unresolved issues).

  • API Documentation and manual need to be comprehensively audited for formatting issues, unclear or incorrect information, etc.

  • Prawn should not directly implement PDF features, but instead rely on PDF::Core wrapper functions for all PDF-related operations. (i.e. we should ban calls to add_content or direct manipulation of the PDF object store in Prawn if possible)

  • PDF::Core should not implement derived functionality or state. For example, PDF::Core should implement curve but not circle, should implement draw_text! but not text_direction, etc. Every feature and piece of state in PDF::Core should be documented with a reference to a section of the PDF specification... if that doesn't exist, it doesn't belong there!

  • Prawn-specific tests found in PDF::Core (if any) should be moved up into Prawn. PDF::Core specific tests (which there are many) in Prawn should be moved into PDF::Core.

  • PDF::Core should have at least basic documentation and a clear README for those who want to use it outside of Prawn. (Even if we don't officially support external use at the time Prawn 2.0 is released)

  • Prawn's extension API should be comprehensively documented (perhaps even give it its own manual or a top-level section in the main manual) along with YARD docs. A guide and/or reference project should be given for creating extensions.

  • All stable features should be checked for design flaws, because we have an opportunity to change behavior in 2.0. Still, when in doubt, preserve API compatibility.

  • All features currently marked "experimental" in Prawn 1.x need to either be stabilized, cut, or extracted before the 2.0 release.

  • Do what it takes to commit to full semantic versioning for 2.0 and onward. This includes the extension API.

  • "Creating PDF with Ruby" book completed in time for the 2.0 release (this is for Greg and isn't an absolute blocker, but would be nice!)