SlideShare a Scribd company logo
1 of 21
PAUSE::Permissions
     A lightning talk given at London Perl Workshop 2012


     The permissions model that controls who
      can upload what modules to CPAN, via
                     PAUSE

Neil Bowers                                   Andreas König
NEILB                                               ANDK
PAUSE::Permissions

    A module for querying the data behind the
                     model


Neil Bowers                          Andreas König
NEILB                                      ANDK
PAUSE and CPAN
$CPAN/modules/06perms.txt
• Who has what permissions for which modules
$CPAN/modules/06perms.txt
                                   Time::Fake,ROSULEK,f
                                   Time::Fields,PIP,f
                                   Time::Format,PGOLLUCCI,f
                                   Time::Format,ROODE,m
                                   Time::Format_XS,ROODE,f
                                   Time::Frame,PIP,f
                                   Time::Fuzzy,JQUELIN,m
                                   Time::GPS,ZEFRAM,f
Time::HiRes, JHI, c                Time::HR,AGOLOMSH,f
                                   Time::HiRes,DEWEG,c
                                   Time::HiRes,JHI,c
   module       PAUSE id
                                   Time::HiRes,ZEFRAM,m
                                   Time::HiRes::Value,PEVANS,f
                      permission   Time::Human,JHOBLITT,f
                                   Time::Implementation,FOTANGO,f
                                   Time::Implementation,STIG,c
                                   Time::Interval,AHICOX,f
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, he's 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 he's subsequently added.
Someone else's module
• If you upload a module you don't have perms for
  • The dist will make it to your author directory
  • The offending module won't 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 you're the owner

• Permissions are associated with modules, not dists,
  remember
• If you don't like a co-maint's 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 won't exist on CPAN
• But you'll 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 don't trigger permissions
• If your first release of a module is a developer
  release, you won't 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 'c'


PAUSE::Permissions,ANDK,m
PAUSE::Permissions,NEILB,c
PAUSE::Permissions::Module,ANDK,f
PAUSE::Permissions::Module,NEILB,c
Taking over a module




"Usually, after all this hassle,
we are reasonably quick at assigning co-maintenance permissions,
but don't hold your breath"
Anomaly #1: different m and f
• Modules with different 'm' and 'f' users?
• This can't 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: modules@perl.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
  • It's open season on the module name again
PAUSE::Permissions

use PAUSE::Permissions;

my $pp = PAUSE::Permissions->new;
my $mp = $pp->module_permissions('PAUSE::Permissions');

my $owner = $mp->owner;        # NEILB
my @comaints = $mp->co_maintainers; # ANDK
Finally




• Largest number of co-maints any module has?
• Tidy up your permissions please

More Related Content

Similar to PAUSE Permissions

Packaging perl (LPW2010)
Packaging perl (LPW2010)Packaging perl (LPW2010)
Packaging perl (LPW2010)p3castro
 
modern module development - Ken Barber 2012 Edinburgh Puppet Camp
modern module development - Ken Barber 2012 Edinburgh Puppet Campmodern module development - Ken Barber 2012 Edinburgh Puppet Camp
modern module development - Ken Barber 2012 Edinburgh Puppet CampPuppet
 
Perl Dist::Surveyor 2011
Perl Dist::Surveyor 2011Perl Dist::Surveyor 2011
Perl Dist::Surveyor 2011Tim Bunce
 
DockerDay2015: Getting started with Google Container Engine
DockerDay2015: Getting started with Google Container EngineDockerDay2015: Getting started with Google Container Engine
DockerDay2015: Getting started with Google Container EngineDocker-Hanoi
 
Cluster management with Kubernetes
Cluster management with KubernetesCluster management with Kubernetes
Cluster management with KubernetesSatnam Singh
 
From SaltStack to Puppet and beyond...
From SaltStack to Puppet and beyond...From SaltStack to Puppet and beyond...
From SaltStack to Puppet and beyond...Yury Bushmelev
 
EKON 24 ML_community_edition
EKON 24 ML_community_editionEKON 24 ML_community_edition
EKON 24 ML_community_editionMax Kleiner
 
走向开源:向CPAN提交模块Step By Step
走向开源:向CPAN提交模块Step By Step走向开源:向CPAN提交模块Step By Step
走向开源:向CPAN提交模块Step By Stepqiang
 
21st Century CPAN Testing: CPANci
21st Century CPAN Testing: CPANci21st Century CPAN Testing: CPANci
21st Century CPAN Testing: CPANciMike Friedman
 
CPAN 模組二三事
CPAN 模組二三事CPAN 模組二三事
CPAN 模組二三事Lin Yo-An
 
