Skip to content

Google Summer Of Code

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

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 2024 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.

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 Contributor and Mentor Onboarding Guide 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), medium (175h) or large (350h) project?
  5. Complete preliminary requirements for your application early! The earlier you complete these requirements, 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.

Requirements for an Application

Submitting a pre-proposal

We ask you to submit a short pre-proposal so that we can evaluate your understanding of the proposed project. In this pre-proposal you tell us what project you’d like to work on, what you consider the major challenges, and how you plan to solve the problem. MDAnalysis developers will review your proposal and then either invite you to continue with your application and work on an issue to get involved in the code development or tell you that we will not consider your application. Please note that this decision is final, and applicants should only submit one pre-proposal. A rejection is not a judgment on you or your abilities but an assessment of how well you fit the specific requirements of MDAnalysis as a scientific software package — we much rather you spend your energies on contributing to another exciting GSoC project than being rejected later by MDAnalysis.

We require GSoC applicants to submit a pre-proposal that will determine who is then invited to attempt a pull request (see below). If you are invited to attempt a pull request and ultimately submit a full application, the pre-proposal will help you gather some of the information you will need to include.

Submit your pre-proposal via this submission form as soon as possible, but no later than March 15, 2024. You should prepare the following information for your pre-proposal:

  • Email address
  • GitHub handle
  • Real name (optional)
  • Basic information on your background (e.g., education, relevant experience with MDAnalysis and molecular dynamics or computational physics/chemistry/materials)
  • Project title
  • Project size (90h, 175h, 350h)
  • Problem: Describe the problem to be solved. What is the background? What is the overarching question? You can also comment on why this is an interesting or difficult problem. Clearly define the overall goal of what you want to find out.
  • Approach: Describe how you are going to reach your goal (i.e., answer the overarching question). Which algorithms are you going to use? Are there any libraries or other packages you want to use? Do you need to research different solutions? Be as concrete as possible; you want to convince your audience that it is feasible to solve this problem and you have an idea how to tackle it.
  • Objectives: Use a numbered list to state 3–5 measurable non-trivial outcomes that you need to achieve in order to reach the overall goal. These are the milestones that you have to reach; they are possibly dependent on each other. For each objective it must be clear how to decide if you fulfilled it or not. Objectives are formulated in terms of actions and deliverables.

Have a pull request merged (if you are invited to based on your pre-proposal)

GSoC contributors with MDAnalysis will need to demonstrate that they have been seriously engaged with the MDAnalysis project by merging a pull request prior to submitting their full application on the GSoC website.

You must have at least one commit in the development branch of MDAnalysis in order to be eligible. Note that the earlier you submit your pre-proposal (which are reviewed on a rolling basis), the more time you may have to work on having code merged!

We have a list of easy bugs and suggested GSOC Starter issues to work on in our issue tracker on GitHub. We only accept one GSOC Starter issue per applicant so that all contributors invited to attempt pull requests get a chance. If you want to dive deeper, we encourage you to tackle some of the other issues in our issue tracker. We also appreciate contributions which add more tests or update/improve our documentation.

To start developing for MDAnalysis have a look at our guide on contributing to MDAnalysis and write to us on the GSoC with MDAnalysis discussion forum if you have more questions about setting up a development environment or how to contribute.

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 start developing for MDAnalysis have a look at our guide for developers and follow the workflow there. Write to us on GitHub Discussions under the "Google Summer of Code" category if you have more questions about setting up a development environment.

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