The Apache Incubator is the entry path into ASF for projects and codebases that aspire to become part of the foundation's efforts. All code donations from external organizations and existing external projects wishing to join Apache enter through the incubator.
The incubation of Groovy is the first step to becoming an ASF Top-Level Project. The Groovy community will join more than 350 open source initiatives overseen by the ASF --including 35 projects in the Apache Incubator-- and will benefit from the foundation's community-driven process, stewardship, infrastructure, outreach, and events.
"We are happy to welcome Groovy to the Apache Incubator," said ASF vice chairman Greg Stein, in a statement. "Groovy has a diverse and active community that will find 'The Apache Way' of meritocratic development a perfect complement to their existing recognition of the value and benefits of the Apache License, under which their code is released. The ASF's proven framework will offer Groovy the organizational, legal, financial, and infrastructure support needed to continue to be available to its established user base and millions of developers worldwide."
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, said Roman Shaposhnik, an ASF vice president, Groovy project mentor and software engineer at Pivotal, in his Groovy incubation proposal. 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.
“The Groovy development team is super excited at the idea of joining the Apache Software Foundation, Guillaume Laforge, primary developer of Groovy, told eWEEK. “This means the future will be brighter, as we're joining a large family of useful and interesting projects at the Apache Software Foundation. We'll continue to develop the project under the Apache umbrella, which encourages and promotes the community, the collaboration around the sources of the project, and the cross-pollination as well across projects of the foundation.”
Groovy uses 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 – initially G2One, which was acquired by SpringSource, which was acquired by VMware where the technology was spun out into Pivotal. This proposal aims at bringing the Groovy community under the umbrella of the Apache Software Foundation. Groovy 2.4 will be the last major release under Pivotal Software's sponsorship, which is scheduled to end on March 31, 2015.
Groovy’s move to Apache is directly related to Pivotal pulling its sponsorship of the project.
“We want to send a clear signal to the Groovy community and ecosystem that the Groovy project is there for the long term, and is not at the whim of one single corporate sponsor, but instead, seeks to further open up the development and reach of the project to other contributors and users,” Laforge said.
“Groovy is a pretty mature language,” Shaposhnik said. “After twelve 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.”
In the proposal, Shaposhnik notes that there are multiple alternative languages on the JVM: Scala, Clojure, Ceylon, Kotlin, JRuby, Golo and others, but Groovy is the only one that can easily integrate with Java in both directions -- 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 -- 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, according to the proposal.
Meanwhile, “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,” Shaposhnik said in the proposal. “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.”