Haru Free PDF Library
Roadmap towards version 3.0.0

Below is a list of things to be added, fixed or clarified in Haru library to create version 3.0.0 of it.

Documentation

Best libraries have excellent documentation.

  • Complete Doxygen documentation by adding documentation strings for all library items
  • Check documentation consistency
    • Grammar correctness
    • Periods usage
    • Camel case and snake case usage in parameters
    • Native English speaker documentation check
  • Write conceptual pages about library topics (Fonts, Embedding, Security, UTF-8 and so on)
  • Create full-fledged language tutorial, covering all library topics
  • Translate documentation to other languages
  • Translate tutorial to other languages

User library features

This library can be best in the class.

Several features should be added:

  • More paper formats Done PR #2
  • RTL writing
  • More image format support
  • Bar codes support
  • Footer/header management
  • No-write page regions
  • Text hyphenation
  • Table of contents generation
  • Pattern fill
  • Page breaks
  • Page compression

PDF compliance

PDF generation is expected to be as close as possible to PDF standard.

  • Check which PDF features are covered
  • Propose separate roadmap to cover PDF features missed
  • Decide whether PDF 2.0 generation should be created

Code coverage

Every part of best libraries has some attention.

  • Cross-link functions (add links See ... wherever possible) in documentation
  • Create demo programs for all library topics and (ideally) for every single function of a library
  • Cross-link functions to demo programs in documentation This is done by Doxygen automatically
  • Check documentation topics Error codes for every function, possibly with some kind of nesting
  • (Ideally) Make previous check automatic and put it to CI/CD

Testing

Best libraries have excessive testing.

  • Introduce library self-testing features
    • add unit-testing framework
    • add tests with memory pressure (check OOM error codes)
  • Create test for all error codes for each function in a library

Benchmarks

Library is written in C, so it should be performant.

  • Create benchmarks for library
  • Create benchmarks report for CI/CD integration

Infrastructure

Best libraries are predictable and are well integrated.

  • Propose language binding generator, similar to https://gi.readthedocs.io/en/latest/
  • Create pkg-config file for library for *nix systems Done 8de2e83
  • Create FindHPDF module to CMake
  • Make CMake build system more configurable
  • Fix *.deb package creation to move header files from include/ to include/hpdf-x.y.z/ on *nix systems Done ed714e3
  • Port library to different OS, like Haiku OS or Kaspersky OS
  • Integrate testing framework to CI/CD
  • Integrate benchmarks to CI/CD