Skip to content

Google Summer Of Code

Oliver Beckstein edited this page Feb 21, 2023 · 124 revisions
Google Summer of Code 2023

This page will be updated for GSOC 2023 if MDAnalysis is accepted as a GSoC org (to be known on February 22, 2023 - 18:00 UTC). (Some links below are outdated and will be updated as soon as we know that MDAnalysis will host GSoC 2023 Contributors.)


MDAnalysis is hosting Google Summer of Code 2023 Contributors. In short (more details below — please read the whole page if you are interested!:

  • The GSoC Contributor will be mentored by at least two experienced MDAnalysis developers and receive support from Google.
  • The GSoC Contributor will contribute code to the MDAnalysis Project.

Start by reading the MDAnalysis GSoC blog post (if you haven't done so already) and then come back here and read the whole page. We also have a GSoC Frequently Asked Questions page that we are updating as we get more questions.

The application window opens on March 20 - 18:00 UTC and closes on April 4 - 18:00 UTC (see the timeline).

Eligibility

Eligibility requirements are described in the GSoC FAQ:

  • You must be at least 18 years of age when you register.
  • You must be eligible to work in the country you will reside in during the program.
  • You must be an open source beginner or a student.
  • You have not been accepted as a GSoC Student or Contributor in GSoC more than once.
  • You must reside in a country that is not currently embargoed by the United States. See Program Rules for more information.

Prerequisites

MDAnalysis is a Python library for the analysis of computer simulations of many-body systems at the molecular scale, spanning use cases from interactions of drugs with proteins to novel materials. Therefore, our GSoC projects usually require a basic knowledge and hands-on experience of molecular dynamics simulations and the associated analyses, or equivalent experience in simulations and modelling of molecular systems (physics, biophysics, chemistry, or materials). For our suggested projects, please check carefully the project descriptions to see the associated desirable skills.

How to Contact MDAnalysis

You should contact us before submitting your application, because we want to get to know you and we want to figure out if we will be able to work together. We will be happy to advise you on most aspects of the process. Getting in touch first is especially important if you are planning to apply to work on an original idea, rather than one of our suggestions.

So if you want to introduce yourself, discuss ideas or discuss your application then join the MDAnalysis GSoC list mailing list ([email protected]).

Project Ideas

Look at the Project Ideas 2023 page.

If you have your own idea, talk to us on the mailing list.

Previous Years

Who are we?

The MDAnalysis development team is friendly, cooperative and relatively informal. We consist of people from a wide range of backgrounds, including students, PhD-candidates, postdocs, professors and researchers actively using this software. We will take your work with respect and appreciate the time that you will spend on MDAnalysis since it will help us in both our own and our community's research projects.

The MDAnalysis community values diversity and is committed to providing a productive, harassment-free environment to every member. Our Code of Conduct explains the values that we as a community uphold. Every member (and every GSoC Contributor) agrees to follow the Code of Conduct.

Available mentors

The following developers have expressed interest in mentoring for GSoC in 2023:

(For Mentors: see the Mentoring GSoC resource.)

Am I experienced enough?

The answer is generally: Yes. The MDAnalysis Summer of Code team values creativity, intelligence and enthusiasm above specific knowledge of the libraries or algorithms we use. We think that an interested and motivated GSoC Contributor who is willing to learn is more valuable than anything else. If you are doing research in molecular simulations then we are especially interested in you — we find that the most successful GSoC Contributors are the ones who want to use the tools that they are writing.

We also value general software design or development experience above specific library or API knowledge.

At the same time if you have experience with our tools (such as Python or Cython) or other molecular analysis and visualization packages make sure to let us know about that as well.

Our Expectations from GSoC Contributors

We expect you to be an engaged member of the MDAnalysis community. In particular, by being a GSoC Contributor for MDAnalysis you agree to obey and uphold our Code of Conduct.

Communication

  • Write a short report for us once a week (a short blog post is ideal!)
  • Commit early and commit often! Push to github so that we can see and review your work.
  • Actively work on our project timeline and communicate with us during the community bonding period
  • Communicate every working day with your mentor. Just say "Hello" if you like. It can be via email, skype, github comments, etc
  • If there is a reason why you can't work or can't contact us on a regular basis please make us aware of this.
  • If you don't communicate with us regularly we will fail you.

Midterm and Final evaluations

  • Set a realistic goal for mid-term. If you fail to meet your own goal we are more likely to fail you in the evaluations
  • Have some code merged into our develop branch at the end of the summer to pass the final evaluation
  • The last point is a hard requirement. Make sure that your time plan includes it.

How to write a great Application

Firstly, think about your choice of project carefully, you're going to be doing it for a couple of months, so it's important that you choose something you're going to enjoy. Once you've made your mind up:

  1. Make sure you've thought about the project and understand what it entails
  2. Don't be afraid to come up with original solutions to the problem
  3. Don't be afraid to give us lots of detail about how you would approach the project
  4. Think about the time you need to complete the work and show us your plan – is it going to be a midsize (175h) or long (350h) project?
  5. Contact us early! The earlier you contact us the earlier you will be able to get feedback from us to improve your application

Overall, your application should make us believe that you are capable of completing the project and delivering the functionality to our users. If you aren't sure about anything, get in touch with us, we're happy to advise you.

Close an issue of MDAnalysis

You must have at least one commit in the development branch of MDAnalysis in order to be eligible, i.e.. you must demonstrate that you have been seriously engaged with the MDAnalysis project.

We have a list of easy bugs including those we think would be good starter issues for GSoC applicants to work on in our issue tracker on GitHub.

We would ask that applicants only complete one "GSoC starter" labelled issues so that there are enough left for other applicants. You are welcome to address as many other issues in our issue tracker. We also appreciate if you write more tests or update/improve our documentation.

To start developing for MDAnalysis have a look at our guide for developers and follow the workflow there. Write to us on the mailing list if you have more questions about setting up a development environment.

Dividing your project into manageable parts

We require that all of our GSoC Contributors have at least one commit in our develop branch before the end of the summer. The best way to achieve this is to divide your project into small self contained subprojects and plan to merge at least one of them around midterm.

During your summer you'll encounter bugs in MDAnalysis or find code that can be refactored to help you implement your ideas. You can also immediately fix them in the develop branch and help us all out. This has several advantages. All your pull request will only concentrate on specific features and are much better to review. And you'll also get direct feedback from other devs and user during the summer.

Since this is a hard requirement we as mentors will also have an eye on that and check if your proposal incorporates it and also warn you ahead of time during the summer if we see that you might not make it. Communicating with us on a regular basis is vital for that, though.

Your application should include answers to the following questions.

General

  • Why are you interested in working with us?
  • What programming experience do you have?
  • What scientific experience do you have that would be relevant for your proposed project?
  • Have you used MDAnalysis for your research already?
  • Do you have any exams during GSoC or plan a vacation during the summer?

Project specific

  • What problem does your proposed project address? What does it do that cannot be done yet with MDAnalysis or how will it improve an aspect of the existing software?
  • What are the key ideas in your project?
  • How will you solve the problem outlined above — tell us the details.
  • Show us how your code will be used with some examples. Tell us what a user can expect to get from your code at the end of GSoC.

How to estimate time needed for development

To get a feeling for the code and get some experience with our code you can go and tackle some of our easy bugs. Look at the code that you want to change, check if it follows our coding guidelines. Do some research on the API's you want to use, plan what classes you will add and how their public API will look. Write down your algorithms in pseudo code. The better your research is and the better you plan ahead the easier it will be to judge how long a given task will take. For your time estimates you should also consider that you can do less stuff during exams and try to be a bit conservative. If you have never done anything like GSoC before you will tend to underestimate the time to complete a task. We know that giving these estimates is not easy and that also professionals have problems with it. Having a good plan, knowing its weak and strong points will help a lot.

Clone this wiki locally