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 BertrandDelacretaz
Date Wed, 11 Mar 2015 08:23:01 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 BertrandDelacretaz:
https://wiki.apache.org/incubator/GroovyProposal?action=diff&rev1=13&rev2=14

Comment:
typos and we're not making guarantees

  Groovy, if accepted by Incubator, will be a first major programming language developed under
the umbrella of Apache Software Foundation.
  
  == Proposal ==
- Groovy is programming language for the Java platform. It is a primarily dynamic language
with features similar to those of Python, Ruby, Perl, and Smalltalk. It also has optional
static type checking and static compilation facilities. 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.
+ Groovy is a programming language for the Java platform. It is a primarily dynamic language
with features similar to those of Python, Ruby, Perl, and Smalltalk. It also has optional
static type checking and static compilation facilities. 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.
  
  It must be explicitly noted, that a few sister projects such as Groovy Eclipse and others
(some of them hosted under https://github.com/groovy and listed at http://groovy-lang.org/ecosystem.html)
are not covered by this proposal. It is possible that these other projects will be joining
ASF either independently or as sub-projects of Apache Groovy in the future. For now, we are
only proposing groovy-core.
  
@@ -15, +15 @@

  == Rationale ==
  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 (DSLs) which integrate smoothly within applications.
+ There are multiple alternative languages on the JVM: Scala, Clojure, Ceylon, Kotlin, JRuby,
Golo and others 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. 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 (DSLs) 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 also
provides powerful integration options and customizations which set it apart from other languages.
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, etc.
  
  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.
+ 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 fostering
the long-term 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. 
+ The initial goals of the Groovy transition under the ASF umbrella are to establish a new
home for an already fully functioning project and also make sure that the entire development
community governs itself in 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. 
  
  == Current Status ==
- Currently Groovy provides a fully functional implementation licensed under ALv2. The project
home exists at http://groovy-lang.org/ and the majority of development is coordinated via
GitHub https://github.com/groovy. The project sports a very mature documentation and ecosystem
of project leveraging it. In fact, quite a few existing ASF project have various plugins or
subsystems written in Groovy (Bigtop, CloudStack, etc.).
+ Currently Groovy provides a fully functional implementation licensed under ALv2. The project
home is at http://groovy-lang.org/ and the majority of development is coordinated via GitHub
https://github.com/groovy. The project sports a very mature documentation and ecosystem of
projects leveraging it. In fact, quite a few existing ASF project have various plugins or
subsystems written in Groovy (Bigtop, CloudStack, etc.).
  
  === Meritocracy ===
  Groovy, up to this, has been run by a few core project members with a lot of
  contributions coming from a wide community of participants in the project.
+ 
  We want to expand our diverse developer and user community and run the Groovy project in

  the Apache way clearly signaling not only the licensing, but also the governance choice.
+ 
  Users and new contributors will be treated with respect and  welcomed; they will earn 
- merit in the project by tendering quality patches and support that move the project forward.
 
+ merit in the project by providing quality patches and support that move the project forward.
 
+ 
  Those with a proven support and quality patch track record will be encouraged to become
committers.
  
  === Community ===
  There are just a few core team members with over a hundred contributors to the project.
If Groovy is accepted 
- by incubator, transitioning the community to embrace the Apache Way of governance would
be a primary initial goal.
+ by the Incubator, transitioning the community to embrace the Apache Way of governance would
be a primary initial goal.
  We would solicit major existing contributors to become committers on the project from the
get go.
  
  === Core Developers ===
@@ -70, +75 @@

  
  === 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 on March 31st,
+ project. Even though the sponsorship of the core team by Pivotal is ending on March 31st,
  the sheer size and diversity of the community is a guarantee against
- project being orphaned.
+ the project being orphaned.
  
  
  === Inexperience with Open Source ===
  The majority of the proposers here have day jobs that has them working near 
  full-time on open source projects. A few of us have helped carry 
- other projects through incubator.  Groovy to date has been developed as 
+ other projects through the Incubator.  Groovy to date has been developed as 
  an open source project.
  
  === Homogeneous Developers ===
@@ -93, +98 @@

  go far from the Java family tree.
  
  === Relationships with Other Apache Products ===
- Groovy currently doesn't dependent on any  ASF projects, but a few
+ Groovy currently doesn't depend on any  ASF projects, but a few
  ASF projects already depend on Groovy.
  
  === A Excessive Fascination with the Apache Brand ===

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


Mime
View raw message