I had a similar question about updating an existing module's monolithic code. I wanted to add more functionality, but wanted to break apart the functions into submodules.
Perl Module API update or new release
I settled on a new package name Cisco::SNMP since that best described what my module(s) did. All the similar routines (based on Cisco SNMP MIBs) fit under that: Cisco::SNMP::Line, Cisco::SNMP::Entity, etc. This architecture also allows other people to write a Cisco::SNMP::MyModule and it seamlessly "plugs-in" to my Cisco::SNMP top level.
Why the background? 1) Shameless plug, 2) so I have an example case to reference for, 3) all the stuff I learned from this:
In my case, "Cisco" already existed so I put my modules under there. I've also put some modules under the "Net" top level. "Sec" doesn't seem to be a top level, so I'd avoid it.
I was worried about releasing Cisco::NewProtocol::Module in the future so originally thought Cisco::Management::SNMP::Line, C::M::S::Memory, etc. would extend nicely to Cisco::Management::NewProto::Mod. But really, who wants to type module names that long (even if it's only twice - once to use and once to construct). And really, who cares if my somewhat related modules aren't all grouped in one nice package - better to keep SNMP together and future new protocol separate in its own (new) module group.
I had no idea how many people used my module (probably none), but wanted to be nice to existing programs. My initial plan of extending Cisco::Management was nice, but needed three releases to update the API, produce warnings for old API usage and finally retire the old API and extend the new one. It was easier to just release a final Cisco::Management and say it's deprecated and reference the new Cisco::SNMP suite.
Hope some of this helps with your CPAN release planning.
In reply to Re: Module Architecture
by VinsWorldcom
in thread Module Architecture
by QuillMeantTen
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |