Save 37% off PRO during our Black Friday Sale! »

Groovy's history and current status

Groovy's history and current status

Invited to talk at BreizhCamp about the past, present, future of the Groovy programming language project, with its move to the Apache Foundation, and talking about professional Open Source

137d3908243acfc30e126615d59d4e6d?s=128

Guillaume Laforge

June 11, 2015
Tweet

Transcript

  1. GROOVY
 son histoire, 
 son oeuvre Guillaume Laforge @glaforge Restlet

    — the Web API platform Groovy project team
  2. We know about APIs!

  3. From 2003 onward…

  4. 2003

  5. Bob McWhirter James Strachan

  6. Bob McWhirter James Strachan James Strachan and Bob McWhirter gave

    birth to Groovy: a dynamic and agile scripting language for the JVM. […] James always used to say that it was all Bob's fault, but indeed, James had so many groovy ideas that it's hard to believe it's not his own fault. He kept saying: "Wouldn't it be groovy if we could do this and that...". Hence the name "Groovy". That's roughly how it all started.
  7. None
  8. 7 Groovy pre-1.0 • Closures available since 2003 on Java

    1.4+ • All the nice shortcuts already, inspired by Python & Ruby • native syntax for lists, maps, etc… • Tons of useful methods to simplify 
 common Java boiler-plate code • Initially dynamically-typed only
  9. None
  10. I join the project in 2003, patches after patches, become

    committer, then lead when founders left
  11. 2004

  12. 5

  13. 11 Groovy in 2004 • A brand new parser based

    on Antlr • after two hand-rolled versions • by John Rose and Jeremy Rainer • Jochen « blackdrag » Theodorou joins the project
  14. None
  15. None
  16. 2005

  17. None
  18. 2006

  19. 6

  20. 17 First paid committer • Jochen becomes the first full-time

    paid committer • sponsored by BigSky Technologies / No Fluff Just Stuff
  21. 2007

  22. None
  23. 1.0

  24. None
  25. None
  26. None
  27. None
  28. None
  29. Spock the Enterprise testing framework

  30. 24 Groovy in 2007 — Groovy 1.5 • The long

    awaited Java 5 update • annotations, enums, generics… • Joint compiler! • Varargs support • Static imports (including import aliasing) • Named parameters without parentheses
  31. None
  32. Paul King, #1 committer from 2007 to 2010, and overall

    #1 committer too!
  33. 2008

  34. None
  35. None
  36. 29 Griffon and Easyb

  37. 30 Groovy++ fork! • Not the first fork, but 3rd

    • by Alex Tkachman (former G2One co-founder) • Big focus on static compilation • interesting playground for our forthcoming static type checking and static compilation support
  38. 2009

  39. I can honestly say if someone had shown me the

    Programming Scala book back in 2003, I’d probably have never created Groovy
  40. Have I had JPA back then, I would certainly not

    have created Hibernate!
  41. None
  42. None
  43. None
  44. None
  45. None
  46. None
  47. None
  48. None
  49. None
  50. None
  51. None
  52. 39 The Groovy Ecosystem grows…

  53. 40 Groovy 1.6 • Performance improvements with call-site caching •

    Multiple assignments • Optional return in if/else, try/catch, switch/case • More AST transformations • @Singleton, @Lazy, @Immutable, @Delegate • The Grape module system with @Grab • OSGi support
  54. 41 Groovy 1.7 • Nested and inner classes, and nested

    static classes • Missing annotation definition support • Power Asserts from Spock • Customize the Groovy Truth! • AST viewer and AST builder • SQL support improvements
  55. 2010

  56. 43 Groovy ecosystem marching on… GContracts

  57. 2011

  58. 7

  59. 46 More Groovy ecosystem…

  60. 47 Groovy 1.8 • Command chain expressions • GPars bundled

    with the Groovy distribution • Primitive calculation optimizations • Closures • as annotation parameters • currying, memoization and tail recursion • Built-in JSON support
  61. I’m joining the Groovy team!

  62. None
  63. 2012

  64. 51 Groovy ecosystem continued… • Netflix • Asgard, • Zuul

    • LinkedIn Glu • GroovyStream
  65. 52 Groovy 2.0 • Static type checking and static compilation

    • type inference, flow typing… • « Project Coin » enhancements • binary literals, underscore in numbers, multicatch block • Initial « invoke dynamic » support • Modularity of the Groovy code base with modules
  66. 2013

  67. None
  68. 55 Richer Groovy ecosystem…

  69. 56 Groovy 2.1 • Full « invoke dynamic » support

    • Type-checking extensions • Meta-annotations • @DelegatesTo annotation • Compiler customization scripts • Distribution bundling GPars 1.0
  70. 57 Groovy 2.2 • Implicit closure coercion to SAM types

    • Java lambda friendly! • Pre-compiled type checking extensions • @Memoized transformations for methods
  71. 2014

  72. 8

  73. 60 Groovy ecosystem

  74. 61 Groovy 2.3 • Traits! • Improved JDK 8 support

    • Drastic performance improvement for JSON • New AST transformations & improvements • @Builder,@Sortable,@SourceURI, @BaseScript • New markup template engine • More NIO support
  75. A look back at the past 6 months

  76. FIRED!

  77. MARCH 31st

  78. MARCH 31st RELEASE GROOVY 2.4 GRAILS 3.0

  79. None
  80. None
  81. 66 In Groovy 2.4 also… • Optimized bytecode • Bytecode

    size reduction • Reduced memory consumption • Traits @SelfType annotation • More handy GDK methods • More AST transformation refinements • Groovysh improvements
  82. None
  83. What could possibly go wrong?

  84. None
  85. THE CODEHAUS DEMISE

  86. IMPACT?

  87. 2012 2013 2014 2015 Downloads

  88. 2012 2013 2014 2015 1.7M 3M 4.5M ? Downloads

  89. 2.1 MILLIONS FOR FIRST 4 MONTHS OF 2015

  90. MAVEN CENTRAL ONLY

  91. MAVEN CENTRAL ONLY +CODEHAUS LEGACY

  92. MAVEN CENTRAL ONLY +CODEHAUS LEGACY +BINTRAY

  93. And now, what’s next?

  94. MUSICAL CHAIRS

  95. GRAILS GROOVY CEDRIC GUILLAUME JOCHEN LARI JEFF GRAEME ?

  96. GRAILS GROOVY CEDRIC GUILLAUME JOCHEN LARI JEFF GRAEME ?

  97. None
  98. MESSAGE TO THE COMMUNITY

  99. HERE TO STAY

  100. HERE TO STAY INDEPENDENCE

  101. HERE TO STAY COMMUNITY ABOVE ALL INDEPENDENCE

  102. APACHE INCUBATOR

  103. APACHE INCUBATOR MARCH 24TH

  104. 80 Incubation — mentors • Emmanuel Lécharny • Bertrand Delacrétaz

    • Roman Shaposhnik • Jim Jagielski • Andrew Bayer
  105. 81 Incubation — initial committers • Paul King • Cédric

    Champeau • Pascal Schumacher • Jochen Theodorou • Guillaume Laforge
  106. 82 Incubation — infrastructure • Mailing-lists created • archived by

    Nabble • JIRA issues imported • Sources moved to Apache’s Git • with a mirror on Github Please Star it!
  107. 83 Incubation — new committers • Officially joined the project

    as committer • Andrés Almiray • To be announced soon too! • Dierk König • Russel Winder
  108. 84 Incubation — next steps • The next key step

    is make a first release! • following the Apache guidelines • Made a first attempt June 7th, 
 but still some things to tweak to be fully ready!
  109. Now what?

  110. 86 Groovy 2.4.4 / 2.5 • Improved compiler performance •

    with an ASM class reader • @Canonical becomes a meta-annotation • More control on the meta-annotation collector • New @MapConstructor transformation • Property validation in transformation parameters • Further AST transformation improvements
  111. None
  112. None
  113. None
  114. None
  115. None
  116. Thanks for your attention

  117. Questions & Answers