34
good suggestions Mamba.
Im totally agree with using this:
$modversion['icons16'] = '../../Frameworks/moduleclasses/icons/16';
$modversion['icons32'] = '../../Frameworks/moduleclasses/icons/32';
About hard-coded uploads folder in modules:
IMO when xoops core using a hard-coded uploads folder you should not expect module developer to not use a hard-coded folder

IMO a professional content (news, gallery, download, ...) module should use an optional upload folder but a simple module can follow core ways

About forms:
IMO it is just a coding style. somebody may prefer to have all functions in the class (here: PublisherFile) while others may prefer to move some other functions (here: forms) to another file (here: PublisherFileForm).
there are other forms like block forms that a module developer may prefer to move to another file.
IMO adding one or two more function to a class is not important regarding loading performance (Im against Skalpa LOOL) because in most times we use a few functions from a class
after loading all functions