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

Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 

Recently uploaded (20)

Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 

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