Back to .md Directory

TODO List - OpenType Feature Freezer

Lists 100+ planned improvements for a font tool: documentation, testing, refactoring, CI/CD, GUI, CLI, performance, and community tasks.

May 2, 2026
0 downloads
3 views
ai rag eval workflow
View source

What this file does

Lists 100+ planned improvements for a font tool: documentation, testing, refactoring, CI/CD, GUI, CLI, performance, and community tasks.

When to use it

  • You maintain a font processing tool and need a structured backlog
  • You want to see what a mature open-source project's roadmap looks like
  • You are planning a major refactor and need a checklist of code quality items
  • You are evaluating whether to contribute to this project and want to see its priorities

Assumes this stack

PythonfontToolsGitHub ActionsSphinxPyInstaller

TODO List - OpenType Feature Freezer

Immediate Priority Tasks

Documentation

  • Add comprehensive docstrings to all classes and methods in __init__.py
  • Add docstrings to all functions in cli.py
  • Create inline code comments for complex logic
  • Add type hints to remaining untyped functions
  • Write API documentation using Sphinx
  • Update README.md with badges and better examples
  • Create CONTRIBUTING.md guide
  • Add troubleshooting section to documentation

Error Handling

  • Create exceptions.py with custom exception classes
  • Replace generic try/except blocks with specific exceptions
  • Add input validation for font files
  • Validate feature tags before processing
  • Improve error messages with actionable suggestions
  • Add proper logging configuration

Testing

  • Increase test coverage to >90%
  • Add unit tests for error conditions
  • Create integration tests for full workflows
  • Add property-based tests using Hypothesis
  • Test with various font formats (TTF, OTF, WOFF, WOFF2)
  • Add performance benchmarks

CI/CD Setup

  • Create GitHub Actions workflow for testing
  • Add matrix testing for Python 3.8-3.12
  • Set up cross-platform testing (Windows, macOS, Linux)
  • Configure automatic PyPI releases
  • Add code coverage reporting
  • Set up dependabot for dependency updates

Short-term Tasks (1-2 months)

Code Refactoring

  • Split large functions into smaller, focused methods
  • Extract substitution logic into separate classes
  • Replace SimpleNamespace with dataclasses
  • Implement proper separation of concerns
  • Add design patterns (Strategy, Factory)
  • Remove code duplication
  • Split RemapByOTL class into smaller, single-responsibility modules/classes (e.g., FontIOHandler, FeatureProcessor, CmapRemapper, FontNamer, Reporter)
  • Split tests/test_rename.py into tests/test_rename_ttf.py and tests/test_rename_otf.py
  • Extract get_version from app/dmgbuild_settings.py to app/utils.py
  • Extract icon_from_app from app/dmgbuild_settings.py to app/mac_app_utils.py

Build System

  • Simplify PyInstaller specs
  • Investigate modern packaging alternatives (Briefcase, PyOxidizer)
  • Create unified build process for CLI and GUI
  • Add build scripts for all platforms
  • Create automated release scripts

GUI Improvements

  • Evaluate modern GUI frameworks as Gooey alternatives
  • Add drag-and-drop support for font files
  • Implement batch processing interface
  • Add preferences/settings persistence
  • Create font feature preview
  • Improve error reporting in GUI

Medium-term Tasks (3-6 months)

CLI Enhancements

  • Add Rich library for beautiful terminal output
  • Implement progress bars for operations
  • Add interactive mode for guided usage
  • Create shell completion scripts
  • Add --dry-run option
  • Implement verbose logging levels

Distribution

  • Create Homebrew formula for macOS
  • Create Chocolatey package for Windows
  • Submit to Linux package repositories
  • Create Docker images
  • Set up Docker Hub automated builds
  • Create portable versions

Performance

  • Profile code for bottlenecks
  • Optimize font processing algorithms
  • Add multiprocessing for batch operations
  • Implement caching for repeated operations
  • Reduce memory usage for large fonts

Long-term Tasks (6+ months)

Advanced Features

  • Add variable font support
  • Implement color font handling
  • Create font feature analysis tools
  • Add font comparison utilities
  • Support for more substitution types
  • Implement feature interaction detection

API and Integration

  • Create Python API for programmatic use
  • Develop RESTful web service
  • Build WebAssembly version
  • Create plugin system
  • Add webhook support
  • Develop browser extension

Community

  • Create project website
  • Set up discussion forum
  • Write tutorials and guides
  • Create video demonstrations
  • Establish code of conduct
  • Build contributor community

Bug Fixes and Maintenance

Known Issues

  • Fix potential Unicode handling edge cases
  • Resolve memory leaks in batch processing
  • Handle corrupted font files gracefully
  • Fix GUI freezing on large operations
  • Improve cross-platform path handling

Technical Debt

  • Remove deprecated function usage
  • Update to latest fontTools APIs
  • Clean up legacy code
  • Standardize coding style
  • Remove unused imports and variables
  • Optimize import statements

Documentation Tasks

User Documentation

  • Create user manual
  • Write FAQ section
  • Add cookbook with recipes
  • Create quick start guide
  • Document all CLI options
  • Add GUI screenshots

Developer Documentation

  • Document architecture decisions
  • Create development setup guide
  • Write testing guidelines
  • Document release process
  • Add code style guide
  • Create plugin development guide

Quality Assurance

Code Quality

  • Achieve 100% type coverage
  • Fix all Ruff warnings
  • Add security scanning
  • Implement complexity limits
  • Add mutation testing
  • Create quality dashboards

User Experience

  • Conduct usability testing
  • Gather user feedback
  • Implement telemetry (opt-in)
  • Create user surveys
  • Analyze usage patterns
  • Improve based on feedback

What's inside

9 priority sections with 100+ checkbox items, grouped by Immediate, Short-term, Medium-term, Long-term, Bug Fixes, Documentation, and Quality Assurance.

Change this for your project

  • Replace twardoch/fonttools-opentype-feature-freezer with your own repository name
  • Replace app/dmgbuild_settings.py and app/utils.py with your own module paths
  • Replace tests/test_rename.py with your own test file names

Where it goes

Keep alongside your test suite. Used to define and score model evaluations.

Worth borrowing

  • Organize tasks by time horizon (Immediate, Short-term, Medium-term, Long-term) to clarify priorities
  • Include a separate Bug Fixes and Technical Debt section to keep maintenance visible
  • Split large classes into single-responsibility modules as a concrete refactoring pattern

Related Documents