GSoC/GCI Archive
Google Summer of Code 2012

Scala Team

Web Page: http://www.scala-lang.org/gsoc2012

Mailing List: http://www.scala-lang.org/node/199#scala

Scala is a general purpose programming language designed to express common programming patterns in a concise, elegant, and type-safe way. It smoothly integrates features of object-oriented and functional languages, enabling Java and other programmers to be more productive. Code sizes are typically reduced by a factor of two to three when compared to an equivalent Java application.

Many existing companies who depend on Java for business critical applications are turning to Scala to boost their development productivity, applications scalability and overall reliability.

Scala runs on the JVM and .NET, integrating near-seamlessly with libraries on those platforms. GWT integration is also actively developed for Scala (http://scalagwt.github.com/). This signficantly reduces barriers to adoption and has been a key factor in Scala’s success. Worldwide, there are an estimated 100,000 skilled Scala programmers - a number that is continually increasing. We run two very succesful Scala Days conferences in 2010 and 2011 which gathered significant interest within the community - both conferences were quickly sold out before the deadline. We expect an even larger turnout for this year’s conference in London. Scala development is supported by quality development tools: Jenkins for build, issue tracking with Jira, mailing lists (user discussions as well as architecture decisions are made there) and an extensive test-suite. All Scala source code has been recently moved to github (from svn) and since then we are receiving even more contributions from the community.

The Scala team was participating in GSOC in 2010 and 2011 edition and we had many successful projects that were involved in extending the main language compiler, improving IDE support and working on external open-source projects that were written in Scala (like Akka or Lift).

We look for motivated students are who are good in object- and functional-oriented programming (ideally have some familiarity of Scala itself). Apart from the projects proposed on the ideas page we are interested in supervising any projects as long as they are written in Scala.

Projects

  • [ScalaI DE] Integration of Specs2 with the Scala IDE I would be interested in joining the development of the Scala IDE. This project is interesting for me because software testing is a field that I find extremely important. I believe making it easier for developers to create, run, and verify the results of such tests and executable specifications is an essential feature. My goal is to contribute a new plugin which can easily manage tests created by the Specs2 framework, and possibly a simple tutorial about its usage. This is an outstanding possibility I would really like to attend to.
  • Debugging of Parser Combinators The goal of this project is to create a graphical debugger of parser combinators. This will be useful both as an educational tool for people learning about parser combinators as a visual aid, as well as programmers having problems with their particular parsers for whom the debugger will make it easier to spot how their parser behaves 'in the wild'.
  • Dynamic Scala This is a proposal for adding dynamic typing to the Scala language. It is meant to be viewed in a monospace font. See additional info link for a monospaced version.
  • Improving ScalaIDE for Eclipse Recognizing that a new Scala developer will probably start with a popular and perhaps familiar IDE, I feel that improving the experience with ScalaIDE for Eclipse will benefit not only them but skilled programmers as well. Advanced Scala thinkers using Emacs/Vim likely don't feel an IDE will add a tangible benefit to them, so I hope that improving the Eclipse Scala plugin will increase the value of an IDE for them as well.
  • Porting and extending the Parallel Collections for the Android platform Scala Parallel Collections [1] are a proven data-parallel programming API for writing parallel applications on the Java Runtime Environment. They automatically parallelize bulk operations such as filtering, mapping, grouping or traversal of elements. The entire framework is extensible with new collection implementations and, since the upcoming 2.10 release, modular in the scheduler implementation [2]. Programs written in Scala are compiled to the JVM bytecode, and thus easily ported to the Android platform [3][4]. The Scala development on the Android is gaining more and more traction for this reason. With the arrival of multicore devices on the Android platform, parallel collections are becoming increasingly interesting to Android developers as they can bring significant speedups to existing applications. There are several goals in the proposed project: * First, to improve the build system for Scala development on Android. * Second, to port parts of the Fork-Join framework relevant for the existing parallel collection scheduler to the Android platform. * Third, to implement a version of the scheduler which is more suited for datasets for which the amount of work-per-element is skewed. * Fourth, to implement a set of additional primitives for the parallel collections framework which are relevant for Android apps. * Finally, evaluate the performance of parallel collections on the Android platform and produce a detailed report on this. These items are explained further below.
  • Real-time raytracer written functionally in Scala The aim of the project is to create a graphics engine with a raytracing renderer. The project would be written mostly in Scala and adhering to the functional programming paradigms. One of the goals is to make the rendering in real-time, so that it can be used in games, 3D visualization tools and CAD applications. Functional programming is perfect for this kind of problems, since rendering as a whole is a functional problem (take a model and generate an image). Raytracing is also an embarrassingly parallel problem (scaling near linearly with the number of processors), which means that functional programming allows for easy multithreading. The mathematical nature of 3D computer graphics makes functional programming a natural choice for expressing many of the algorithms and data structures. The project will be written with the Kojo Learning Environment in mind ( http://www.kogics.net/kojo ), serving as a 3D renderer for this project founded by Lalit Pant.
  • Smart Quick Fixes for Scala IDE for Eclipse This project is about implementing a 'QuickFix' functionality for Scala development within the Eclipse. The implemented mechanism should be used to provide automatic suggestions for fixing compilation errors, code completion proposals, and refactoring suggestions.