Perl 5Today, Tomorrow, and Christmas
The Perl Dev That Was
The Perl Dev That Was- between perl 5.10 and perl 5.12, we changed  how the release cycle works
The Perl Dev That Was- between perl 5.10 and perl 5.12, we changed  how the release cycle works- that was three years ago ...
The Perl Dev That Was- between perl 5.10 and perl 5.12, we changed  how the release cycle works- that was three years ago ...
The Old Days                5.9.0 5.9.1 5.9.2blead        5.8.0   5.8.1         5.8.2maint                                ...
The Old Days
The Old Days- what merits a new dev release?
The Old Days- what merits a new dev release?- when is a new major release done?
The Old Days- what merits a new dev release?- when is a new major release done?- what can get backported?
The Old Days- what merits a new dev release?- when is a new major release done?- what can get backported?- i.e., how stabl...
When I say so is when!
When I say so is when!- not a terrible idea in theory
When I say so is when!- not a terrible idea in theory- but in practice, it led to very long waits for  new features to be ...
When I say so is when!- not a terrible idea in theory- but in practice, it led to very long waits for  new features to be ...
- worse, the pumpking is now busy doing
- worse, the pumpking is now busy doing  - "cherrymaint"
- worse, the pumpking is now busy doing  - "cherrymaint"  - release planning
- worse, the pumpking is now busy doing  - "cherrymaint"  - release planning  - release "paperwork"
- worse, the pumpking is now busy doing  - "cherrymaint"  - release planning  - release "paperwork"  - cat herding (read: ...
- worse, the pumpking is now busy doing  - "cherrymaint"  - release planning  - release "paperwork"  - cat herding (read: ...
The Interregnum
The Interregnum- the 5.10 crisis
The Interregnum- the 5.10 crisis- the San Diego call
The Interregnum- the 5.10 crisis- the San Diego call- 5.11 and the release engineers corps
The Interregnum- the 5.10 crisis- the San Diego call- 5.11 and the release engineers corps- any idiot can do it!
New Blead        2011-06         5.15.0blead
New Blead        2011-06   2011-07         5.15.0    5.15.1blead
New Blead        2011-06   2011-07   2011-08         5.15.0    5.15.1    5.15.2blead
New Blead        2011-06   2011-07   2011-08   2011-09         5.15.0    5.15.1    5.15.2    5.15.3blead
New Blead        2011-06   2011-07   2011-08   2011-09   2012-05         5.15.0    5.15.1    5.15.2    5.15.3    5.15.9blead
New Blead        2011-06   2011-07   2011-08   2011-09   2012-05         5.15.0    5.15.1    5.15.2    5.15.3    5.15.9ble...
New Blead        2011-06   2011-07   2011-08   2011-09   2012-05   2012-06         5.15.0    5.15.1    5.15.2    5.15.3   ...
New Blead        David G.   Zefram      Rik     Stevan    Abigail   Zefram         2011-06   2011-07   2011-08   2011-09  ...
New Maint        Zefram        2012-06         5.17.0bleadmaint        2012-06         5.16.0          Rik
New Maint        Zefram        2012-06         5.17.0bleadmaint        2012-06   2012-07         5.16.0    5.16.1         ...
New Maint        Zefram        2012-06         5.17.0bleadmaint        2012-06   2012-07   2012-09         5.16.0    5.16....
New Maint        Zefram        2012-06         5.17.0bleadmaint        2012-06   2012-07   2012-09   2013-??         5.16....
Minimal Maint
Minimal Maint- almost all dev. burden is kept in blead
Minimal Maint- almost all dev. burden is kept in blead- the rules about changing maint are strict
Minimal Maint- almost all dev. burden is kept in blead- the rules about changing maint are strict- must be critical bug fix
Minimal Maint- almost all dev. burden is kept in blead- the rules about changing maint are strict- must be critical bug fi...
Minimal Maint- almost all dev. burden is kept in blead- the rules about changing maint are strict- must be critical bug fi...
Multimaint                 Zefram                 2012-06                  5.17.0bleadmaint-5.16                 2012-06  ...
New Cherrymaint        Zefram        2012-05         5.17.0bleadmaint        2012-05   2012-07   2012-09   2013-??        ...
New Cherrymaint        Zefram        2012-06         5.17.0bleadmaint        2012-06   2012-07   2012-09   2013-??        ...
Pumpking?
What is the Pumpking?
What is the Pumpking?- the patch pumpkin
What is the Pumpking?- the patch pumpkin- the person with the conch
What is the Pumpking?- the patch pumpkin- the person with the conch- the benevolent dictator for now
What is the Pumpking?- the patch pumpkin- the person with the conch- the benevolent dictator for now- was: the one who cou...
What is the Pumpking?- the patch pumpkin- the person with the conch- the benevolent dictator for now- was: the one who cou...
Jesse and Rik
Jesse and Rik- we get along well
Jesse and Rik- we get along well- we both want what is good for Perl 5
Jesse and Rik- we get along well- we both want what is good for Perl 5- but we see the future very differently
Rik and Jesse
Rik and Jesse- Jesses "5.16 and Beyond" was inspired by his  hopes and dreams
Rik and Jesse- Jesses "5.16 and Beyond" was inspired by his  hopes and dreams- This talk is inspired by my fears and anxie...
The Pumpkings Job
The Pumpkings Job- ...is not to make sure perl gets better.- Its to make sure perl doesnt get worse.
Designing Perl
Designing Perl- So, does that mean that the pumpking is  Perls designer?
Designing Perl- So, does that mean that the pumpking is  Perls designer?- Only to the extent that the designs he offers  a...
Designing Perl- So, does that mean that the pumpking is  Perls designer?- Only to the extent that the designs he offers  a...
Designing Perl- So, does that mean that the pumpking is  Perls designer?- Only to the extent that the designs he offers  a...
How a Bill Becomes a Law
Mailing List Judo
Mailing List Judo- how do you get your change applied?
Mailing List Judo- how do you get your change applied?- by avoiding controversy
Mailing List Judo- how do you get your change applied?- by avoiding controversy- ...at least on the list
Syntax
Syntax- perl programmers obsess over it
Syntax- perl programmers obsess over it- even when the semantics are the real  problem
Syntax- perl programmers obsess over it- even when the semantics are the real  problem- ?->
Syntax- perl programmers obsess over it- even when the semantics are the real  problem- ?->- letting a syntax discussion s...
Changing Anything
Changing Anything- some argue that change itself is bad
Changing Anything- some argue that change itself is bad- "someone might be relying on this error"
Other Lunacy
Other Lunacy- "Your patch is nice, but why dont we do  fifteen other things along with it?"
Other Lunacy- "Your patch is nice, but why dont we do  fifteen other things along with it?"- "There are serious problems w...
...and in reality...
...and in reality...- These observations are true.
...and in reality...- These observations are true.- So the advice to "lobby in private" seems  promising.
...and in reality...- These observations are true.- So the advice to "lobby in private" seems  promising.- Everybody wants...
...and in reality...- These observations are true.- So the advice to "lobby in private" seems  promising.- Everybody wants...
U+1F4A9
U+1F4A9- In most cases, everything Ive just said is true.
U+1F4A9- In most cases, everything Ive just said is true.- …and also crap.
U+1F4A9- In most cases, everything Ive just said is true.- …and also crap.- p5p has, in part, a culture of fear
U+1F4A9- In most cases, everything Ive just said is true.- …and also crap.- p5p has, in part, a culture of fear- …of endle...
Improving p5p
Improving p5p- if discussion on p5p was not only reliably  civil…
Improving p5p- if discussion on p5p was not only reliably  civil…- …but also technically on point…
Improving p5p- if discussion on p5p was not only reliably  civil…- …but also technically on point…- contributors would wan...
Improving p5p
Improving p5p- we would still try to avoid controversy
Improving p5p- we would still try to avoid controversy- …but by reaching consensus, not with tricks
Improving p5p- we would still try to avoid controversy- …but by reaching consensus, not with tricks- so the pumpking never...
The Pumpkings Job
The Pumpkings Job- What will I do with all that free time?
The Pumpkings Job- What will I do with all that free time?- I will try to improve the lists culture.
The Pumpkings Job- What will I do with all that free time?- I will try to improve the lists culture.- My promise:
The Pumpkings Job- What will I do with all that free time?- I will try to improve the lists culture.- My promise:  - I wil...
The Pumpkings Job
The Pumpkings Job- ...is to make sure p5p culture gets better.
The Final Decision
The Final Decision- sometimes, controversy is unavoidable
The Final Decision- sometimes, controversy is unavoidable- there is no consensus on whether a new  feature is a good idea
The Final Decision- sometimes, controversy is unavoidable- there is no consensus on whether a new  feature is a good idea-...
CPAN, not perl
CPAN, not perl- can the feature be implemented on CPAN?
CPAN, not perl- can the feature be implemented on CPAN?- if not, why not? can that be fixed?
CPAN, not perl- can the feature be implemented on CPAN?- if not, why not? can that be fixed?- can its semantics be simulat...
feature
feature- can the feature be lexically hidden behind  feature.pm?
feature- can the feature be lexically hidden behind  feature.pm?- (remember, not every feature needs to be in a  version b...
feature- can the feature be lexically hidden behind  feature.pm?- (remember, not every feature needs to be in a  version b...
:=use experimental ‘bind_op’;my $y = “Foo bar”;my $x := $y;
:=use experimental ‘bind_op’;my $y = “Foo bar”;my $x := $y;Feature “experimental_bind_op” isnot supported by Perl 5.22.0
Strategy of Last Resort
Strategy of Last Resort- the change is controversial
Strategy of Last Resort- the change is controversial- and cant be prototyped on CPAN
Strategy of Last Resort- the change is controversial- and cant be prototyped on CPAN- and can or cant go into feature.pm
Strategy of Last Resort- the change is controversial- and cant be prototyped on CPAN- and can or cant go into feature.pm- ...
The Final Decision
The Final Decision- is the feature small and specific?
The Final Decision- is the feature small and specific?- is the feature generic and unsurprising?
The Final Decision- is the feature small and specific?- is the feature generic and unsurprising?- is the feature teachable?
The Final Decision- is the feature small and specific?- is the feature generic and unsurprising?- is the feature teachable...
The Final Decision- is the feature small and specific?- is the feature generic and unsurprising?- is the feature teachable...
Perlishness
Perlishness- I know it when I see it.
Perlishness- I know it when I see it.- "gets us further along our road map"
The Road Map
The Road Map- I dont make one.
The Road Map- I dont make one.- I dont see the point. I dont implement  perl.
The Road Map- I dont make one.- I dont see the point. I dont implement  perl.- Submitted patches are the roads
Pathfinding
Pathfinding- Backward compatibility
Pathfinding- Backward compatibility- POLS
Pathfinding- Backward compatibility- POLS- Utility
Pathfinding- Backward compatibility- POLS- Utility- Conceptual simplicity
Pathfinding- Backward compatibility- POLS- Utility- Conceptual simplicity- Readability
Intelligent Design
Intelligent Design- always the best way to build something
Intelligent Design- always the best way to build something- assuming sufficient intelligence
Intelligent Design- always the best way to build something- assuming sufficient intelligence- and omnipotence
Intelligent Design- always the best way to build something- assuming sufficient intelligence- and omnipotence- i.e., great...
Evolution
Evolution- seems to have worked pretty well
Evolution- seems to have worked pretty well- except for the billions of required deaths
Evolution- seems to have worked pretty well- except for the billions of required deaths- and millions of years
Evolution- seems to have worked pretty well- except for the billions of required deaths- and millions of years- and all th...
Evolution- seems to have worked pretty well- except for the billions of required deaths- and millions of years- and all th...
Intelligent Evolution
Intelligent Evolution- mutations are designed, not random
Intelligent Evolution- mutations are designed, not random- then further mutated in captivity
Intelligent Evolution- mutations are designed, not random- then further mutated in captivity- and possibly slaughtered bef...
Recovering from Error
Oops
Oops- so, Rik had to decide something
Oops- so, Rik had to decide something- and he made the wrong choice
Oops- so, Rik had to decide something- and he made the wrong choice- and everybody can tell
Oops- so, Rik had to decide something- and he made the wrong choice- and everybody can tell- and he wants to fix it up so ...
Experimental?
Experimental?- was it marked experimental?
Experimental?- was it marked experimental?- if so, we can just remove the thing
Experimental?- was it marked experimental?- if so, we can just remove the thing- ...in theory
Current Experiments
Current Experiments- fork emulation
Current Experiments- fork emulation- lvalue subroutines
Current Experiments- fork emulation- lvalue subroutines- weak references (!?)
Experimental?
Experimental?- was it marked experimental?
Experimental?- was it marked experimental?- if so, we can just remove the thing
Experimental?- was it marked experimental?- if so, we can just remove the thing- ...in theory
Experimental?- was it marked experimental?- if so, we can just remove the thing- ...in theory- if not, well do a deprecation
Deprecation Cycle
Deprecation Cycle1. (optional) announce in 5.16 delta that well   probably deprecate a behavior next time
Deprecation Cycle1. (optional) announce in 5.16 delta that well   probably deprecate a behavior next time2. start issuing ...
Deprecation Cycle1. (optional) announce in 5.16 delta that well   probably deprecate a behavior next time2. start issuing ...
Deprecation Cycle1. (optional) announce in 5.16 delta that well   probably deprecate a behavior next time2. start issuing ...
The Eternal Bug
The Eternal Bug- some behaviors cant be detected and made  fatal practically
The Eternal Bug- some behaviors cant be detected and made  fatal practically- arybase feature: we could remove it
The Eternal Bug- some behaviors cant be detected and made  fatal practically- arybase feature: we could remove it- The Uni...
The Unicode Bug
The Unicode Bugmy $x = acquire_input;
The Unicode Bugmy $x = acquire_input;$x .= “Á”; # <-- that’s an A-acute
The Unicode Bugmy $x = acquire_input;$x .= “Á”; # <-- that’s an A-acuteprint $x =~ /á/i ? ‘match’ : ‘no match’;
Features in Flight
pluggable syntax
(the MOP)
regexp class sets
regex class sets$str = /A  (?[a-z] - [aeiou])z/x
casemod escapes
casemod escapes
casemod escapes$input = <STDIN>;
casemod escapes$input = <STDIN>;# ricardo
casemod escapes$input = <STDIN>;# ricardo# RICARDO
casemod escapes$input = <STDIN>;# ricardo# RICARDO# Ricardo
casemod escapes$input = <STDIN>;# ricardo# RICARDO# Ricardo$str   = “uL$input”; # Ricardo
casemod escapes
casemod escapes$let = “LN{LATIN CAPITAL LETTER A}”;
casemod escapes$let = “LN{LATIN CAPITAL LETTER A}”;# $let is now ‘a’
casemod escapes$let = “LN{LATIN CAPITAL LETTER A}”;# $let is now ‘a’$let =~ /LN{LATIN CAPITAL LETTER A}/;
casemod escapes$let = “LN{LATIN CAPITAL LETTER A}”;# $let is now ‘a’$let =~ /LN{LATIN CAPITAL LETTER A}/;# fails!!
casemod escapes$let = “LN{LATIN CAPITAL LETTER A}”;# $let is now ‘a’$let =~ /LN{LATIN CAPITAL LETTER A}/;# fails!!qr<N{LAT...
casemod escapes$let = “LN{LATIN CAPITAL LETTER A}”;# $let is now ‘a’$let =~ /LN{LATIN CAPITAL LETTER A}/;# fails!!qr<N{LAT...
casemod escapes$let = “LN{LATIN CAPITAL LETTER A}”;# $let is now ‘a’$let =~ /LN{LATIN CAPITAL LETTER A}/;# fails!!qr<N{LAT...
casemod escapes$let = “LN{LATIN CAPITAL LETTER A}”;# $let is now ‘a’$let =~ /LN{LATIN CAPITAL LETTER A}/;# fails!!qr<N{LAT...
ÅÂÃÄÉÃ
EBCDIC
smartmatch
The Future of ~~
The Future of ~~- deprecate and remove?
The Future of ~~- deprecate and remove?- make pluggable with simple replacement?
The Future of ~~- deprecate and remove?- make pluggable with simple replacement?- leave as is with giant warning sign?
The Future of ~~- deprecate and remove?- make pluggable with simple replacement?- leave as is with giant warning sign?- an...
magic flags
utf8 strictness
(??{{ ... }})
The Secret Roadmap
slim core
multiple cores
fatal implicit close()
fatal implicit close()
fatal implicit close(){
fatal implicit close(){    use autodie;
fatal implicit close(){    use autodie;    open my $fh, ‘>’, $filename;
fatal implicit close(){    use autodie;    open my $fh, ‘>’, $filename;    $fh->print( ... );
fatal implicit close(){  use autodie;  open my $fh, ‘>’, $filename;  $fh->print( ... );} # should die if close fails!
better exceptions
better exceptionsmy $x = try {  $y / $z} catch {  return $Infinity    if $_->tagged(‘divbyzero’);  die $_;}
MOP and pluggable OO
chars v. bytes
chars v. bytes
chars v. bytesmy $buf = $fh->readline;
chars v. bytesmy $buf = $fh->readline;my $str = decode_utf8($buf);
chars v. bytesmy $buf = $fh->readline;my $str = decode_utf8($buf);STDOUT->print( $str );
chars v. bytesmy $buf = $fh->readline;my $str = decode_utf8($buf);STDOUT->print( $str );# fatal or autoencode
autoboxing
autoboxing
autoboxing@array->push(@list);
autoboxing@array->push(@list);$arrayref->push(@list);
autoboxing@array->push(@list);$arrayref->push(@list);for ($x->values) { ... }
Any questions?
Thank you!
Perl 5: Today, Tomorrow, and Christmas
Perl 5: Today, Tomorrow, and Christmas
Perl 5: Today, Tomorrow, and Christmas
Perl 5: Today, Tomorrow, and Christmas
Perl 5: Today, Tomorrow, and Christmas
Perl 5: Today, Tomorrow, and Christmas
Perl 5: Today, Tomorrow, and Christmas
Perl 5: Today, Tomorrow, and Christmas
Perl 5: Today, Tomorrow, and Christmas
Upcoming SlideShare
Loading in …5
×

Perl 5: Today, Tomorrow, and Christmas

1,502 views
1,369 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,502
On SlideShare
0
From Embeds
0
Number of Embeds
23
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Perl 5: Today, Tomorrow, and Christmas

  1. 1. Perl 5Today, Tomorrow, and Christmas
  2. 2. The Perl Dev That Was
  3. 3. The Perl Dev That Was- between perl 5.10 and perl 5.12, we changed how the release cycle works
  4. 4. The Perl Dev That Was- between perl 5.10 and perl 5.12, we changed how the release cycle works- that was three years ago (!!)
  5. 5. The Perl Dev That Was- between perl 5.10 and perl 5.12, we changed how the release cycle works- that was three years ago (!!)- hopefully this is the last time we need to talk about the old ways
  6. 6. The Old Days 5.9.0 5.9.1 5.9.2blead 5.8.0 5.8.1 5.8.2maint 5.10.0
  7. 7. The Old Days
  8. 8. The Old Days- what merits a new dev release?
  9. 9. The Old Days- what merits a new dev release?- when is a new major release done?
  10. 10. The Old Days- what merits a new dev release?- when is a new major release done?- what can get backported?
  11. 11. The Old Days- what merits a new dev release?- when is a new major release done?- what can get backported?- i.e., how stable is a stable release?
  12. 12. When I say so is when!
  13. 13. When I say so is when!- not a terrible idea in theory
  14. 14. When I say so is when!- not a terrible idea in theory- but in practice, it led to very long waits for new features to be usable
  15. 15. When I say so is when!- not a terrible idea in theory- but in practice, it led to very long waits for new features to be usable- ...which led to bad designs surviving
  16. 16. - worse, the pumpking is now busy doing
  17. 17. - worse, the pumpking is now busy doing - "cherrymaint"
  18. 18. - worse, the pumpking is now busy doing - "cherrymaint" - release planning
  19. 19. - worse, the pumpking is now busy doing - "cherrymaint" - release planning - release "paperwork"
  20. 20. - worse, the pumpking is now busy doing - "cherrymaint" - release planning - release "paperwork" - cat herding (read: arguing with angries)
  21. 21. - worse, the pumpking is now busy doing - "cherrymaint" - release planning - release "paperwork" - cat herding (read: arguing with angries)- ...but is actually a hugely valuable coder
  22. 22. The Interregnum
  23. 23. The Interregnum- the 5.10 crisis
  24. 24. The Interregnum- the 5.10 crisis- the San Diego call
  25. 25. The Interregnum- the 5.10 crisis- the San Diego call- 5.11 and the release engineers corps
  26. 26. The Interregnum- the 5.10 crisis- the San Diego call- 5.11 and the release engineers corps- any idiot can do it!
  27. 27. New Blead 2011-06 5.15.0blead
  28. 28. New Blead 2011-06 2011-07 5.15.0 5.15.1blead
  29. 29. New Blead 2011-06 2011-07 2011-08 5.15.0 5.15.1 5.15.2blead
  30. 30. New Blead 2011-06 2011-07 2011-08 2011-09 5.15.0 5.15.1 5.15.2 5.15.3blead
  31. 31. New Blead 2011-06 2011-07 2011-08 2011-09 2012-05 5.15.0 5.15.1 5.15.2 5.15.3 5.15.9blead
  32. 32. New Blead 2011-06 2011-07 2011-08 2011-09 2012-05 5.15.0 5.15.1 5.15.2 5.15.3 5.15.9bleadmaint 2012-06 5.16.0
  33. 33. New Blead 2011-06 2011-07 2011-08 2011-09 2012-05 2012-06 5.15.0 5.15.1 5.15.2 5.15.3 5.15.9 5.17.0bleadmaint 2012-06 5.16.0
  34. 34. New Blead David G. Zefram Rik Stevan Abigail Zefram 2011-06 2011-07 2011-08 2011-09 2012-05 2012-06 5.15.0 5.15.1 5.15.2 5.15.3 5.15.9 5.17.0bleadmaint 2012-06 5.16.0 Rik
  35. 35. New Maint Zefram 2012-06 5.17.0bleadmaint 2012-06 5.16.0 Rik
  36. 36. New Maint Zefram 2012-06 5.17.0bleadmaint 2012-06 2012-07 5.16.0 5.16.1 Rik ?
  37. 37. New Maint Zefram 2012-06 5.17.0bleadmaint 2012-06 2012-07 2012-09 5.16.0 5.16.1 5.16.2 Rik ? ?
  38. 38. New Maint Zefram 2012-06 5.17.0bleadmaint 2012-06 2012-07 2012-09 2013-?? 5.16.0 5.16.1 5.16.2 5.16.2 Rik ? ? ?
  39. 39. Minimal Maint
  40. 40. Minimal Maint- almost all dev. burden is kept in blead
  41. 41. Minimal Maint- almost all dev. burden is kept in blead- the rules about changing maint are strict
  42. 42. Minimal Maint- almost all dev. burden is kept in blead- the rules about changing maint are strict- must be critical bug fix
  43. 43. Minimal Maint- almost all dev. burden is kept in blead- the rules about changing maint are strict- must be critical bug fix- (which includes security)
  44. 44. Minimal Maint- almost all dev. burden is kept in blead- the rules about changing maint are strict- must be critical bug fix- (which includes security)- very effective! in fact, so effective that...
  45. 45. Multimaint Zefram 2012-06 5.17.0bleadmaint-5.16 2012-06 2012-07 2012-09 2013-?? 5.16.0 5.16.1 5.16.2 5.16.2 Rik ? ? ?maint-5.14 2011-05 5.14.0 Jesse
  46. 46. New Cherrymaint Zefram 2012-05 5.17.0bleadmaint 2012-05 2012-07 2012-09 2013-?? 5.16.0 5.16.1 5.16.2 5.16.2 Rik ? ? ?
  47. 47. New Cherrymaint Zefram 2012-06 5.17.0bleadmaint 2012-06 2012-07 2012-09 2013-?? 5.16.0 5.16.1 5.16.2 5.16.2 Rik ? ? ?
  48. 48. Pumpking?
  49. 49. What is the Pumpking?
  50. 50. What is the Pumpking?- the patch pumpkin
  51. 51. What is the Pumpking?- the patch pumpkin- the person with the conch
  52. 52. What is the Pumpking?- the patch pumpkin- the person with the conch- the benevolent dictator for now
  53. 53. What is the Pumpking?- the patch pumpkin- the person with the conch- the benevolent dictator for now- was: the one who could do everything
  54. 54. What is the Pumpking?- the patch pumpkin- the person with the conch- the benevolent dictator for now- was: the one who could do everything- now: the one who manages
  55. 55. Jesse and Rik
  56. 56. Jesse and Rik- we get along well
  57. 57. Jesse and Rik- we get along well- we both want what is good for Perl 5
  58. 58. Jesse and Rik- we get along well- we both want what is good for Perl 5- but we see the future very differently
  59. 59. Rik and Jesse
  60. 60. Rik and Jesse- Jesses "5.16 and Beyond" was inspired by his hopes and dreams
  61. 61. Rik and Jesse- Jesses "5.16 and Beyond" was inspired by his hopes and dreams- This talk is inspired by my fears and anxieties
  62. 62. The Pumpkings Job
  63. 63. The Pumpkings Job- ...is not to make sure perl gets better.- Its to make sure perl doesnt get worse.
  64. 64. Designing Perl
  65. 65. Designing Perl- So, does that mean that the pumpking is Perls designer?
  66. 66. Designing Perl- So, does that mean that the pumpking is Perls designer?- Only to the extent that the designs he offers are carried out.
  67. 67. Designing Perl- So, does that mean that the pumpking is Perls designer?- Only to the extent that the designs he offers are carried out.- Saying "make it so" depends on having a crew who will make it so.
  68. 68. Designing Perl- So, does that mean that the pumpking is Perls designer?- Only to the extent that the designs he offers are carried out.- Saying "make it so" depends on having a crew who will make it so.- Instead, he or she is the decider.
  69. 69. How a Bill Becomes a Law
  70. 70. Mailing List Judo
  71. 71. Mailing List Judo- how do you get your change applied?
  72. 72. Mailing List Judo- how do you get your change applied?- by avoiding controversy
  73. 73. Mailing List Judo- how do you get your change applied?- by avoiding controversy- ...at least on the list
  74. 74. Syntax
  75. 75. Syntax- perl programmers obsess over it
  76. 76. Syntax- perl programmers obsess over it- even when the semantics are the real problem
  77. 77. Syntax- perl programmers obsess over it- even when the semantics are the real problem- ?->
  78. 78. Syntax- perl programmers obsess over it- even when the semantics are the real problem- ?->- letting a syntax discussion start can be fatal
  79. 79. Changing Anything
  80. 80. Changing Anything- some argue that change itself is bad
  81. 81. Changing Anything- some argue that change itself is bad- "someone might be relying on this error"
  82. 82. Other Lunacy
  83. 83. Other Lunacy- "Your patch is nice, but why dont we do fifteen other things along with it?"
  84. 84. Other Lunacy- "Your patch is nice, but why dont we do fifteen other things along with it?"- "There are serious problems with this patch, too large to fit in the margin of this email."
  85. 85. ...and in reality...
  86. 86. ...and in reality...- These observations are true.
  87. 87. ...and in reality...- These observations are true.- So the advice to "lobby in private" seems promising.
  88. 88. ...and in reality...- These observations are true.- So the advice to "lobby in private" seems promising.- Everybody wants to avoid a long p5p thread
  89. 89. ...and in reality...- These observations are true.- So the advice to "lobby in private" seems promising.- Everybody wants to avoid a long p5p thread- …because p5p can be a horrible place.
  90. 90. U+1F4A9
  91. 91. U+1F4A9- In most cases, everything Ive just said is true.
  92. 92. U+1F4A9- In most cases, everything Ive just said is true.- …and also crap.
  93. 93. U+1F4A9- In most cases, everything Ive just said is true.- …and also crap.- p5p has, in part, a culture of fear
  94. 94. U+1F4A9- In most cases, everything Ive just said is true.- …and also crap.- p5p has, in part, a culture of fear- …of endless, horrible argument
  95. 95. Improving p5p
  96. 96. Improving p5p- if discussion on p5p was not only reliably civil…
  97. 97. Improving p5p- if discussion on p5p was not only reliably civil…- …but also technically on point…
  98. 98. Improving p5p- if discussion on p5p was not only reliably civil…- …but also technically on point…- contributors would want to engage in it
  99. 99. Improving p5p
  100. 100. Improving p5p- we would still try to avoid controversy
  101. 101. Improving p5p- we would still try to avoid controversy- …but by reaching consensus, not with tricks
  102. 102. Improving p5p- we would still try to avoid controversy- …but by reaching consensus, not with tricks- so the pumpking never needs to decide!
  103. 103. The Pumpkings Job
  104. 104. The Pumpkings Job- What will I do with all that free time?
  105. 105. The Pumpkings Job- What will I do with all that free time?- I will try to improve the lists culture.
  106. 106. The Pumpkings Job- What will I do with all that free time?- I will try to improve the lists culture.- My promise:
  107. 107. The Pumpkings Job- What will I do with all that free time?- I will try to improve the lists culture.- My promise: - I will call out unreasonable arguments and, even more, unreasonable behavior.
  108. 108. The Pumpkings Job
  109. 109. The Pumpkings Job- ...is to make sure p5p culture gets better.
  110. 110. The Final Decision
  111. 111. The Final Decision- sometimes, controversy is unavoidable
  112. 112. The Final Decision- sometimes, controversy is unavoidable- there is no consensus on whether a new feature is a good idea
  113. 113. The Final Decision- sometimes, controversy is unavoidable- there is no consensus on whether a new feature is a good idea- how can Rik still avoid having to decide?
  114. 114. CPAN, not perl
  115. 115. CPAN, not perl- can the feature be implemented on CPAN?
  116. 116. CPAN, not perl- can the feature be implemented on CPAN?- if not, why not? can that be fixed?
  117. 117. CPAN, not perl- can the feature be implemented on CPAN?- if not, why not? can that be fixed?- can its semantics be simulated for testing?
  118. 118. feature
  119. 119. feature- can the feature be lexically hidden behind feature.pm?
  120. 120. feature- can the feature be lexically hidden behind feature.pm?- (remember, not every feature needs to be in a version bundle)
  121. 121. feature- can the feature be lexically hidden behind feature.pm?- (remember, not every feature needs to be in a version bundle)- use experimental
  122. 122. :=use experimental ‘bind_op’;my $y = “Foo bar”;my $x := $y;
  123. 123. :=use experimental ‘bind_op’;my $y = “Foo bar”;my $x := $y;Feature “experimental_bind_op” isnot supported by Perl 5.22.0
  124. 124. Strategy of Last Resort
  125. 125. Strategy of Last Resort- the change is controversial
  126. 126. Strategy of Last Resort- the change is controversial- and cant be prototyped on CPAN
  127. 127. Strategy of Last Resort- the change is controversial- and cant be prototyped on CPAN- and can or cant go into feature.pm
  128. 128. Strategy of Last Resort- the change is controversial- and cant be prototyped on CPAN- and can or cant go into feature.pm- how do we decide?
  129. 129. The Final Decision
  130. 130. The Final Decision- is the feature small and specific?
  131. 131. The Final Decision- is the feature small and specific?- is the feature generic and unsurprising?
  132. 132. The Final Decision- is the feature small and specific?- is the feature generic and unsurprising?- is the feature teachable?
  133. 133. The Final Decision- is the feature small and specific?- is the feature generic and unsurprising?- is the feature teachable?- whats the maintenance burden?
  134. 134. The Final Decision- is the feature small and specific?- is the feature generic and unsurprising?- is the feature teachable?- whats the maintenance burden?- does it feel like it makes Perl more Perlish?
  135. 135. Perlishness
  136. 136. Perlishness- I know it when I see it.
  137. 137. Perlishness- I know it when I see it.- "gets us further along our road map"
  138. 138. The Road Map
  139. 139. The Road Map- I dont make one.
  140. 140. The Road Map- I dont make one.- I dont see the point. I dont implement perl.
  141. 141. The Road Map- I dont make one.- I dont see the point. I dont implement perl.- Submitted patches are the roads
  142. 142. Pathfinding
  143. 143. Pathfinding- Backward compatibility
  144. 144. Pathfinding- Backward compatibility- POLS
  145. 145. Pathfinding- Backward compatibility- POLS- Utility
  146. 146. Pathfinding- Backward compatibility- POLS- Utility- Conceptual simplicity
  147. 147. Pathfinding- Backward compatibility- POLS- Utility- Conceptual simplicity- Readability
  148. 148. Intelligent Design
  149. 149. Intelligent Design- always the best way to build something
  150. 150. Intelligent Design- always the best way to build something- assuming sufficient intelligence
  151. 151. Intelligent Design- always the best way to build something- assuming sufficient intelligence- and omnipotence
  152. 152. Intelligent Design- always the best way to build something- assuming sufficient intelligence- and omnipotence- i.e., great if youre God
  153. 153. Evolution
  154. 154. Evolution- seems to have worked pretty well
  155. 155. Evolution- seems to have worked pretty well- except for the billions of required deaths
  156. 156. Evolution- seems to have worked pretty well- except for the billions of required deaths- and millions of years
  157. 157. Evolution- seems to have worked pretty well- except for the billions of required deaths- and millions of years- and all those extinct species
  158. 158. Evolution- seems to have worked pretty well- except for the billions of required deaths- and millions of years- and all those extinct species- and I still ended up with an appendix
  159. 159. Intelligent Evolution
  160. 160. Intelligent Evolution- mutations are designed, not random
  161. 161. Intelligent Evolution- mutations are designed, not random- then further mutated in captivity
  162. 162. Intelligent Evolution- mutations are designed, not random- then further mutated in captivity- and possibly slaughtered before reaching the wild
  163. 163. Recovering from Error
  164. 164. Oops
  165. 165. Oops- so, Rik had to decide something
  166. 166. Oops- so, Rik had to decide something- and he made the wrong choice
  167. 167. Oops- so, Rik had to decide something- and he made the wrong choice- and everybody can tell
  168. 168. Oops- so, Rik had to decide something- and he made the wrong choice- and everybody can tell- and he wants to fix it up so the new smartassign operator is not legacy
  169. 169. Experimental?
  170. 170. Experimental?- was it marked experimental?
  171. 171. Experimental?- was it marked experimental?- if so, we can just remove the thing
  172. 172. Experimental?- was it marked experimental?- if so, we can just remove the thing- ...in theory
  173. 173. Current Experiments
  174. 174. Current Experiments- fork emulation
  175. 175. Current Experiments- fork emulation- lvalue subroutines
  176. 176. Current Experiments- fork emulation- lvalue subroutines- weak references (!?)
  177. 177. Experimental?
  178. 178. Experimental?- was it marked experimental?
  179. 179. Experimental?- was it marked experimental?- if so, we can just remove the thing
  180. 180. Experimental?- was it marked experimental?- if so, we can just remove the thing- ...in theory
  181. 181. Experimental?- was it marked experimental?- if so, we can just remove the thing- ...in theory- if not, well do a deprecation
  182. 182. Deprecation Cycle
  183. 183. Deprecation Cycle1. (optional) announce in 5.16 delta that well probably deprecate a behavior next time
  184. 184. Deprecation Cycle1. (optional) announce in 5.16 delta that well probably deprecate a behavior next time2. start issuing warnings in 5.18
  185. 185. Deprecation Cycle1. (optional) announce in 5.16 delta that well probably deprecate a behavior next time2. start issuing warnings in 5.183. keep issuing them in 5.20
  186. 186. Deprecation Cycle1. (optional) announce in 5.16 delta that well probably deprecate a behavior next time2. start issuing warnings in 5.183. keep issuing them in 5.204. remove the behavior in 5.22
  187. 187. The Eternal Bug
  188. 188. The Eternal Bug- some behaviors cant be detected and made fatal practically
  189. 189. The Eternal Bug- some behaviors cant be detected and made fatal practically- arybase feature: we could remove it
  190. 190. The Eternal Bug- some behaviors cant be detected and made fatal practically- arybase feature: we could remove it- The Unicode Bug...
  191. 191. The Unicode Bug
  192. 192. The Unicode Bugmy $x = acquire_input;
  193. 193. The Unicode Bugmy $x = acquire_input;$x .= “Á”; # <-- that’s an A-acute
  194. 194. The Unicode Bugmy $x = acquire_input;$x .= “Á”; # <-- that’s an A-acuteprint $x =~ /á/i ? ‘match’ : ‘no match’;
  195. 195. Features in Flight
  196. 196. pluggable syntax
  197. 197. (the MOP)
  198. 198. regexp class sets
  199. 199. regex class sets$str = /A (?[a-z] - [aeiou])z/x
  200. 200. casemod escapes
  201. 201. casemod escapes
  202. 202. casemod escapes$input = <STDIN>;
  203. 203. casemod escapes$input = <STDIN>;# ricardo
  204. 204. casemod escapes$input = <STDIN>;# ricardo# RICARDO
  205. 205. casemod escapes$input = <STDIN>;# ricardo# RICARDO# Ricardo
  206. 206. casemod escapes$input = <STDIN>;# ricardo# RICARDO# Ricardo$str = “uL$input”; # Ricardo
  207. 207. casemod escapes
  208. 208. casemod escapes$let = “LN{LATIN CAPITAL LETTER A}”;
  209. 209. casemod escapes$let = “LN{LATIN CAPITAL LETTER A}”;# $let is now ‘a’
  210. 210. casemod escapes$let = “LN{LATIN CAPITAL LETTER A}”;# $let is now ‘a’$let =~ /LN{LATIN CAPITAL LETTER A}/;
  211. 211. casemod escapes$let = “LN{LATIN CAPITAL LETTER A}”;# $let is now ‘a’$let =~ /LN{LATIN CAPITAL LETTER A}/;# fails!!
  212. 212. casemod escapes$let = “LN{LATIN CAPITAL LETTER A}”;# $let is now ‘a’$let =~ /LN{LATIN CAPITAL LETTER A}/;# fails!!qr<N{LATIN CAPITAL LETTER A}>
  213. 213. casemod escapes$let = “LN{LATIN CAPITAL LETTER A}”;# $let is now ‘a’$let =~ /LN{LATIN CAPITAL LETTER A}/;# fails!!qr<N{LATIN CAPITAL LETTER A}># (?^u:N{U+41})
  214. 214. casemod escapes$let = “LN{LATIN CAPITAL LETTER A}”;# $let is now ‘a’$let =~ /LN{LATIN CAPITAL LETTER A}/;# fails!!qr<N{LATIN CAPITAL LETTER A}># (?^u:N{U+41})qr<LN{LATIN CAPITAL LETTER A}>
  215. 215. casemod escapes$let = “LN{LATIN CAPITAL LETTER A}”;# $let is now ‘a’$let =~ /LN{LATIN CAPITAL LETTER A}/;# fails!!qr<N{LATIN CAPITAL LETTER A}># (?^u:N{U+41})qr<LN{LATIN CAPITAL LETTER A}># (?^u:n{u+41})
  216. 216. ÅÂÃÄÉÃ
  217. 217. EBCDIC
  218. 218. smartmatch
  219. 219. The Future of ~~
  220. 220. The Future of ~~- deprecate and remove?
  221. 221. The Future of ~~- deprecate and remove?- make pluggable with simple replacement?
  222. 222. The Future of ~~- deprecate and remove?- make pluggable with simple replacement?- leave as is with giant warning sign?
  223. 223. The Future of ~~- deprecate and remove?- make pluggable with simple replacement?- leave as is with giant warning sign?- and then what about given/when?
  224. 224. magic flags
  225. 225. utf8 strictness
  226. 226. (??{{ ... }})
  227. 227. The Secret Roadmap
  228. 228. slim core
  229. 229. multiple cores
  230. 230. fatal implicit close()
  231. 231. fatal implicit close()
  232. 232. fatal implicit close(){
  233. 233. fatal implicit close(){ use autodie;
  234. 234. fatal implicit close(){ use autodie; open my $fh, ‘>’, $filename;
  235. 235. fatal implicit close(){ use autodie; open my $fh, ‘>’, $filename; $fh->print( ... );
  236. 236. fatal implicit close(){ use autodie; open my $fh, ‘>’, $filename; $fh->print( ... );} # should die if close fails!
  237. 237. better exceptions
  238. 238. better exceptionsmy $x = try { $y / $z} catch { return $Infinity if $_->tagged(‘divbyzero’); die $_;}
  239. 239. MOP and pluggable OO
  240. 240. chars v. bytes
  241. 241. chars v. bytes
  242. 242. chars v. bytesmy $buf = $fh->readline;
  243. 243. chars v. bytesmy $buf = $fh->readline;my $str = decode_utf8($buf);
  244. 244. chars v. bytesmy $buf = $fh->readline;my $str = decode_utf8($buf);STDOUT->print( $str );
  245. 245. chars v. bytesmy $buf = $fh->readline;my $str = decode_utf8($buf);STDOUT->print( $str );# fatal or autoencode
  246. 246. autoboxing
  247. 247. autoboxing
  248. 248. autoboxing@array->push(@list);
  249. 249. autoboxing@array->push(@list);$arrayref->push(@list);
  250. 250. autoboxing@array->push(@list);$arrayref->push(@list);for ($x->values) { ... }
  251. 251. Any questions?
  252. 252. Thank you!

×