Steps to Apply

1. Familiarize yourself with the project

Familiarize yourself with the project. Download and in Follow a tutorial, write a few programs, and try out some examples from the examples/primers directory. Become familiar with the project’s contributor guidelines.

2. Help the Chapel developers get to know you

Join the chapel-developers or chapel-users mailing lists or visit our irc channel. Browsing open and closed GitHub pull requests and the developer best practices is a great way to see how Chapel development proceeds. Show us that you are willing and able to contribute to the project. See Contributing to find entry-level tasks to work on while getting started.

3. Find a task that excites you

Since you’ll be working on this task as a full-time summer job, it needs to be something you care about. Work with us on the mailing lists or irc channel in order to understand the technical aspects of a potential project and to figure out an approach. You’ll learn more about what the project entails, and we will learn more about how you approach technical topics.

4. Prepare a project proposal

Please follow the following template for your proposal:

1. Introduction

  1. In a few sentences, describe your overall background and current studies.
  2. Briefly describe any relevant course work for the project you are proposing.
  3. Describe why you wish to participate in the Google Summer of Code.
  4. Tell us why you wish to work with the Chapel project in particular.
  5. What do you hope to learn over the summer?
  6. How well can you speak and listen in English? How strong is your written English?
  7. Do you have any other commitments for the summer period? Do you have planned vacations?

2. Contact

  1. What email address and IRC nick will you be using to communicate with us? (Please use a unique IRC nick)
  2. What time zone do you live in? Will that change during the summer? Describe in UTC+x or -x.
  3. What times will you be comfortable working? How much earlier could you start your day and how much later could you stay if it helped you to communicate with other developers (e.g. with a teleconference or pair programming session).

3. Coding experience

  1. Describe your experience with Chapel, C, C++, and any other programming experience you wish to mention.
  2. Describe any experience with compiler development, parallel computing, or any other knowledge you know will be useful for the task.
  3. What experience do you have being part of a development team?
  4. What is the biggest project you have worked on as a software developer? What did you learn in that project? What was your role in that project over time?
  5. Is any of the code you have written already open source? Can you point us to some code you have written?
  6. What have you already contributed to the Chapel project? Please list pull request numbers.

4. Survey

This section is for our information and will not be used while evaluating your application

  1. Are you familiar with these tools? (Answering this question will help us provide guidance):
    1. IRC and mailing lists
    2. git source code management
    3. GitHub
    4. make, gcc, gdb, and valgrind development tools
  2. Had you heard about Chapel before the Summer of Code? If so, where? If not, where would you advise us to advertise?
  3. What was the first question concerning Chapel that you could not find an answer to quickly?
  4. What will keep you actively engaged with the Chapel community after this summer is over?

5. Prerequisites

  1. What operating system(s) do you work with?
  2. Are you able to install software on the computer you plan to use?
  3. Will you have access to a computer with an internet connection for your development?

6. Self-assesment

  1. What does useful criticism look like from your point of view as a committing student?
  2. How well can you give constructive advice? How well can you receive advice?
  3. What is your development style? Do you prefer to figure out/discuss changes before you start coding? Or do you prefer to code a proof-of-concept to see how it turns out?

7. The task

  1. Describe the task you intend to work on. If it’s one of the tasks from our ideas list, let us know which elements of it you want most to focus on, if you know. If you are proposing a new task, describe the task and who you have already discussed it with.
  2. Why is this task exciting to you? Why did you choose this particular task? What do you hope to learn by working on it?
  3. Provide a rough estimated timeline for your work on the task. This timeline should take into account any non-coding time, such as exams, GSoC midterms, and vacation. Describe milestones you expect to achieve as you work towards the task.

8. Contributor Agreement

  1. Please include a contributor agreement, if you have not already submitted one. See

ContributorAgreements