Skip to content

Google Summer Of Code

Jenna M Swarthout Goddard edited this page Feb 3, 2024 · 124 revisions
Google Summer of Code 2023

This page will be updated for GSoC 2024 if MDAnalysis is accepted as a GSoC Organization. (Some links below are outdated/broken and will be updated as soon as we know that MDAnalysis will host GSoC 2024 Contributors.)

Hello, and welcome to MDAnalysis!

If you just found out about the MDAnalysis Python package from the GSoC website, you can have a look at the MDAnalysis 2021 Trailer [YouTube] to get an overview of the scope of the MDAnalysis package.


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@MDAnalysis Frequently Asked Questions page that we are updating as we get more questions.

The application window opens on March 18 - 18:00 UTC and closes on April 2 - 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 require a basic knowledge and hands-on experience of molecular dynamics simulations and the associated analyses, or equivalent experience in simulations and modeling 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 (it is helpful if you can share your GitHub handle, project interests, and/or experience with MDAnalysis and molecular dynamics or computational physics/chemistry/materials), discuss ideas or discuss your application, then reach us on GitHub Discussions under the "Google Summer of Code" category.

Project Ideas

Look at the Project Ideas 2024 page.

If you have your own idea, talk to us on GitHub Discussions under the "Google Summer of Code" category.

Previous Years

Who are we?

The MDAnalysis development team is friendly, cooperative and 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 2024:

(For Mentors: see the Mentoring GSoC resource.)

Am I experienced enough?

If you already came into contact with molecular dynamics simulations or other computer simulations of many-body systems at the molecular scale and if writing code to solve interesting problems in physics, chemistry, biochemistry and material sciences sounds exciting rather than scary, the answer is generally YES.

The MDAnalysis GSoC team is looking for creative and enthusiastic individuals, willing to learn a lot of new skills. Given the scope of MDAnalysis, some previous exposure to or experience with molecular dynamics simulations is highly beneficial. Therefore, we value domain knowledge or previous experience with molecular simulations highly, especially in combination with some Python programming experience.

If you are performing molecular simulations and are excited about coding, please do apply! We find that the most successful GSoC Contributors are the ones who want to use the tools that they are writing.

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 at least every 2 weeks (a short blog post every week 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, Zoom, 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.
  • If you are working on the MDAnalysis core repo directly, you must 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.

Onboarding

For details regarding expectations for participating with MDAnalysis through GSoC, see the Onboarding Guide 2023 page.

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 small (90h), 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.

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 requests 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 have an eye on that, 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?
  • How does your proposed project relate to your research area or academic/professional goals and interests?
  • Have you used MDAnalysis for your research already?
  • Do you have any exams during GSoC or have you planned 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