Google Summer of Code 2012

Welcome to the Boost C++ Libraries' home page for Google Summer of Code (GSoc). This page provides information about student projects, proposal submission templates, advice on writing good proposals, and links to information on getting started writing with Boost.

This year Boost is looking to fund work on a number of different kinds of proposals:

  • toolkit-like extensions to existing libraries,
  • finishing or extend sandbox libraries,
  • new data structures and algorithms, and
  • multiple competing proposals for the same project.

For projects involving new or experimental libraries, the process of getting source code "Boost-branded" can take much longer than a single summer. In many cases, it can take much longer than a single year. Even if a library is accepted, there is an expectation that the original author will continue to maintain it. Building a library as part of Boost can easily entail a multi-year commitment. For this reason, we are willing to consider multi-year GSoC projects. However, prospective students must limit the scope of their work to a single summer. We may invite the most successful students to re-apply in 2013.

Requirements

Students must submit a proposal. A template for the proposal can be found here here. Hints for writing a good proposal can be found here.

We strongly suggest that students interested in developing a proposal for Boost discuss their ideas on the mailing list in order to help refine the requirements and goals. Students who actively discuss projects on the mailing list are also ranked before those that do not.

Projects

The following projects have been suggested by potential mentors. If the descriptions of these projects seem a little vague... Well, that's intentional We are looking for students to develop requirements for their proposals by doing initial background research on the topic, and interacting with the community on the mailing list to help identify expectations.

Projects from previous years can be found here. There are still a number of interesting projects found in these pages.

Boost Graph: Challenges and Feature Requests

The Boost.Graph library has a list of challenges and feature requests here: http://www.boost.org/doc/libs/1_49_0/libs/graph/doc/challenge.html.

Boost.Graph: Single Source Shortest Path with Turn Restrictions

Develop an algorithm or suite of algorithms to solve the SSSP problem when some turns are not possible (i.e., the algorithm cannot cross from edge x to edge y).

Boost Polygon: Straight Skeleton of Polygons Algorithm Extension

The straight skeleton is a well-known and very useful geometric operation. Specifically it provides the basis for a correct polygon resizing algorithm. To be most useful the straight skeleton algorithm implementation would need to be general enough to allow edge weighted straight skeleton (analogous to the relative pitch of the portion of the roofline related to that edge), handle multiple disjoint polygons with holes simultaneously, allow bounded skeleton computation as an optimization for resizing, be numerically robust and on the same order of computational complexity as polygon clipping in the common case (when bounded). As a simplifying assumption the input and output coordinate space can be assumed integer.

A good project proposal will include details about the problem and how they will be addressed and background information about the student, especially related to C++ experience and computational geometry experience. Successful project completion will lead to eventual release of the algorithm as part of Boost.Polygon.

Feature Requests

Some project ideas might be culled from the  Feature Requests in the issue tracking system. Note that feature complexity varies per component and per issue. If you plan to submit a proposal for a Feature Request, you should definitely confer with the library maintainer for some initial ideas about complexity and feasibility. Proposals grouping a number of related Feature Requests might also be of interest.

Porting to C++11

Boost would benefit from porting the many libraries from C++98/03 to C++11. Proposals for these projects should carefully consider the impact of new language features on the target library. Features like variadic templates, decltype, auto, uniform initialization, forwarding, move semantics, and the new Standard Library features may have a significant impact on the design of the new library.

Boost.Process: A new draft

We've been working on several Boost.Process drafts since 2006. At BoostCon 2011 Jeff and I gave a presentation on the latest status of Boost.Process. We set the path for a future version, and Jeff checked in an initial version at  https://github.com/JeffFlinn/boost-process. I was busy after BoostCon working on a Boost.Asio extension to wait asynchronously for Windows processes. This Boost.Asio extension shipped with Boost 1.49.0 and is known as boost::asio::windows::object_handle (a solution within Boost.Process to wait asynchronously on Windows was controversial; it's now out of Boost.Process and fits much better into Boost.Asio). Now it's time to go back to Boost.Process. I (Boris Schaeling, boris @ highscore.de) mentored a student already in 2010 who worked with me on Boost.Process 0.4. Now we could give it another try (and maybe make another step closer to version 1.0? :).