Upload a new module• If you’re the first to upload a module to CPAN, you get the f permission (“first come”) Module::Path,NEILB,f• You’re considered the owner
Register module on module list• If you register the module, you get an m permission Graph::Reader,NEILB,m• Internally you also still have f• m takes precedence over f
You register modules, not dists• I registered PAUSE::Permissions• The dist also includes PAUSE::Permissions::Module PAUSE::Permissions,NEILB,m PAUSE::Permissions::Module,NEILB,f• What should you do with other modules in dists? • If they’re public-facing, consider registering them • Otherwise f is fine
Co-maintainers• The owner of a module can grant co-maint perms • Using the PAUSE web interface• They get a c permission. PAUSE::Permissions,ANDK,c PAUSE::Permissions,NEILB,m PAUSE::Permissions::Module,ANDK,c PAUSE::Permissions::Module,NEILB,f• Co-maints can upload new versions of a module• Co-maints cannot grant co-maint permissions
Permissions are on modules• Years back I created some Locale:: modules• I handed them to SBECK, hes expanded the dist Locale::Codes,SBECK,f Locale::Constants,NEILB,c Locale::Codes::Constants,SBECK,f Locale::Country,NEILB,c Locale::Codes::Country,SBECK,f … lots more modules … Locale::Currency,NEILB,c Locale::Constants,SBECK,f Locale::Country,SBECK,m Locale::Language,NEILB,c Locale::CountryCodes,SBECK,f Locale::Script,NEILB,c Locale::Currency,SBECK,m Locale::CurrencyCodes,SBECK,f Locale::Language,SBECK,m Locale::LanguageCodes,SBECK,f Locale::Script,SBECK,f Locale::ScriptCodes,SBECK,f• I have co-maint on the original modules • but not on those hes subsequently added.
Someone elses module• If you upload a module you dont have perms for • The dist will make it to your author directory • The offending module wont be indexed (but ok modules will be)• search.cpan.org will shout at you
Deleting dists from CPAN• You can only delete dists that you uploaded • Regardless of whether youre the owner• Permissions are associated with modules, not dists, remember• If you dont like a co-maints release • Revoke co-maint, then supersede with a new release • But talk to them first!
Namespace squatting• Upload a module, then delete the dist (via PAUSE)• The module wont exist on CPAN• But youll have an f permission No::Such::Module,NEILB,f• No-one else will be able to use that name• Free it up using PAUSE ("Change Permissions")
Developer releases• Developer releases dont trigger permissions• If your first release of a module is a developer release, you wont get any permissions. • Someone else could gazump you• "This may change" - ANDK
Transfer of ownership• You can transfer ownership to another user• They get your m or f• You get cPAUSE::Permissions,ANDK,mPAUSE::Permissions,NEILB,cPAUSE::Permissions::Module,ANDK,fPAUSE::Permissions::Module,NEILB,c
Taking over a module"Usually, after all this hassle,we are reasonably quick at assigning co-maintenance permissions,but dont hold your breath"
Anomaly #1: different m and f• Modules with different m and f users?• This cant happen TM Catalyst::Engine::Apache,AGRUNDMA,m Catalyst::Engine::Apache,MSTROUT,f• But when it does • m is the owner • f is treated as a co-maint• There are some special conventions • Eg P5P has f on some modules Tie::SubstrHash,LWALL,m Tie::SubstrHash,P5P,f
Anomaly #2: modules with no owner• There are 1000+ modules with co-maints only DBIx::Class::Loader,AMS,c DBIx::Class::Loader,DMAKI,c DBIx::Class::Loader,KRAIH,c DBIx::Class::Loader,MRAMBERG,c DBIx::Class::Loader,SRI,c DBIx::Class::Loader,TEMPIRE,c• How does this come about? • You can give up your permissions: "Change Permissions" on PAUSE• Make your case to PAUSE admins for ownership • PAUSE Admins: firstname.lastname@example.org
Anomaly #3: modules with no perms• Some modules are on CPAN but not in 06perms.txt• Upload a module, then give up your f permission • Its open season on the module name again