Summer of Code Application Guidance

Introduction

First of all, please engage with the mentors and other community members on our chat channels! Participating in a community is an essential part of open-source development. We understand that it can be intimidating if you are not experienced, but we’ve all been there and will do our best to welcome you and show you the ropes.

Project Ideas

We have an project ideas page that lists project ideas suggested by our mentors. You may submit any project proposal at all that is related to open-source C#/F#/.NET development, however we can only accept proposals for which we have a mentor available with relevant expertise. Ideas listed on our ideas page already have mentors who are able and willing to mentor them.

Do not cut-and-paste the text from our project ideas page in your application. We know full well what the text there is. Instead, explain to us your take on the problem, like “I could implement this using this and that”, “I would need to research these areas”, “I might need help sorting this out”, etc.

Applying

Remember that many people will apply to work on the Summer of Code and we cannot accept them all. Keep in mind that those of us evaluating your application do not know you, we do not know what kind of experience you have, we do not know what you have done in the past, and we have to pick the best people suited for a particular task.

Hence, it is very important that you tell us in your application why you should be considered to implement a particular project. Your proposal is a pitch for why we should pick you for a particular project. Use this opportunity to demonstrate your enthusiasm, your understanding of the topic and your ability to research and plan.

Your proposal should explain why you are interested in the idea/project, your plan to implement it, and any relevant background experience. You must also state that this project will be your primary project for the Summer of Code period and you will not have any concurrent internships or other work. Examples of existing open-source contributions, such as links to pull requests you have made, are helpful, but not required.

We especially want to see:

  • A concrete list of goals/deliverables for the time period.
  • A rough estimate of the steps it will take to complete your project.
  • A timeline showing how long you believe each step will take.

Remember that multiple people may apply for the same project, and we cannot accept multiple people for each project, even if they are amazing and we really want to work with all of them. However, you may apply multiple times for different projects, which gives us more flexibility when picking students and projects.

The student manual is also an excellent source of advice for writing a good proposal.

Make sure you get your application in by the deadline, which is shown on the Summer of Code website. Don’t leave it till the last minute!

Ground Rules

This must be your primary project for the duration of the Summer of Code coding period, and you should expect to put in put in the amount of work that you would for a full-time job. You should not have another internship or job during this time. The only default exception to this rule is examinations and other academic requirements.

Language: Code must be written in the same language as the host of the project:

  • Mono VM extensions in C
  • Tools extensions in C#
  • APIs in C#
  • etc.

Licensing: All of the code submitted must be contributed under the terms of the MIT License.

Acceptance criteria: The results must be maintainable and clean. If the code works as advertised but its a quick hack or something we would have to rewrite from scratch, we would not accept the project as completed.

We would rather have a maintainable, clean and incomplete piece of code that we could extend than a complete but unmaintainable piece of code. We strongly encourage students to submit their code as a series of pull requests that can be reviewed and merged over the course of the summer.

Contacting the Mono Team

If you have questions or suggestions, or would like feedback on your idea, please join us in our Discord channels. Various mentors and students from past years are usually there and can answer questions about the program and about Mono. Community engagement is essential for a successful Summer of Code, so get involved!

Feel free to file an issue in the relevant GitHub repo if you want to discuss something, even if it’s not a bug.

For any questions you may have about the program itself and to talk to the Mono GSoC admin, you can use soc@xamarin.com.