incubator-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Incubator Wiki] Update of "GroovyProposal" by CedricChampeau
Date Sun, 08 Mar 2015 17:27:43 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Incubator Wiki" for change notification.

The "GroovyProposal" page has been changed by CedricChampeau:
https://wiki.apache.org/incubator/GroovyProposal?action=diff&rev1=3&rev2=4

Comment:
Updated the proposal and rationale

  Groovy, if accepted by Incubator, will be a first major programming language developed under
the umbrella of Apache Software Foundation.
  
  == Proposal ==
- Groovy is an object-oriented programming language for the Java platform. It is a dynamic
language with features similar to those of Python, Ruby, Perl, and Smalltalk. It can be used
as a scripting language for the Java Platform, is dynamically compiled to Java Virtual Machine
(JVM) bytecode, and interoperates with other Java code and libraries. Groovy uses a Java-like
curly-bracket syntax. Most Java code is also syntactically valid Groovy, although semantics
may be different. Groovy has long been developed under an Apache License v2.0 under an open
governance community management process. However, so far Groovy has been a project mostly
sponsored by a single company. This proposal aims at bringing Groovy community under the umbrella
of the Apache Software Foundation.
+ Groovy is programming language for the Java platform. It is a dynamic language with features
similar to those of Python, Ruby, Perl, and Smalltalk. It can be used as a scripting language
for the Java Platform or to write complete applications, is compiled to Java Virtual Machine
(JVM) bytecode, and interoperates with other Java code and libraries. Groovy uses a Java-like
curly-bracket syntax. Most Java code is also syntactically valid Groovy, although semantics
may be different. Groovy has long been developed under an Apache License v2.0 under an open
governance community management process. However, so far Groovy has been a project mostly
sponsored by a single company. This proposal aims at bringing Groovy community under the umbrella
of the Apache Software Foundation. 
- 
  == Background ==
  Groovy 1.0 was released on January 2, 2007, and Groovy 2.0 in July, 2012. Groovy 3.0 is
planned for release in 2015, with support for a new Meta Object Protocol. Since version 2,
Groovy can also be compiled statically, offering type inference and performance very close
to that of Java. Groovy 2.4 will be the last major release under Pivotal Software's sponsorship,
which is scheduled to end on March 31, 2015
  
  == Rationale ==
- TBD
+ 
+ Groovy is a pretty mature language. After 12 years of development, it has grown from being
primarily a dynamic scripting language on the JVM to an optionally statically compiled language
allowing the same performance level as Java applications. With the release of Groovy 2.4,
the language targets the largest pool of mobile developers with native Android support. Groovy
has been integrated in a large number of applications, including well known open-source projects
like Jenkins, Gradle, ElasticSearch, Spring and more.
+ 
+ There are multiple alternative languages on the JVM: Scala, Clojure, Ceylon, Kotlin, JRuby,
Golo, but Groovy is the only one which has proved to be very easy to integrate with Java in
both ways: Groovy code using Java code, but also Java code using Groovy code. Groovy even
provides a joint compiler which allows interdependent Java and Groovy classes to compile together.
But Groovy also supports dynamic code generation, that is to say classes at runtime, making
it a perfect fit for scripting. With a very lightweight and malleable syntax, it is also easy
to build internal domain specific languages which integrate smoothly within applications.
+ 
+ Groovy provides a number of unique features, like builders (Java 8 has lambdas but still
has syntactic overhead and no notion of delegate), AST transformations (compile-time metaprogramming)
or type checking extensions (which allows the developer to bring the compiler to levels of
type checking and type inference that go far beyond what other languages do). Groovy is also
unique in the way it allows the developer to choose between various paradigms without compromise:
functional vs object-oriented, statically compiled vs dynamic, scripting vs applications,
...
+  
+ 
+ Despite all those advantages, and the fact that Groovy is widely adopted (4.5 million downloads
in 2014 for Groovy alone), only a few Apache projects include Groovy and not a lot of them
leverage its full power. Some developers tend to choose Scala for example to build DSLs without
even knowing that the learning curve is much easier with Groovy, or that they can leverage
powerful type inference in their own DSLs.
+ 
+ Android development is also a domain where the weight of Java and old-style APIs is heavy.
Groovy 2.4 has proved that Android development could benefit from its closures, extension
methods and static compilation to build applications which are as fast as Java, but with code
which is much more maintainable and decoupled from Android APIs. Code generation libraries
like SwissKnife illustrate what Groovy can offer for Android development. However, without
full-time development on this topic, Groovy has a very tough competition with languages like
Kotlin being intensively (and privately) sponsored to target this platform. With Groovy joining
Apache, we hope that more developers would be able to join the effort and help reduce the
footprint of the language, build libraries that leverage the full power of Groovy while making
guarantees on the future of the language.
+ 
  
  == Initial Goals ==
  Initial goals of the Groovy transition under the ASF umbrella is to establish a new home
for an already fully functioning project and also make sure that the entire development community
governs itself by the "Apache Way". Please note that a sister project of Groovy -- Grails
-- is not part of this proposal. If Grails community makes a decision to join ASF it will
do so as an independent, albeit related, project. 
@@ -40, +50 @@

  NOT currently affiliated with the ASF, although quite a few contributors are.
  
  === Alignment ===
+ 
  Groovy has been integrated into Apache Bigtop, Apache CloudStack, Apache Ofbiz and quite
a few other projects.
  
  
@@ -52, +63 @@

  while balancing it with the needs for extreme stability and coherency of the core
  language implementation.
  
+ Groovy has also historically been hosted at Codehaus. While the project has started
+ to migrate off the Codehaus infrastructure, some critical tools of the project are
+ still hosted there: JIRA, the mailing-list, and the deprecated wiki. Codehaus has
+ announced end-of-support for mid-April, making the migration critical.
+ 
  === Orphaned products ===
  The community proposing Groovy for incubation is a strong and vibrant open source
- project. Even though sponsorship of the core team by Pivotal is going to end in
+ project. Even though sponsorship of the core team by Pivotal is going to end on March 31st,
- April 2015, the sheer size and diversity of the community is a guarantee against
+ the sheer size and diversity of the community is a guarantee against
  project being orphaned.
  
  
@@ -132, +148 @@

    * Guillaume Laforge
    * Jochen Theodorou
    * Paul King
-   * TBD
+   * Pascal Schumacher
  
  == Affiliations ==
-   * Pivotal: Cédric Champeau, Guillaume Laforge
-   * TBD: Jochen Theodorou, Paul King
+   * Pivotal: Cédric Champeau, Jochen Theodorou
+   * Restlet: Guillaume Laforge
+   * Asert: Paul King
  
  == Sponsors ==
  

---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@incubator.apache.org
For additional commands, e-mail: cvs-help@incubator.apache.org


Mime
View raw message