PDF::API2
This is a Perl distribution I use heavily at work, so I adopted it back in 2010 after the previous maintainer decided to abandon it.
Mostly, my goals are to continue to ensure backward compatibility, gradually improve the code, and fix issues that come up.
It’s a challenge of a project to work on, for a variety of reasons:
Some of the code goes back to the early 1990s. I’m pretty sure I remember seeing a comment from 1994 in one of the files. That roughly coincides with Perl 5.0, for reference, and I definitely got the sense that the module was already established by then, so it may even predate Perl 5. The coding styles (there have been multiple developers) aren’t exactly modern.
The documentation is limited, which means that users have had to figure out how it works from the code, which means that changing the code has a higher likelihood of breaking existing applications.
The existing code does almost no input validation. This leads to things that happen to work but shouldn’t, which subsequently break when the code gets fixed or cleaned up.
Objects aren’t being used, so any change to any data structure will probably break existing applications.
There was no test suite, just some undocumented example scripts, some of which didn’t work any more.
It’s a fairly popular module, quietly generating or processing PDFs for many businesses around the world as part of critical applications.
Don’t get me wrong – I like this library a lot, and have few complaints toward any of the previous developers. Most of the time, anyway. Tinkering with it lets me stretch and grow my Perl skills in a different direction than I do at work.