.. _gsoc-apply: How to Apply ============ .. contents:: Steps to Apply These are the steps for applying to Chapel for Google Summer of Code 2021. It is expected that students complete these steps in the order they are listed. For example, you can leave a good impression with mentors by familiarizing yourself with the language and projects that interest you before contacting prospective mentors. 1. Familiarize yourself with Chapel ----------------------------------- Familiarize yourself with the project. `Download`_ Chapel, follow a `tutorial`_, write a few programs, and `learn`_ more about the language. Become familiar with the process of `contributing`_. .. _Download: http://chapel-lang.org/download.html .. _tutorial: http://chapel-lang.org/tutorials.html .. _learn: http://chapel-lang.org/learning.html 2. 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. The :ref:`gsoc-ideas` page provides some project ideas that have been proposed by this year's mentors, but you are also welcome to propose your own project idea. Note that if you propose your own project that you will be responsible for discussing the idea with the community and finding a mentor before writing the application. Work with prospective mentors on the `Chapel GSoC Discourse`_ and the `chapel-summer-of-code Gitter 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. 3. Start contributing --------------------- Getting to know the Chapel developer community means gaining their trust, and the best way to do that is by demonstrating your ability to implement a program in Chapel, to submit quality issues, and to fix issues. See the `Contributing`_ page to get started. Your first task might be a first step in the project you want to work on for GSoC. .. _`Contributing`: http://chapel-lang.org/contributing.html .. _`Chapel GSoC Discourse`: https://chapel.discourse.group/c/gsoc/18 .. _`Chapel Gitter channel`: https://gitter.im/chapel-lang/chapel .. _`chapel-summer-of-code Gitter channel`: https://gitter.im/chapel-lang/chapel-summer-of-code .. _`chapel-developers`: http://chapel-lang.org/developers.html .. _`chapel-users`: http://chapel-lang.org/users.html .. _`best practices`: https://github.com/chapel-lang/chapel/tree/main/doc/rst/developer/bestPractices .. _`GitHub pull requests`: https://github.com/chapel-lang/chapel/pulls?utf8=%E2%9C%93&q= 4. Prepare a project proposal ----------------------------- We recommend using a Google Doc to prepare your proposal. Using a Google Doc will make it easier for mentors to provide feedback on the proposal before it is submitted Please follow the following template for your proposal: 0. Title ++++++++ Please include the name of the project in the title of your proposal. 1. Introduction +++++++++++++++ 1. In a few sentences, describe your overall background and current studies. 2. Briefly describe any relevant coursework 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 comprehend and understand 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 GitHub user name will you be using to communicate with us? 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. Are you familiar with these tools? (Familiarity with these tools is not necessarily required for all projects but we will need to know how to guide you) 1. git source code management 2. make 3. gdb and valgrind debugging tools 4. gcc 4. What experience do you have being part of a development team? 5. 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? 6. Is any of the code you have written already open source? Can you point us to some code you have written? 7. What have you already contributed to the Chapel project? Please list pull request and issue numbers. 4. Survey +++++++++ 1. Had you heard about Chapel before the Summer of Code? If so, where? If not, where would you advise us to advertise? 2. What was the first question concerning Chapel that you could not find an answer to quickly? 3. What will keep you actively engaged with the Chapel community after this summer is over? 4. Are you applying to any other organizations for this year's Google Summer of Code? If so, what is the order of your preference, in case you are accepted to multiple organizations? 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-assessment ++++++++++++++++++ 1. What does useful criticism look like from your point of view as a committing student? 2. What techniques do you use to give constructive advice? How do you best like to receive constructive feedback? 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.