Carton
1.0 released in late 2013
1.1 was in the development
Slide 24
Slide 24 text
No content
Slide 25
Slide 25 text
Carton
• Slow for large installs
• Relies on cpanm internals
• Git support is hard
• Update/Rollback is unreliable
• -‐-‐deployment is confusing
• carton
exec doesn't check on development
Slide 26
Slide 26 text
Carmel
Yet another Bundler for Perl
Slide 27
Slide 27 text
Carmel
• Same UI/UX with Carton
• Different internals
• Rewritten from scratch
• Deeper understandings of how Bundler works
• Fast and Reliable
Slide 28
Slide 28 text
blib
The core of Carmel
Slide 29
Slide 29 text
How to build a CPAN module
• Configure
• Build
• Test (Optional)
• Install
Slide 30
Slide 30 text
How to build a CPAN module
• perl
Makefile.PL
• make
• make
test
• make
install
Slide 31
Slide 31 text
➜
perl
Makefile.PL
Checking
if
your
kit
is
complete...
Looks
good
Generating
a
Unix-‐style
Makefile
Writing
Makefile
for
Try::Tiny
Writing
MYMETA.yml
and
MYMETA.json
➜
make
cp
lib/Try/Tiny.pm
blib/lib/Try/Tiny.pm
Manifying
1
pod
document
Slide 32
Slide 32 text
➜
perl
Makefile.PL
Checking
if
your
kit
is
complete...
Looks
good
Generating
a
Unix-‐style
Makefile
Writing
Makefile
for
Try::Tiny
Writing
MYMETA.yml
and
MYMETA.json
➜
make
cp
lib/Try/Tiny.pm
blib/lib/Try/Tiny.pm
Manifying
1
pod
document
Slide 33
Slide 33 text
blib/{lib,arch}
Can be pushed to @INC
CPAN.pm does it for ages
Slide 34
Slide 34 text
The idea
• Builds all modules without installing them
• Manages these "blib"s (call them artifacts)
• Chooses artifact paths dynamically on dev
• Freezes artifact paths statically on prod
Slide 35
Slide 35 text
Carmel
Written in a few hours as a hack.
Turned into a module at Berlin QA Hackathon.
cpanm
• Loved by the users
• Mixed feelings by the developer (me)
• God class, Hard to refactor
• Grown out of a pre-fatpack single script
• Not extensible
Slide 47
Slide 47 text
Menlo
• Modular, Scriptable, Object-Oriented APIs
• Plugin Hooks
• uses CPAN::Common::*
• Extracts the common bits (e.g. HTTP::Tinyish)
• Still bootstrappable with fatpack/vendoring
Slide 48
Slide 48 text
>
cpanm
Menlo
>
cpanm-‐menlo
Plack
Slide 49
Slide 49 text
Current status
• github.com/miyagawa/cpanminus @ menlo
• New features (static installs)
• Pre big refactoring
• No plugins
Slide 50
Slide 50 text
2.0 planned for QAH 2016
... but with continuous 1.9x releases
Slide 51
Slide 51 text
github.com/miyagawa
Slide 52
Slide 52 text
irc.perl.org #cpanm
Slide 53
Slide 53 text
Thank you.
Questions?
Slide 54
Slide 54 text
FAQ
• Why Carmel/Menlo?
• 1.0/2.0 ETA?
• Is Carton deprecated?
• What's the purple thing in your avatar?