I've written some tools to read various file formats, and what I have learned from this is that it's really most useful to create:
1. a generic library for reading a file format.
2. an application dissector (i.e, a FileShark dissector) for using the generic library, and providing the API that the application (FileShark) wnats.
3. And on top of that, FileShark itself.
This is good so that other programs besides FileShark can make use of the generic libraries.
This is different from how we did wiretap, in which the logic for dissecting a packet capture is embedded directly in the wiretap module. If another application wanted to decode packet captures, it would have to link against wiretap, and use its APIs.
This would mean we might spawn some new projects that read the file formats, and those would be separate from FileShark itself. But, that's more generally useful.
Taking this a step further, maybe it's time to "harden" the APIs of the various modules of Wireshark, and also break apart Wireshark. wiretap could be removed entirely out of the Wireshark source base, and put into its own SCM repo and released independently.
Gilbert