Message-ID: <517561568.887.1429341968668.JavaMail.firstname.lastname@example.org> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_886_2060884233.1429341968667" ------=_Part_886_2060884233.1429341968667 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
There are many ways you can help make Groovy a better piece of s= oftware - and we can use all the help we can get. Please dive in and help! =
Try surfing the documentation - if something is confusing or not clear, = let us know - or better still fix it for us. All of this website is maintai= ned in a wiki, so please go right ahead and fix things i= f they are wrong or contribute new documentation.
Want to do some hacking on Groovy? Try surfing the issue tracker (see below) for open issue= s or features that need to be implemented, take ownership of an issue and t= ry to fix it.
Please raise a new issue in our issue tracker (see below).
If you can create a JUnit test case (either via Groovy or Java code) the= n your issue is more likely to be resolved quicker. Take a look at some of = the existing unit tes= ts cases, find one and modify it to reproduce your problem.
Then we can add your issue to Git an= d then we'll know when its really fixed and we can ensure that the problem = stays fixed in future releases.
The preferred way of contributing code to Groovy is by submitting pull r= equest to the project on Github.
The best workflow for this is to raise a new issue in the tracker (see below), fix the code= in a branch on your forked project, and submit a pull request via the Gith= ub UI. Be sure to mention the JIRA issue id in the pull request and to add = the pull request id to the JIRA ticket so that both are tied together. This= workflow is described in more detail in a blog post here.
If you plan to contribute a "big" enhancement please discuss i= t on the developer mailing list first. Give everybod= y a few days for discussion before you start working. This assures that you= do not waste time implementing a feature that could be rejected later on.<= /p>
Instead of pull request we also accept patches. Please attach these to a= JIRA issue
Whenever possible please submit enhancements and bugfixes with accompany= ing unit tests.
Dune to JIRA spam-bots you have to register with Codehaus Xircles b= efore accessing the issue tracker= a>. Follow these steps:
See http:/= /groovy.329449.n5.nabble.com/How-can-register-in-Groovy-s-JIRA-td5713775.ht= ml for additional details/help.
Here's a list of some issues contributors could have a lo= ok at, to get started contributing to Groovy. You can also contrib= ute to unassigned issues/enhancements without the "contrib" tag, = just add the comment about your intentions in this issue and start working = on it.
The following table is a summary of the fields where we would like to im= prove Groovy but do not find enough time to implement those features. For e= ach of them, you will find a short description, an idea of the skills you n= eed to implement them and the level of difficulty. Of course, getting into = Groovy Core can be sometimes hard, so we should always work as a team and e= ach subject below would be followed by a mentor.
|Grammar rewrite||The current Groovy grammar is writ= ten using ANTLR 2. For maintenance reasons, we would like to migrate the gr= ammar to ANTLR 3 or ANTLR 4. Originally planned for Groovy 3, we will proba= bly not be able to do that if no one helps. It is an important background t= ask which covers the grammar of Groovy, the grammar of Java and a good know= ledge of the Groovy AST (for backwards compatibility).||Grammar writing (Antlr helps a lot= !), parsers, Groovy AST (nice to have)||Hard||Jochen Theodorou||
|Bytecode optimizations||Since Groovy 2.0, we have two flav= ours of bytecode: the dynamic bytecode, corresponding to the main and legac= y Groovy, and a "static" bytecode, triggered using the @CompileSt= atic annotation, which is closer to what Java produces. Both need specific = bytecode optimizations.||ASM, JVM Bytecode||Hard||Cédric Champeau||In progress|
|Lazy datastructures and comprehens= ions||
The idea would be to have Groov= y support generators, lazy evaluations, ... See for example http://blog.bloidonia= .com/post/22117894718/groovy-stream-a-lazy-generator-class-for-groovy= p>
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.
|New MOP||The new MOP (Meta Object Protocol)= is a key feature of Groovy 3. The objective is to rewrite the MOP totally,= in order to provide a more consistent, powerful and performant MOP. See http://groovy.codehaus.org/MOP+2.0+ideas||Language theory||Medium||Jochen Theodorou||In progress|
|Bugfixes||As the language is widely used, we= have a lot of bug reports. Unfortunately, the team is too small to tackle = them all. If you find a bug that you think you can work on, do not hesitate= to help!||Easy to hard||any member of Groovy core||In progress|
|Modularization||Groovy 2 came with the concept of = modularization and is now splitted into modules. Each module is a logical g= roup of features (for example, XML, JSON, Swing, ...). While Groovy core wa= s reduced by half, there's still plenty of room for improvement and further= modularization.||Architecture||Easy||Paul King||In progress|
|Documentation||On every project, documentation is= never enough, nor up-to-date. Groovy falls into that trap too. A very good= way to get into Groovy is to start documentation, fix documentation or imp= rove javadocs. There are also side projects like a new website, a new Groov= y Web Console which require some time but were never started.||Easy||Guillaume Laforge||In progress|
|Specification||Help joining the specification eff= ort. The Groovy language has evolved a lot and there's no complete specific= ation available yet.||Medium||Guillaume Laforge||Standby|
|Security||Help us improving java.security su= pport in Groovy. We have, for example, unit tests failing periodically beca= use of security tests (Security Manager related). No one in the team is an = expert in that domain so any help would be very appreciated!||Java security||Medium||Cédric Champeau||Standby|
|Groovy for Android||
A lot of us would like to see G= roovy run on Android. There are some technical challenges but the good news= is that some hackers (Marcin Erdmann and Erik Pragt) managed = to do it for Groovy 1.7. It's not production ready yet, and we would like t= o have, at some point, support in the Groovy distribution itself (aka, no p= atch required). Running Groovy is one thing, doing something with it is ano= ther, so a side project for this is definitely to make Groovy a language of= choice to build Android applications. We think some projects like Griffon,= for example, have a strong interest in that, by making the design of UIs m= uch easier.
|Android, JVM||Medium||Cédric Champeau||Prototype|
|Groovy Console||The Groovy Console is a very nice = tool. However, there are several things that can be improved: syntax highli= ghting, especially for large scripts, which is too slow; the AST Browser wh= ich can be improved in several ways (displaying node metadata, more focused= bytecode view, ...)||Swing, Groovy||Easy to medium||In progress|