Google Summer of Code 2020

Google Summer of Code 2020

MDAnalysis has been accepted as an organization into Google Summer of Code 2020! If you are a student who is interested in working with us this summer, please read the advice and links below and write to us on the mailing list.

We are looking forward to all applications from interested students (undergraduate and postgraduate).

The application window deadline is March 31, 2020 at 18:00 (UTC). As part of the application process you must familiarize yourself with Google Summer of Code 2020.

If you are interested in working with us please read on and contact us on our mailing list. Apply as soon as possible; the application window opens on March 16, 2020.

Project Ideas

If you have your own idea about a potential project we’d love to work with you to develop this idea; please write to us on the developer list to discuss it there.

We also have listed several possible projects for you to work on, on our wiki. Our initial list of ideas (see summaries in the table below) contains 6 projects at different levels of difficulties and with different skill requirements. However, check the ideas page — we might add more ideas after the posting date of this post.

You don’t need to have all the skills that we are listing, although that helps, of course. But you need to demonstrate to us that you’re able and keen to learn anything that you don’t know yet, and we will be happy to help you learn during your project with us.

project name difficulty description skills mentors
1 Molecular volume and surface analysis easy use an existing package for molecular surface area calculations to build a new analysis module Python, MDAnalysis.analysis @orbeckst @IAlibay @richardjgowers
2 Command Line Interface (CLI) easy create a new package with MDAnalysis-based command line tools Python, bash, Python packages, CI, MD @PicoCentauri @orbeckst @fiona-naughton
3 Interoperability with RDKit medium add capability to MDAnalysis to use the RDKit API to convert data structures between MDAnalysis and RDKit MDAnalysis, RDKit, Python, C++ (?) @richardjgowers @IAlibay
4 Improved atom selections medium replace the selection parsing code with a more flexible parser Python @orbeckst, @IAlibay, @fiona-naughton
5 Serialize Universes for parallel computation medium/challenging make the central Universe data structure serializable with Pickle to enable simple parallelization with Dask or MPI Python, MDAnalysis I/O, task-based parallelization @richardjgowers, @orbeckst, @IAlibay, @fiona-naughton
6 Implement TNG support challenging write Cython bindings to the TNG library and write classes to bring this information into MDAnalysis Cython, C, MD @richardjgowers

Information for Students

You must meet our own requirements if you want to be a student with MDAnalysis this year (read all the docs behind these links!). You must also meet the eligibility criteria.

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

As a start to get familiar with MDAnalysis and open source development you should follow these steps:

Complete the Quick Start Guide

We have a Quick Start Guide explaining the basics of MDAnalysis. You should go through it at least once to understand how MDAnalysis is used. Continue reading the User Guide to learn more.

Introduce yourself to us

Introduce yourself on the mailing list. Tell us what you plan to work on during the summer or what you have already done with MDAnalysis.

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 and suggested GSOC Starter issues to work on in our issue tracker on GitHub. We also appreciate if you write more tests or update/improve our documentation.

We recommend you start your application by working on an issue. It will give you a better understanding of MDAnalysis as a project and improve the quality of your application.

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

Updates to this announcement

  • 2020-03-04: We also have a GSoC FAQ that answers questions that come up repeatedly. The FAQ is being updated with new questions and answers as we are moving towards the application deadline.

@orbeckst, @richardjgowers, @IAlibay, @PicoCentauri, @fiona-naughton, @kain88-de

MDAnalysis is a NumFOCUS Sponsored Project!

NumFOCUS Sponsored

MDAnalysis is now a NumFOCUS Sponsored Project! Let us explain who MDAnalysis and NumFOCUS are and what being a sponsored project means:

MDAnalysis is an open source software project that produces the MDAnalysis 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. It is widely used in the scientific community and is written by scientists for scientists. The MDAnalysis Project is represented by the MDAnalysis Core Developers.

NumFOCUS is an organization that promotes open practices in research, data, and scientific computing by serving as a fiscal sponsor for open source projects and organizing community-driven educational programs. In brief, they provide financial and logistic infrastructure to many open source projects that fulfill important roles in their communities. NumFOCUS is a 501(c)(3) public charity in the United States and it is able to accept donations for and on-behalf of projects and to act as a grantee.

NumFOCUS will accept funds on behalf of the MDAnalysis Project and then make them available to us. By becoming a fiscally sponsored project, we agreed that all software produced under the MDAnalysis umbrella is and will be free Open Source software and that any funds will be spent compliant with NumFOCUS’ tax-exempt status: what this means in practice is that all funds will go to further the growth and well-being of the project.

So if you want to donate to MDAnalysis: you can now do this easily by clicking this button:

Donate Now

More importantly, with NumFOCUS as a partner, MDAnalysis gains a long-term perspective for stable development that becomes less dependent on individuals and academic institutions. It allows the project to obtain its own funding and move in directions that best benefit its community. For example, it will become easier to organize workshops, arrange for developers to travel, and to hire developers.

For users and developers, the way the MDAnalysis Project operates will not change: it remains a friendly and respectful community that welcomes everyone’s contributions and that is committed to producing good software that helps us all do interesting science. But together with NumFOCUS, we will be able to do more than before… stay tuned!



Python 2 reaches end of life on 1 January, 2020, according to PEP 373 and python/devguide#344. Many of our dependencies (notably numpy, see their Plan for dropping Python 2.7 support) have ceased Python 2.7 support in new releases or will also drop Python 2.7 in 2020.

We know that science is rolling slowly and surely some scientific projects will continue with Python 2.7 beyond 2020. MDAnalysis has been supporting Python 2 and Python 3 now for a while. However, given how precious developer time is, we also decided to drop support soon after the official Python 2.7 drop date.

Our plan is to give researchers a stable legacy platform and release MDAnalysis 1.0.0 with full Python 2.7 support and tests. However, no major development will continue in 1.0. Issues will only be fixed and backported on a best-effort basis, simply because there are not enough developers to do this work.

We will then work towards MDAnalysis 2.0.0, which will only support Python 3.

Tentative Roadmap

2020 (1st quarter)

  • release 1.0.0 in early 2020 (maybe end of 2019…)
    • 1.x will be the last version of MDAnalysis that fully supports Python 2.7
    • 1.0 will be similar to upcoming 0.21 (i.e., no major annoying API breaks but clean-up and deprecations)
    • development on 1.x will cease with the release of 2.0; we will consider PRs that backport fixes but we will not officially support it after the release of 2.0
  • finalize API decisions for 2.0.0

2020 (2nd quarter)

  • release 2.0.0
    • officially drop Python 2.7 support
    • support all current Python 3.x releases
    • include larger changes/deprecations (API breaks compared to 1.0.0 if necessary, removal of legacy code, etc)
  • code modernization (making use of specific Python 3 constructs) will be ongoing


If you have comments or you see problems with this roadmap then please get in touch