Skip to content

GSoC 2025 Projects

Jusong Yu edited this page Feb 7, 2025 · 15 revisions

Draft

What is AiiDA AiiDA ?

AiiDA is a python framework for managing computational science workflows, with roots in computational materials science. It helps researchers manage large numbers of simulations (10k, 100k, 1M, ...) and complex workflows involving multiple executables. At the same time, it records the provenance of the entire simulation pipeline with the aim to make it fully reproducible.

AiiDA is used in research projects at universities, research institutes and companies (see SciPy 2020 talk, SciPy 2022 talk, publications, and testimonials).

Why work on AiiDA?

  • Help accelerate the transition to open (computational) science
  • Help fix the reproducibility crisis. Computational science is a good place to start.
  • Work with a team of computational scientists (mostly physics backgrounds) who are passionate about both science and coding.
  • We have an active Discourse community & biweekly developer meetings.

A background in materials science is not needed, but a basic interest in materials science topics will make things easier for you.

Getting started

To be considered as a GSoC student, we ask you to make a small pull request to aiida-core, or any active repositories in aiidateam and aiidalab organizations - could be a simple bug fix, improving the documentation, etc. See e.g. (for aiida-core) GitHub issues by-label

Say hi on our GSOC 2025 topic on Discourse.

Project X: Standardize Type Annotations

level Basic

Expected Size 350h

Summary:
A significant portion of AiiDA’s source code is currently excluded from mypy checks, leading to inconsistent or missing type annotations across different modules. The goal of this project is to systematically add and refine type annotations throughout AiiDA’s codebase, ensuring that all functions, classes, and methods are correctly typed. Standardizing type annotations will improve code readability, maintainability, and reduce future bugs.

Expected Outcomes:

  • Comprehensive and consistent type annotations across all AiiDA modules.
  • Removal of unnecessary exclusions from mypy checks.
  • Improved developer experience and reduced ambiguity when extending or refactoring AiiDA’s code.

Required Skills:

  • Basic familiarity with Python.
  • Understanding of typing in Python (e.g., typing module, type hints, generics).
  • Familiarity with static type checking tools (e.g., mypy) is helpful but not strictly required, as it can be learned during the project.

Project X - Engine: thread pool for running block AiiDA process

level Advanced

Expected Size 350h

AiiDA defines running jobs as AiiDA processes, which are state machines whose states are stored on the file system—allowing them to recover after reboots and continue executing remote jobs. It uses Python’s asyncio library to handle I/O-bound tasks, such as submitting jobs and waiting for remote execution. We avoid exposing the asynchronous syntax by providing only synchronous entry points when launching jobs, shielding end users from the complexities of asynchronous programming. However, synchronous Python functions within AiiDA run in a blocking manner within the event loop of main thread. Enabling multithreading would significantly boost AiiDA’s throughput by allowing these blocking processes to run concurrently.

Expected outcomes

  • Streamline event loop management.
  • Deprecate nest-asyncio in favor of greenlet.
  • Enable synchronous function execution in newly spawned threads.

Skills

  • Familiarity with Python
  • Experience with asynchronous and parallel programming

Project XX - Your Idea Here

If you're already familiar with AiiDA and have your own idea on how to improve it, we're happy to consider it (you may also want to check the development roadmap for further interesting project ideas). In this case, please think about the steps you would take to attack the problem and contact us in advance so that we can draw up a rough work plan.

Mentorship

The mentors for GSOC 2025 are

Please use the GSOC 2025 topic on Discourse

GSoC 2025 related info

Clone this wiki locally