Skip to content

GSoC: Advice for Students

Nabil Freij edited this page Mar 20, 2024 · 33 revisions

GSoC Student Advice

Do you want to participate in SunPy as part of GSoC? Then make sure you read through all the advice on the wiki and the provided links.

We expect to receive, as we do every year, lots of high quality applications and we always have more applicants than slots available. So please do give your application some thought.

Pull Request requirement

In addition to the written proposal, we require every GSoC applicant to have opened a pull request to a SunPy Project repository. It does not need to be merged for you to be considered for GSoC.

Please note that we take your pull request(s) to SunPy into strong consideration when reviewing your proposal. This is your best opportunity to prove to us that you are capable of doing what you have written in your proposal. Be aware we don't count how many you have done, if you have ten it doesn't mean you will have a better chance than someone who has opened one.
We consider the quality of the pull request over the number of pull requests.

To do this:

  • Get in touch with the community.

    There are many ways to get yourself known by the community. Chat with us in the Matrix channel and even contact the mentors to know more about the project that interested you. We strongly recommend you browse Shakthi Kannan's book "i want 2 do project. tell me wat 2 do".

  • Set up your platform to develop with SunPy.

    You will need to create yourself an account on GitHub. Our Newcomer's guide will walk you through setting up git and lays out our method of development.

  • Try using sunpy.

    To get an understanding of sunpy, browse through our documentation and the user guide. You can also check all the different workshops we have done.

  • Find something in sunpy that doesn't work or needs improvement.

    If you need inspiration, feel free to fix any issue from our Good first issues. Aside from the issues, search for FIXME or TODO in the code. You could also try to use sunpy and find something that needs fixing or that could be implemented.

  • Your pull request must be code-related, not documentation.

    While we do not want to discourage documentation pull requests as they are very useful. We use the pull requests as a basis to judge your ability to program Python or other relevant topics and that you are able to interact with the community in code reviews. If the project you are interested in will use a language other than Python (e.g., C) or working on a specific concept (like signal analysis or mathematics), you should submit pull requests that demonstrate that you are able to work on these topics.

  • For the pull request requirement to be fulfilled, you must have opened at least one pull request in the wider SunPy Project.

    We may be slow to review the pull requests therefore you do not have to have your pull request merged by the application deadline. But you do need at least have opened one pull request by the deadline. We will give priority to reviewing requests that are needed to satisfy GSoC requirements.

Student Application Process

  • Plan your application and get it reviewed

    Review the ideas page for the current year to see if there a project that is interesting to you.

    When you have found one you like, prepare a plan on how you will tackle that project and the time it will take you to solve it. This will form the basis of your timetable which is very important. We have an application template to help you write your application.

    Take the initiative as it is your responsibility to ask questions and start preparing your application. We will provide feedback on your application, and inform you if something is missing or if any of the goals are unrealistic, but we will not write the application.

    We ask that all applications are added to this wiki, to serve as reference for future students.

  • Submit your application

    YOU MUST SUBMIT YOUR APPLICATION ON THE GSoC WEBSITE.

    It is not possible to accept you if you do not do this. Google will not accept late applications for any reason (even if the GSoC website goes down). There have been issues in the past with submissions right up at the deadline, so submit your application early.

    We also require that final applications are uploaded to this wiki, following this format: "GSoC-<Year>-<Your Name>". This should be done ASAP after you have uploaded the final version to the GSoC website but at most you have two weeks. If this is not done, we will not select you. If you apply for more than one project please add the project name at the end. Then you can link the page on the corresponding GSoC <Year> page. You can look at the older year page(s) to see how it works.

Student Grading Criteria

Once proposals have been finalized, student proposals will be graded. Here are some criteria that we consider when reviewing applications. We suggest that you think about these when writing your application.

  1. Has the student interacted with the SunPy community before submitting their application?

    We do not accept any applications by people who have not submitted a pull request and not interacted with the community.

  2. Does the proposal accurately address the project?

    Is the student capable of following existing guidelines and instructions where appropriate? Nice bonus features in addition to the main project are good, only unrelated features are bad. Clear evidence of communication skills. Does the student understand the design and technical details of what will be required to implement their proposal? Do they understand what impact their project will have on users?

  3. Plan

    Is the proposed timeline realistic considering any other obligations the student may have during GSOC? Bonus for "what if things go wrong planning", e.g. features towards the end of the plan that can be removed if/when the bugs strike.

  4. Resourcefulness

    Can the student carry out tasks on their own i.e., has the student demonstrated that they can work independently and solve problems on their own without asking for help every step of the way? We want to minimize over-communication (e.g., "what should I name this variable?"). Ideally we want students who can quietly and competently get the job done but interact at appropriate times, e.g., sensible progress reports or if you hit a problem that they can not solve. This is what the mentors are here for, to support you when you come across problems you are unable to solve.

  5. Experience

    Has the student demonstrated that they have the ability to work with sunpy's code? Does the student have reasonable evidence they've competently done something relevant to this before?

    Required:

    • A GitHub profile
    • Pull requests on any SunPy repository

    Other examples:

    • Published applications
    • Code from a uni assignment
    • Code from other projects on GitHub

    Students must have submitted a pull request to SunPy and provide links to code they have written before in their application. Try to select work you are most proud of, we do not want a link to everything you have ever done.

How the ranking process works

All students with a finalized proposal will have their proposals reviewed by all of the project mentors in the organization, and ranked out of 5 based on the criteria above. This score will also be averaged to provide a mean result. These scores are not the final acceptance criteria - so a 4.1 won't automatically win over an 3.6 - but they do help provide general guidelines for the mentors who are choosing from a large body of qualified students.

Accepted students

Students will be notified of their acceptance by Google when all accepted students are announced, and will not be notified of their internal grades. Please note that we usually have more highly qualified applicants than slots available for the organization, so sometimes proposals that are genuinely very good have to be rejected. We genuinely wish we could take you all!

Clone this wiki locally