5. The $!@#% Problem
• The public CPAN is unstable & unreliable.
• Tool chain lacks precise dependency control.
6. The $!@#% Problem
• The public CPAN is unstable & unreliable.
• Tool chain lacks precise dependency control.
• Hard to make consistent, repeatable builds.
7. The $!@#% Problem
• The public CPAN is unstable & unreliable.
• Tool chain lacks precise dependency control.
• Hard to make consistent, repeatable builds.
• Existing solutions are weak.
9. Pinto To The Rescue
• A turn-key solution for managing Perl modules.
10. Pinto To The Rescue
• A turn-key solution for managing Perl modules.
• Works for both CPAN and local modules.
11. Pinto To The Rescue
• A turn-key solution for managing Perl modules.
• Works for both CPAN and local modules.
• Constructs a CPAN-like repository.
12. Pinto To The Rescue
• A turn-key solution for managing Perl modules.
• Works for both CPAN and local modules.
• Constructs a CPAN-like repository.
• Compatible with the existing tool chain.
15. Pinto Feature Recap
• A Pinto repository has multiple indexes (stacks).
• You can have multiple versions of a module.
16. Pinto Feature Recap
• A Pinto repository has multiple indexes (stacks).
• You can have multiple versions of a module.
• Also provides a way to fix versions (pins).
17. Pinto Feature Recap
• A Pinto repository has multiple indexes (stacks).
• You can have multiple versions of a module.
• Also provides a way to fix versions (pins).
• A coherent workflow for managing change.
18. Pinto Feature Recap
• A Pinto repository has multiple indexes (stacks).
• You can have multiple versions of a module.
• Also provides a way to fix versions (pins).
• A coherent workflow for managing change.
• Works with the standard Perl tool chain.
19. Pinto Feature Recap
• A Pinto repository has multiple indexes (stacks).
• You can have multiple versions of a module.
• Also provides a way to fix versions (pins).
• A coherent workflow for managing change.
• Works with the standard Perl tool chain.
• Results in consistent and reliable builds.
22. New Pinto Features
• A version control mechanism.
• Records each set of changes to the stack.
23. New Pinto Features
• A version control mechanism.
• Records each set of changes to the stack.
• Can examine who, what, why it changed.
24. New Pinto Features
• A version control mechanism.
• Records each set of changes to the stack.
• Can examine who, what, why it changed.
• Can revert to a prior revision of the stack.
25. New Pinto Features
• A version control mechanism.
• Records each set of changes to the stack.
• Can examine who, what, why it changed.
• Can revert to a prior revision of the stack.
• Not a full-fledged VCS, but good enough.
33. What Happened?
pinto -r ~/repo log
--------------------------------------------
init@1 | jeff | Mon Oct 29 23:48:57 2012
Did Stuff
--------------------------------------------
init@0 | jeff | Mon Oct 29 23:46:21 2012
Created initial stack
36. Gory Details
pinto -r ~/repo log --detailed
--------------------------------------------
init@23 | jeff | Mon Oct 29 23:48:57 2012
Did Stuff
D DOY/Moose-2.05.tar.gz/Moose~2.05
A DOY/Moose-2.06.tar.gz/Moose~2.06
D DOY/Moose-2.05.tar.gz/Moose::Meta~2.05
A DOY/Moose-2.06.tar.gz/Moose::Meta~2.06
48. Great, Yet Another Tool
I Have To Manage
• Pinto is evolving rapidly.
• Pinto has lots of dependencies.
49. Great, Yet Another Tool
I Have To Manage
• Pinto is evolving rapidly.
• Pinto has lots of dependencies.
• Like any service, requires care and feeding.
50. Great, Yet Another Tool
I Have To Manage
• Pinto is evolving rapidly.
• Pinto has lots of dependencies.
• Like any service, requires care and feeding.
• You have better things to do with your time.
52. So Let Us Manage It For You
• Stratopan is a web service built on Pinto.
53. So Let Us Manage It For You
• Stratopan is a web service built on Pinto.
• Public or private repos hosted in the cloud.
54. So Let Us Manage It For You
• Stratopan is a web service built on Pinto.
• Public or private repos hosted in the cloud.
• Full control over modules with stacks & pins.
55. So Let Us Manage It For You
• Stratopan is a web service built on Pinto.
• Public or private repos hosted in the cloud.
• Full control over modules with stacks & pins.
• Access controls for teams & customers.
56. So Let Us Manage It For You
• Stratopan is a web service built on Pinto.
• Public or private repos hosted in the cloud.
• Full control over modules with stacks & pins.
• Access controls for teams & customers.
• Build/test/install your modules from anywhere.
61. Future Plans
• Expose more Pinto features.
• Access controls for teams.
• Update notifications.
62. Future Plans
• Expose more Pinto features.
• Access controls for teams.
• Update notifications.
• Social features.
63. Future Plans
• Expose more Pinto features.
• Access controls for teams.
• Update notifications.
• Social features.
• Dependency graphing.
64. Future Plans
• Expose more Pinto features.
• Access controls for teams.
• Update notifications.
• Social features.
• Dependency graphing.
• Command line interface.
65. Future Plans
• Expose more Pinto features.
• Access controls for teams.
• Update notifications.
• Social features.
• Dependency graphing.
• Command line interface.
• Could be a real business.
68. What Are You Doing Now?
• Our admin installs everything as root.
69. What Are You Doing Now?
• Our admin installs everything as root.
• We build everything into a directory in VCS.
70. What Are You Doing Now?
• Our admin installs everything as root.
• We build everything into a directory in VCS.
• We put all the tar.gz files into the VCS.
71. What Are You Doing Now?
• Our admin installs everything as root.
• We build everything into a directory in VCS.
• We put all the tar.gz files into the VCS.
• We use a private Mini-CPAN.
72. What Are You Doing Now?
• Our admin installs everything as root.
• We build everything into a directory in VCS.
• We put all the tar.gz files into the VCS.
• We use a private Mini-CPAN.
• Nothing.
73. What Are You Doing Now?
• Our admin installs everything as root.
• We build everything into a directory in VCS.
• We put all the tar.gz files into the VCS.
• We use a private Mini-CPAN.
• Nothing.
• Other.
75. You’re Doing It Wrong
• What if you upgrade Perl or change OS?
76. You’re Doing It Wrong
• What if you upgrade Perl or change OS?
• Can you rebuild your dependencies?
77. You’re Doing It Wrong
• What if you upgrade Perl or change OS?
• Can you rebuild your dependencies?
• Do you know what to test after upgrading?
78. You’re Doing It Wrong
• What if you upgrade Perl or change OS?
• Can you rebuild your dependencies?
• Do you know what to test after upgrading?
• Do you even know what modules you have?
79. You’re Doing It Wrong
• What if you upgrade Perl or change OS?
• Can you rebuild your dependencies?
• Do you know what to test after upgrading?
• Do you even know what modules you have?
• What if they are no longer on CPAN?
80. You’re Doing It Wrong
• What if you upgrade Perl or change OS?
• Can you rebuild your dependencies?
• Do you know what to test after upgrading?
• Do you even know what modules you have?
• What if they are no longer on CPAN?
• Do you have modules that you don’t even use?
82. Pinto Does It Right...With Ease
• All your modules are stashed forever.
83. Pinto Does It Right...With Ease
• All your modules are stashed forever.
• Pinto knows what the dependency graph is.
84. Pinto Does It Right...With Ease
• All your modules are stashed forever.
• Pinto knows what the dependency graph is.
• Pinto works seamlessly with the toolchain.
85. Pinto Does It Right...With Ease
• All your modules are stashed forever.
• Pinto knows what the dependency graph is.
• Pinto works seamlessly with the toolchain.
• Pinto gives you tools to manage change.
86. Pinto Does It Right...With Ease
• All your modules are stashed forever.
• Pinto knows what the dependency graph is.
• Pinto works seamlessly with the toolchain.
• Pinto gives you tools to manage change.
• You can rebuild from scratch at any time.
87. Pinto Does It Right...With Ease
• All your modules are stashed forever.
• Pinto knows what the dependency graph is.
• Pinto works seamlessly with the toolchain.
• Pinto gives you tools to manage change.
• You can rebuild from scratch at any time.
• You will get the same result, every time.
90. Build From Scratch...
Are You Serious?
• Why not? The computer does all the work!
• Extension of continuous integration mentality.
91. Build From Scratch...
Are You Serious?
• Why not? The computer does all the work!
• Extension of continuous integration mentality.
• Build as much as you can, as often as you can.
92. Build From Scratch...
Are You Serious?
• Why not? The computer does all the work!
• Extension of continuous integration mentality.
• Build as much as you can, as often as you can.
• You might not build every thing every time.
93. Build From Scratch...
Are You Serious?
• Why not? The computer does all the work!
• Extension of continuous integration mentality.
• Build as much as you can, as often as you can.
• You might not build every thing every time.
• But you WILL need to do it eventually.
94. Build From Scratch...
Are You Serious?
• Why not? The computer does all the work!
• Extension of continuous integration mentality.
• Build as much as you can, as often as you can.
• You might not build every thing every time.
• But you WILL need to do it eventually.
• When that time comes, Pinto will save your ass.
96. We Use Vendor Packages, So Buzz Off
• Vendor packages are great for disparate stuff,
like databases, apache, etc.
97. We Use Vendor Packages, So Buzz Off
• Vendor packages are great for disparate stuff,
like databases, apache, etc.
• Making/Finding vendor packages for Perl
modules is a waste of time.
98. We Use Vendor Packages, So Buzz Off
• Vendor packages are great for disparate stuff,
like databases, apache, etc.
• Making/Finding vendor packages for Perl
modules is a waste of time.
• Perl already has an great packaging system.
99. We Use Vendor Packages, So Buzz Off
• Vendor packages are great for disparate stuff,
like databases, apache, etc.
• Making/Finding vendor packages for Perl
modules is a waste of time.
• Perl already has an great packaging system.
• Use Pinto and tool chain to build your Perl wad.
100. We Use Vendor Packages, So Buzz Off
• Vendor packages are great for disparate stuff,
like databases, apache, etc.
• Making/Finding vendor packages for Perl
modules is a waste of time.
• Perl already has an great packaging system.
• Use Pinto and tool chain to build your Perl wad.
• Then wrap the wad in a vendor package.
101. Why Should I Care?
“Perl is my virtual machine.
CPAN is my language.”
Matt Trout
103. What That Means For You
• Applications are built from lots of components.
104. What That Means For You
• Applications are built from lots of components.
• Your source code is just the glue between them.
105. What That Means For You
• Applications are built from lots of components.
• Your source code is just the glue between them.
• We have great tools for managing source code.
106. What That Means For You
• Applications are built from lots of components.
• Your source code is just the glue between them.
• We have great tools for managing source code.
• But components are the real bulk of apps.
107. What That Means For You
• Applications are built from lots of components.
• Your source code is just the glue between them.
• We have great tools for managing source code.
• But components are the real bulk of apps.
• So you need to manage components too.
108. What That Means For You
• Applications are built from lots of components.
• Your source code is just the glue between them.
• We have great tools for managing source code.
• But components are the real bulk of apps.
• So you need to manage components too.
• Otherwise, you will be screwed (some day).
109. The Bottom Line
Pinto and Statopan make it so easy
there is little reason not to use them.