Groovy on Android (DiscoBot project)
Currently, Groovy is not able to run properly on Google's Android mobile platform out of the box. A couple years ago, a first GSoC project (nicknamed DiscoBot), started porting Groovy to Android, using Groovy 1.7, but performance wasn't there (20s to startup a simple Hello World). The goal of this GSoC project is to work with the Groovy core team and the other past contributors of the DiscoBot project, towards the goal of making any Groovy program to run on the Android platform well, so that apps for such mobile phone can be written fully in Groovy.
It will be interesting to investigate what modifications can be brought to Groovy to make it support Android in a more straightforward manner, how we can leverage the recently introduced static compilation capabilities, and also see how Groovy builders and other features can help further streamline the development of Android applications using Groovy.
Possible mentors: Jochen Theodorou or Guillaume Laforge, or one of the contributors of DiscoBot
Rewrite the Groovy grammar to Antlr 3
An Antlr v4 grammar for Groovy
As of today, Groovy 2 still uses Antlr v2 for its grammar. The original grammar was based off of the Java grammar itself. But we would like to move to a newer create a dedicated grammar for Groovy with the latest version of Antlr. However, the migration is not seemless and transparent, so it would be a great opportunity to do a better clean room re-implementation of the Groovy grammar. A new grammar would be cleaner, easier to work with, especially as various IDE tools help author Antlr 3 grammars better than the previous versions., ie. with version 4. Antlr v4 has evolved nicely and makes it easier to evolve grammars, without the painful work of rule disambiguation. So the idea is to develop a clean room implementation of the Groovy grammar for the upcoming versions of Groovy, that would be able to also cover new syntax elements, like the support of Java 8 lambda syntax, or the type annotation JSR, and we'd also take the opportunity to tackle things that we haven't covered so far, like JavaDoc comments in the resulting AST.
Possible mentor: Jochen Theodorou
Lazy data structures and comprehensions
The idea would be to have Groovy support generators, lazy evaluations, ... See for example: http://blog.bloidonia.com/post/22117894718/groovy-stream-a-lazy-generator-class-for-groovy
It is also important to take a look at what APIs are being written in JDK 8 because most of the APIs written for the new lambdas are specifically lazy.
Possible mentor: Paul King
As we are overhauling our documentation, the Groovy project is interested into having documentation that is fully tested and always up-to-date with our codebase. With those objectives in mind, a little tool has been created to provide a solution for having "executable documentation": Dokspek (https://github.com/glaforge/dokspek). This tool takes wiki pages in entry, extracts Groovy code snippets from the content, to run those snippets as JUnit tests, and then resulting in HTML documentation and tests that are passing as part of our test harness.
We'd like to further improve this tool and put it in place in the Groovy codebase. Additional refinements can be brought, like having nice table of content, indexing of concepts, PDF and HTML documentation generation, etc.
Project: Groovy / DokSpek
Possible mentor: Guillaume Laforge