PyCourse - Self driving python course
PyCourse - Self driving python coursePyCourse - Self driving python course
PyCourse - Self driving python courseEran Shlomo
 
Developing Web Apps with Symfony2, Doctrine and MongoDB
Developing Web Apps with Symfony2, Doctrine and MongoDBDeveloping Web Apps with Symfony2, Doctrine and MongoDB
Developing Web Apps with Symfony2, Doctrine and MongoDBMongoDB
 
Mongo db bangalore 2012
Mongo db bangalore 2012Mongo db bangalore 2012
Mongo db bangalore 2012MongoDB
 
GPU cloud with Job scheduler and Container
GPU cloud with Job scheduler and ContainerGPU cloud with Job scheduler and Container
GPU cloud with Job scheduler and ContainerAndrew Yongjoon Kong
 
Resource Management of Docker
Resource Management of DockerResource Management of Docker
Resource Management of DockerSpeedyCloud
 
Custom Tile Generation in PCF
Custom Tile Generation in PCFCustom Tile Generation in PCF
Custom Tile Generation in PCFVMware Tanzu
 
Devel::NYTProf v3 - 200908 (OUTDATED, see 201008)
Devel::NYTProf v3 - 200908 (OUTDATED, see 201008)Devel::NYTProf v3 - 200908 (OUTDATED, see 201008)
Devel::NYTProf v3 - 200908 (OUTDATED, see 201008)Tim Bunce
 
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
Leonid Vasilyev  "Building, deploying and running production code at Dropbox"Leonid Vasilyev  "Building, deploying and running production code at Dropbox"
Leonid Vasilyev "Building, deploying and running production code at Dropbox"IT Event
 
Get Django, Get Hired - An opinionated guide to getting the best job, for the...
Get Django, Get Hired - An opinionated guide to getting the best job, for the...Get Django, Get Hired - An opinionated guide to getting the best job, for the...
Get Django, Get Hired - An opinionated guide to getting the best job, for the...Marcel Chastain
 

Similar to PAUSE Permissions (20)

Packaging perl (LPW2010)
Packaging perl (LPW2010)Packaging perl (LPW2010)
Packaging perl (LPW2010)
 
modern module development - Ken Barber 2012 Edinburgh Puppet Camp
modern module development - Ken Barber 2012 Edinburgh Puppet Campmodern module development - Ken Barber 2012 Edinburgh Puppet Camp
modern module development - Ken Barber 2012 Edinburgh Puppet Camp
 
Perl Dist::Surveyor 2011
Perl Dist::Surveyor 2011Perl Dist::Surveyor 2011
Perl Dist::Surveyor 2011
 
DockerDay2015: Getting started with Google Container Engine
DockerDay2015: Getting started with Google Container EngineDockerDay2015: Getting started with Google Container Engine
DockerDay2015: Getting started with Google Container Engine
 
Cluster management with Kubernetes
Cluster management with KubernetesCluster management with Kubernetes
Cluster management with Kubernetes
 
From SaltStack to Puppet and beyond...
From SaltStack to Puppet and beyond...From SaltStack to Puppet and beyond...
From SaltStack to Puppet and beyond...
 
EKON 24 ML_community_edition
EKON 24 ML_community_editionEKON 24 ML_community_edition
EKON 24 ML_community_edition
 
走向开源:向CPAN提交模块Step By Step
走向开源:向CPAN提交模块Step By Step走向开源:向CPAN提交模块Step By Step
走向开源:向CPAN提交模块Step By Step
 
CPAN Curation
CPAN CurationCPAN Curation
CPAN Curation
 
21st Century CPAN Testing: CPANci
21st Century CPAN Testing: CPANci21st Century CPAN Testing: CPANci
21st Century CPAN Testing: CPANci
 
CPAN 模組二三事
CPAN 模組二三事CPAN 模組二三事
CPAN 模組二三事
 
PyCourse - Self driving python course
PyCourse - Self driving python coursePyCourse - Self driving python course
PyCourse - Self driving python course
 
Developing Web Apps with Symfony2, Doctrine and MongoDB
Developing Web Apps with Symfony2, Doctrine and MongoDBDeveloping Web Apps with Symfony2, Doctrine and MongoDB
Developing Web Apps with Symfony2, Doctrine and MongoDB
 
Mongo db bangalore 2012
Mongo db bangalore 2012Mongo db bangalore 2012
Mongo db bangalore 2012
 
GPU cloud with Job scheduler and Container
GPU cloud with Job scheduler and ContainerGPU cloud with Job scheduler and Container
GPU cloud with Job scheduler and Container
 
