Tentative Roadmap
Subject: Tentative Roadmap
Newsgroups: gmane.comp.lang.groovy.jsr
Date: 2007-12-16 23:50:06 GMT
Dear Groovy developers,
Now that we have released 1.5, it is time to think about the future of Groovy, by discussing its roadmap.
After some discussions at GDC#4 (
http://docs.codehaus.org/display/GroovyJSR/GDC4+Discussions), on the lists, and elsewhere, we've listed possible improvements and new features.
Jochen and myself compiled a tentative roadmap this weekend, taking these ideas into account and trying to lay them out across potential release numbers.
This is a tentative roadmap.
Certain features can be discussed, whether we do want them or not.
And there's room for moving features from one to another release.
New ideas missing can also be introduced.
So it's still pretty open at the moment.
Note that the roadmap can change across the course of time according to the progress (or lack thereof) we make on the GEPs (Groovy Extension Proposals).
It is not set in stone today, even after our upcoming discussions. The GEPs will drive us through the releases.
It is very important that we try to clearly define what we want to do in the coming releases, and not just commit blindly any cool hacks 
We need to have crystal clear scope and semantics for all major features.
First of all, the basic idea: instead of one huge release a year with several betas and RCs, it'd be great if we could make more frequent releases (with a few betas and RCs) every two or three months or so, but containing a lower number of major features. So ideally, we could release
1.6 / 1.x throughout the year, with a bigger 2.0 at then end of next year with a reworked MOP system.
There are three main kind of releases:
- 1.5.x will provide some patches to the 1.5 final release
- 1.6 /
1.x will introduce a few major features at each release depending on the completeness of the GEPs
- and 2.0 will focus on the reworked MetaClass runtime system and will be worked on in parallel to the other 1.x releases.
Ideally, we should try to release 1.5.1 next week, before Christmas, with the current fixes for the Ant builder, the dead lock in the class loader.
And probably a 1.5.2 when we find the concurrency issue we have on parallel environments.
Without further ado, here's the proposed Roadmap.
The GEPs will be there for defining the exact scope of the major features by giving some finer-grained details of the content of the upcoming releases.
I'll publish this roadmap on the JSR wiki.
Groovy Roadmap
Groovy 1.5.1
- Bug fix release
- Deadlock in GroovyClassLoader
- Problem with Ant tasks
Groovy 1.5.2
- Bug fix release
- Concurrency issues (unless it's fixed in 1.5.1)
Groovy 1.6
- Based on JDK 1.5 with Retro* version available for JDK 1.4
- Make sure we can run the unit tests with the retro-weaved jar to ensure compatibility
- Annotation definition in Groovy
- Currently, annotations can't be defined in Groovy, only used
- Multiple assignment
- GEP
- Define the exact scope of multiple assignment by revisiting the existing GEP page
Groovy 1.7
- Upgrade to ASM 3
- if necessary or deemed useful (more efficient bytecode?)
- Groovy incremental compiler
- Especially useful for the Eclipse plugin
- AST transformations
- GEP
- reuse of annotations or not
- exact scope of those transformations
- pluggable AST transformations for advanced DSL or integration cases
Groovy 1.8
- Nested Classes & Anonymous Inner Classes
- GEP
- The exact semantics with relationship to the MOP should be properly defined through a GEP
Groovy 1.9
- Upgrade to Antlr 3
- We'll be able to use the tooling support accompanying Antlr 3
- Concurrency features
-
GEP
- Define what coverage we'd like to bring
- Rollback the iterator features to properly discuss them first
- Work on this theme first as a module, and if deemed right, we can bring it back to groovy-core
Groovy 2.0
- New MetaClass system
- Benchmark test suites to track progress of performance across releases
- GEP
- defining the scope of changes
- describing the new system
- proposals of a more homogeneous system
- homogenize categories, EMCs, custom metaclasses
- homogenize the configuration / declaration / convetions
- have per-thread / scoped EMCs (like categories)
- per-module/library metaclasses
--
Guillaume Laforge
Groovy Project Manager
G2One, Inc. Vice-President Technology
http://www.g2one.com