The list of assignments proposed for Google Summer of Code 2010
Assignment 1 - Software Transactional Memory implementation for Groovy
STM is one of the promising concepts that aim to enable developers to write safe concurrent code. Several promising open source JVM-based implementations have appeared recently - (http://multiverse.codehaus.org/overview.html, http://code.google.com/p/deuce/, http://akkasource.org/). As an initial part of the assignment the existing options should be investigated in order to build a suitable STM strategy for the GPars project. A second part of the assignment would be to implement a Groovy wrapper around the chosen solution, integrating smoothly STM into Groovy and the GPars library as well as providing an intuitive API or a set of DSLs.
Assignment 2 - Distributed concurrency
All the GPars concurrency abstractions currently target single-box programming. An increasing demand for distributed concurrency has been observed among GPars users. Specifically, users would like to be able to distribute actors and agents on different boxes as well as allow dataflow channels to communicate across the network. As part of this assignment the contributor would:
- design GPars distributed abstractions as a seamless extension to the currently available single-box concepts
- choose the underlying networking technology
- build a robust implementation that would then be packaged as a GPars extension library
Assignment 3 - Document the GPars concurrency concepts
With the gradually increasing adoption of GPars and concurrent programming in general among mainstream developers, we've been constantly hitting the knowledge and terminology barrier, which prevents developers from fully leveraging the powerful concurrency concepts and leaves them with only partial awareness of the available options and their best use. The GPars project would greatly benefit from clear and understandable documentation, including a set of topical tutorials, how-to's as well as an improved User Guide and code samples. Writing these documents as well as coming up with good ways to communicate the principles and their practical use to the GPars users is the main focus of this assignment.