Resource Management of Docker
Resource Management of DockerResource Management of Docker
Resource Management of Docker
 
Custom Tile Generation in PCF
Custom Tile Generation in PCFCustom Tile Generation in PCF
Custom Tile Generation in PCF
 
Devel::NYTProf v3 - 200908 (OUTDATED, see 201008)
Devel::NYTProf v3 - 200908 (OUTDATED, see 201008)Devel::NYTProf v3 - 200908 (OUTDATED, see 201008)
Devel::NYTProf v3 - 200908 (OUTDATED, see 201008)
 
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
Leonid Vasilyev  "Building, deploying and running production code at Dropbox"Leonid Vasilyev  "Building, deploying and running production code at Dropbox"
Leonid Vasilyev "Building, deploying and running production code at Dropbox"
 
Get Django, Get Hired - An opinionated guide to getting the best job, for the...
Get Django, Get Hired - An opinionated guide to getting the best job, for the...Get Django, Get Hired - An opinionated guide to getting the best job, for the...
Get Django, Get Hired - An opinionated guide to getting the best job, for the...
 

Recently uploaded

Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsHyundai Motor Group
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsAndrey Dotsenko
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 

Recently uploaded (20)

Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter RoadsSnow Chain-Integrated Tire for a Safe Drive on Winter Roads
Snow Chain-Integrated Tire for a Safe Drive on Winter Roads
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 

PAUSE Permissions

  • 1. PAUSE::Permissions A lightning talk given at London Perl Workshop 2012 The permissions model that controls who can upload what modules to CPAN, via PAUSE Neil Bowers Andreas König NEILB ANDK
  • 2. PAUSE::Permissions A module for querying the data behind the model Neil Bowers Andreas König NEILB ANDK
  • 4. $CPAN/modules/06perms.txt • Who has what permissions for which modules
  • 5. $CPAN/modules/06perms.txt Time::Fake,ROSULEK,f Time::Fields,PIP,f Time::Format,PGOLLUCCI,f Time::Format,ROODE,m Time::Format_XS,ROODE,f Time::Frame,PIP,f Time::Fuzzy,JQUELIN,m Time::GPS,ZEFRAM,f Time::HiRes, JHI, c Time::HR,AGOLOMSH,f Time::HiRes,DEWEG,c Time::HiRes,JHI,c module PAUSE id Time::HiRes,ZEFRAM,m Time::HiRes::Value,PEVANS,f permission Time::Human,JHOBLITT,f Time::Implementation,FOTANGO,f Time::Implementation,STIG,c Time::Interval,AHICOX,f
  • 6. 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
  • 7. 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'
  • 8. 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
  • 9. 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
  • 10. Permissions are on modules • Years back I created some Locale:: modules • I handed them to SBECK, he's 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 he's subsequently added.
  • 11. Someone else's module • If you upload a module you don't have perms for • The dist will make it to your author directory • The offending module won't be indexed (but ok modules will be) • search.cpan.org will shout at you
  • 12. Deleting dists from CPAN • You can only delete dists that you uploaded • Regardless of whether you're the owner • Permissions are associated with modules, not dists, remember • If you don't like a co-maint's release • Revoke co-maint, then supersede with a new release • But talk to them first!
  • 13. Namespace squatting • Upload a module, then delete the dist (via PAUSE) • The module won't exist on CPAN • But you'll 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")
  • 14. Developer releases • Developer releases don't trigger permissions • If your first release of a module is a developer release, you won't get any permissions. • Someone else could gazump you • "This may change" - ANDK
  • 15. Transfer of ownership • You can transfer ownership to another user • They get your 'm' or 'f' • You get 'c' PAUSE::Permissions,ANDK,m PAUSE::Permissions,NEILB,c PAUSE::Permissions::Module,ANDK,f PAUSE::Permissions::Module,NEILB,c
  • 16. Taking over a module "Usually, after all this hassle, we are reasonably quick at assigning co-maintenance permissions, but don't hold your breath"
  • 17. Anomaly #1: different m and f • Modules with different 'm' and 'f' users? • This can't 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
  • 18. 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: modules@perl.org
  • 19. 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 • It's open season on the module name again
  • 20. PAUSE::Permissions use PAUSE::Permissions; my $pp = PAUSE::Permissions->new; my $mp = $pp->module_permissions('PAUSE::Permissions'); my $owner = $mp->owner; # NEILB my @comaints = $mp->co_maintainers; # ANDK
  • 21. Finally • Largest number of co-maints any module has? • Tidy up your permissions please