This page summarizes big and global changes that need to be done to the perl API (from libdpkg-perl), some of which might require bumping the major module VERSION as they might be too intrusive.
This is an initial brain dump.
Dpkg::Interface::Storable: The Interface name here does seem superfluous, remove. https://pause.perl.org/pause/query?ACTION=pause_namingmodules
- Dpkg::Build*: Some of the modules are namespaced as Build::* some others as Build*, unify.
- Dpkg::Control: Get rid of this mess, start from scratch on a new Dpkg::Deb822 hierarchy. Some of the problems are:
- Cyclic dependencies due to the vendoring hooks applied on the base modules and the Dpkg::Vendor hierarchy using Dpkg::Control as a parent (that's why we currently have the *Core mess), instead of applying them on the specific file format modules.
- Several of the file formats are missing Dpkg::Control modules.
- The tied hash implementation makes the modules very slow.
- While a unified list of fields looks nice, it has the problem that the fields are context sensitive and they might change semantics or format depending on the file they are found in. These need to be specific to those modules. Probably some of the field function handling can be shared though, but not the field definitions.
- Dpkg::Checksums: The interface is very confusing, the same functions are used to add and checksum files and to verify that the files have the same checksums.
- Dpkg::Changelog: This hierarchy is confusing and having to use the Parse module a bit inconsistent and annoying, rethink?
- Dpkg::Shlibs: Several of the modules here are objdump and/or ELF-specific, this would need to be untangled to makes this portable to systems such as Mac OS X which uses the Mac-O format.
- Unify the new() constructor behavior for Dpkg::Interface::Storable based modules, some load by default some do not.