SlideShare ist ein Scribd-Unternehmen logo
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

Weitere ähnliche Inhalte

Ähnlich wie 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 Camp
Puppet
 
Perl Dist::Surveyor 2011
Perl Dist::Surveyor 2011Perl Dist::Surveyor 2011
Perl Dist::Surveyor 2011
Tim 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 Engine
Docker-Hanoi
 
Cluster management with Kubernetes
Cluster management with KubernetesCluster management with Kubernetes
Cluster management with Kubernetes
Satnam 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_edition
Max Kleiner
 
走向开源:向CPAN提交模块Step By Step
走向开源:向CPAN提交模块Step By Step走向开源:向CPAN提交模块Step By Step
走向开源:向CPAN提交模块Step By Step
qiang
 
CPAN Curation
CPAN CurationCPAN Curation
CPAN Curation
neilbowers
 
21st Century CPAN Testing: CPANci
21st Century CPAN Testing: CPANci21st Century CPAN Testing: CPANci
21st Century CPAN Testing: CPANci
Mike 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 course
Eran 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 MongoDB
MongoDB
 
Mongo db bangalore 2012
Mongo db bangalore 2012Mongo db bangalore 2012
Mongo db bangalore 2012
MongoDB
 
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
Andrew Yongjoon Kong
 
Resource Management of Docker
Resource Management of DockerResource Management of Docker
Resource Management of Docker
SpeedyCloud
 
Custom Tile Generation in PCF
Custom Tile Generation in PCFCustom Tile Generation in PCF
Custom Tile Generation in PCF
VMware 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
 

Ähnlich wie 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...
 

Kürzlich hochgeladen

“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
Edge AI and Vision Alliance
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
Fwdays
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
Ajin Abraham
 
From Natural Language to Structured Solr Queries using LLMs
From Natural Language to Structured Solr Queries using LLMsFrom Natural Language to Structured Solr Queries using LLMs
From Natural Language to Structured Solr Queries using LLMs
Sease
 
inQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
inQuba Webinar Mastering Customer Journey Management with Dr Graham HillinQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
inQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
LizaNolte
 
Demystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through StorytellingDemystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through Storytelling
Enterprise Knowledge
 
Christine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptxChristine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptx
christinelarrosa
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
Must Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during MigrationMust Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during Migration
Mydbops
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
Miro Wengner
 
Essentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation ParametersEssentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation Parameters
Safe Software
 
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
DanBrown980551
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024
Vadym Kazulkin
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
Javier Junquera
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
Jason Yip
 
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
zjhamm304
 
"What does it really mean for your system to be available, or how to define w...
"What does it really mean for your system to be available, or how to define w..."What does it really mean for your system to be available, or how to define w...
"What does it really mean for your system to be available, or how to define w...
Fwdays
 
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptxPRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
christinelarrosa
 

Kürzlich hochgeladen (20)

“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
“Temporal Event Neural Networks: A More Efficient Alternative to the Transfor...
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
 
From Natural Language to Structured Solr Queries using LLMs
From Natural Language to Structured Solr Queries using LLMsFrom Natural Language to Structured Solr Queries using LLMs
From Natural Language to Structured Solr Queries using LLMs
 
inQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
inQuba Webinar Mastering Customer Journey Management with Dr Graham HillinQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
inQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
 
Demystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through StorytellingDemystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through Storytelling
 
Christine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptxChristine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptx
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
Must Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during MigrationMust Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during Migration
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
 
Essentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation ParametersEssentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation Parameters
 
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024High performance Serverless Java on AWS- GoTo Amsterdam 2024
High performance Serverless Java on AWS- GoTo Amsterdam 2024
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
 
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...QA or the Highway - Component Testing: Bridging the gap between frontend appl...
QA or the Highway - Component Testing: Bridging the gap between frontend appl...
 
"What does it really mean for your system to be available, or how to define w...
"What does it really mean for your system to be available, or how to define w..."What does it really mean for your system to be available, or how to define w...
"What does it really mean for your system to be available, or how to define w...
 
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptxPRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
 

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