From 340970f0b42f1279c2027a666d1b60991767a042 Mon Sep 17 00:00:00 2001 From: Shravan Goswami Date: Sun, 22 Feb 2026 15:30:57 +0530 Subject: [PATCH 1/5] GSoC 2026 Projects --- news/posts/2026-02-21-gsoc/index.qmd | 147 +++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 news/posts/2026-02-21-gsoc/index.qmd diff --git a/news/posts/2026-02-21-gsoc/index.qmd b/news/posts/2026-02-21-gsoc/index.qmd new file mode 100644 index 000000000..78eb26a05 --- /dev/null +++ b/news/posts/2026-02-21-gsoc/index.qmd @@ -0,0 +1,147 @@ +--- +title: Google Summer of Code 2026 +description: | + We are excited to announce our project ideas for the Google Summer of Code 2026! Below is a list of projects the Turing team would love to work on with contributors this summer. This information is also cross-posted at Julia's Turing project page. +categories: + - Blog + - GSoC +author: + - name: The TuringLang team + url: /team/ +date: 02/22/2026 +toc: true +--- + +The TuringLang ecosystem has made strong progress recently: more AD backends, a maturing JuliaBUGS, and clearer inference tooling. + +For GSoC 2026 we offer projects from core AD work to scalable inference and user-facing tools. + +If a project interests you, contact the mentors listed below or open a discussion on the relevant GitHub repo. +Please drop a short introduction message in the [`#turing`](https://julialang.slack.com/archives/CCYDC34A0) channel on the [Julia Slack](https://julialang.org/slack/) and feel free to ping [Penelope Yong](https://github.com/penelopeysm/) or [Shravan Goswami](https://github.com/shravanngoswamii) there. Mentors will be happy to discuss project details, scope, and expectations, and you can find mentor contacts at [team page](/team/). + +Also cross-posted on [Julia's GSoC page](https://julialang.org/jsoc/gsoc/turing/). + +## Mentor Contacts on Julia Slack + +| Mentor | Slack Contact | +|--------|---------------| +| Penelope Yong | [Slack](https://julialang.slack.com/team/U07DBR7C2LD) | +| Hong Ge | [Slack](https://julialang.slack.com/team/UCRDHV7PB) | +| Xianda Sun | [Slack](https://julialang.slack.com/team/U03AV5JMJ8N) | + +## New AbstractMCMC-based Gibbs Sampler for Turing.jl and JuliaBUGS.jl + +**Mentors**: [Penelope Yong](https://github.com/penelopeysm/), [Hong Ge](https://github.com/yebai) + +**Project difficulty**: Medium + +**Project length**: 350 hrs + +**Description**: +Gibbs sampling is one of the most widely used inference strategies in Bayesian computation, but Turing.jl's current Gibbs implementation is tightly coupled to its internals and difficult to extend. + +This project is about designing a clean, composable Gibbs sampler built on top of the [AbstractMCMC.jl](https://github.com/TuringLang/AbstractMCMC.jl) interface so that it works perfectly across both Turing.jl and [JuliaBUGS.jl](https://github.com/TuringLang/JuliaBUGS.jl). +Work will include: + +- Agreeing on a minimal AbstractMCMC-compatible interface for conditional samplers. +- Implementing the new Gibbs combinator and verifying correctness on standard models. +- Migrating existing Turing.jl Gibbs usage to the new interface. +- Ensuring JuliaBUGS.jl can plug in its own conditional samplers without modification. + +## Moving from ParetoSmooth to PSIS + PosteriorStats in Turing.jl + +**Mentors**: [Penelope Yong](https://github.com/penelopeysm/), [Hong Ge](https://github.com/yebai) + +**Project difficulty**: Medium + +**Project length**: 175 hrs + +**Description**: +Turing.jl currently uses [ParetoSmooth.jl](https://github.com/TuringLang/ParetoSmooth.jl) for Pareto-smoothed importance sampling (PSIS) and leave-one-out cross-validation (LOO-CV). +The upstream issue [TuringLang/ParetoSmooth.jl#115](https://github.com/TuringLang/ParetoSmooth.jl/issues/115) tracks migrating this functionality to the more actively maintained [PSIS.jl](https://github.com/arviz-devs/PSIS.jl) and [PosteriorStats.jl](https://github.com/arviz-devs/PosteriorStats.jl) packages from the ArviZ ecosystem. + +The project involves: + +- Studying the current ParetoSmooth usage across Turing.jl and dependent packages. +- Migrating to PSIS.jl + PosteriorStats.jl, making sure API compatibility for end users. +- Updating documentation and tutorials to reflect the new workflow. +- Deprecating or archiving ParetoSmooth.jl where appropriate. + +## Stateful Hand-Written Rules and Thread Support in Mooncake.jl + +**Mentors**: [Hong Ge](https://github.com/yebai) + +**Project difficulty**: Medium to Hard + +**Project length**: 350 hrs + +**Description**: +[Mooncake.jl](https://github.com/chalk-lab/Mooncake.jl) is a source-to-source reverse-mode AD package for Julia. +Two open issues currently limit its performance and applicability in real-world workloads. + +The first is that every hand-written `rrule!!` must allocate scratch memory on every call ([issue #403](https://github.com/chalk-lab/Mooncake.jl/issues/403)). +Derived rules already avoid this by carrying persistent state between calls, but hand-written rules have no such mechanism. +The fix is a `StatefulRRule` struct that holds a `Stack` of saved state, constructed via a `build_primitive_rrule` function. +Rule authors implement `stateful_rrule!!`, which receives the current state (or `nothing` on the first call) and returns updated state alongside the usual outputs -- stack push/pop is handled automatically. +The work is to (1) add a test that fails when a primal is allocation-free but its `rrule!!` is not, (2) audit all existing hand-written rules with that test, and (3) convert the offenders. + +The second is that Mooncake currently errors on any code using `Threads.@threads` ([issue #570](https://github.com/chalk-lab/Mooncake.jl/issues/570)). +Even a race-condition-free primal can produce race conditions on the reverse pass -- two threads may concurrently increment the same tangent element, so increments must be atomic. +Additionally, rule caches (the stacks inside `OpaqueClosure`s) must be Task-specific; sharing them across Tasks causes pushes and pops to interleave incorrectly. +The work involves writing rules for the `ccall`s that enter and exit threaded regions, ensuring atomic tangent updates, and making rule caches Task-local without relying on `threadid()`. + +## Pigeons.jl Integration with Turing and JuliaBUGS + +**Mentors**: [Xianda Sun](https://github.com/sunxd3), [Penelope Yong](https://github.com/penelopeysm/) + +**Project difficulty**: Medium to Hard + +**Project length**: 350 hrs + +**Description**: +[Pigeons.jl](https://github.com/Julia-Tempering/Pigeons.jl) implements parallel tempering and related algorithms that are particularly effective for multimodal and high-dimensional posteriors. +This project has two related goals that together make Pigeons a first-class citizen of the TuringLang ecosystem. + +The first part is documentation and examples. +Turing.jl models can already be used as targets for Pigeons, but the combination is under-documented. +The contributor will produce reproducible tutorials that walk through common use cases -- multimodal posteriors, hierarchical models, models with difficult geometry -- and compare Pigeons against HMC/NUTS on the same problems. +These will be published on the Turing website and any integration rough edges found along the way will be fixed. + +The second part is implementing the efficient Gibbs sampler from [arXiv:2410.03630](https://arxiv.org/abs/2410.03630) in [JuliaBUGS.jl](https://github.com/TuringLang/JuliaBUGS.jl). +The paper shows that by exploiting the structure of the compute graph (rather than the graphical model), the time per sweep of a full-scan Gibbs sampler on GLMs can be reduced from $O(d^2)$ to $O(d)$ in the number of parameters $d$ -- making high-dimensional GLMs feasible where traditional Gibbs is not, and outperforming HMC on effective samples per unit time in many regimes. +JuliaBUGS already exposes the graph structure this approach relies on. +The implementation must be correct and performant, validated against standard benchmarks with comparisons to both traditional Gibbs and HMC. + + +## Mooncake.jl Performance Optimization + +**Mentors**: [Hong Ge](https://github.com/yebai) + +**Project difficulty**: Medium + +**Project length**: 350 hrs + +**Description**: +[Mooncake.jl](https://github.com/chalk-lab/Mooncake.jl) Mooncake.jl is a reverse-mode AD package written entirely in Julia, which addresses many of limitations of the popular [ReverseDiff.jl](https://github.com/JuliaDiff/ReverseDiff.jl) and [Zygote.jl](https://github.com/FluxML/Zygote.jl) libraries. While the library is typically fast, performance is not tested as systematically as it could be, meaning that there are probably a range of performance bugs waiting to be uncovered. Additionally, there are a range of known performance limitations which need to be addressed. This project aims to resolve known performance problems, to find new ones, and fix them too! + +Skills: familiarity with Julia programming, how to make Julia code performant, and a strong desire to make existing Julia code more performant! An understanding of AD is helpful, but not essential. + +## Jaxprs in Julia + +**Mentors**: [Hong Ge](https://github.com/yebai) + +**Project difficulty**: Hard + +**Project length**: 350 hrs + +**Description**: +The Turing.jl team is looking for a contributor to implement a lightweight Julia library to work with Jaxprs. If this could be you, get in touch and we can discuss the details. + +## Contributor-proposed Project + +**Mentors**: Community + +**Description**: +If you have an idea not listed here, propose it. Submit a short proposal with motivation, a concise plan, expected deliverables, and a timeline. Maintainers and mentors will review and help turn it into a plan. Be prepared to discuss scope with mentors early. + +To discuss proposals and next steps, contact [Shravan Goswami](https://julialang.slack.com/team/U04UZB5U740) on the [Julia Slack](https://julialang.org/slack/). From f930d51226e90f81dcebc0449a3f1b81089837a9 Mon Sep 17 00:00:00 2001 From: Shravan Goswami Date: Sun, 22 Feb 2026 15:43:40 +0530 Subject: [PATCH 2/5] clean --- news/posts/2026-02-21-gsoc/index.qmd | 7 ------- 1 file changed, 7 deletions(-) diff --git a/news/posts/2026-02-21-gsoc/index.qmd b/news/posts/2026-02-21-gsoc/index.qmd index 78eb26a05..56a43cda0 100644 --- a/news/posts/2026-02-21-gsoc/index.qmd +++ b/news/posts/2026-02-21-gsoc/index.qmd @@ -37,7 +37,6 @@ Also cross-posted on [Julia's GSoC page](https://julialang.org/jsoc/gsoc/turing/ **Project length**: 350 hrs -**Description**: Gibbs sampling is one of the most widely used inference strategies in Bayesian computation, but Turing.jl's current Gibbs implementation is tightly coupled to its internals and difficult to extend. This project is about designing a clean, composable Gibbs sampler built on top of the [AbstractMCMC.jl](https://github.com/TuringLang/AbstractMCMC.jl) interface so that it works perfectly across both Turing.jl and [JuliaBUGS.jl](https://github.com/TuringLang/JuliaBUGS.jl). @@ -56,7 +55,6 @@ Work will include: **Project length**: 175 hrs -**Description**: Turing.jl currently uses [ParetoSmooth.jl](https://github.com/TuringLang/ParetoSmooth.jl) for Pareto-smoothed importance sampling (PSIS) and leave-one-out cross-validation (LOO-CV). The upstream issue [TuringLang/ParetoSmooth.jl#115](https://github.com/TuringLang/ParetoSmooth.jl/issues/115) tracks migrating this functionality to the more actively maintained [PSIS.jl](https://github.com/arviz-devs/PSIS.jl) and [PosteriorStats.jl](https://github.com/arviz-devs/PosteriorStats.jl) packages from the ArviZ ecosystem. @@ -75,7 +73,6 @@ The project involves: **Project length**: 350 hrs -**Description**: [Mooncake.jl](https://github.com/chalk-lab/Mooncake.jl) is a source-to-source reverse-mode AD package for Julia. Two open issues currently limit its performance and applicability in real-world workloads. @@ -98,7 +95,6 @@ The work involves writing rules for the `ccall`s that enter and exit threaded re **Project length**: 350 hrs -**Description**: [Pigeons.jl](https://github.com/Julia-Tempering/Pigeons.jl) implements parallel tempering and related algorithms that are particularly effective for multimodal and high-dimensional posteriors. This project has two related goals that together make Pigeons a first-class citizen of the TuringLang ecosystem. @@ -121,7 +117,6 @@ The implementation must be correct and performant, validated against standard be **Project length**: 350 hrs -**Description**: [Mooncake.jl](https://github.com/chalk-lab/Mooncake.jl) Mooncake.jl is a reverse-mode AD package written entirely in Julia, which addresses many of limitations of the popular [ReverseDiff.jl](https://github.com/JuliaDiff/ReverseDiff.jl) and [Zygote.jl](https://github.com/FluxML/Zygote.jl) libraries. While the library is typically fast, performance is not tested as systematically as it could be, meaning that there are probably a range of performance bugs waiting to be uncovered. Additionally, there are a range of known performance limitations which need to be addressed. This project aims to resolve known performance problems, to find new ones, and fix them too! Skills: familiarity with Julia programming, how to make Julia code performant, and a strong desire to make existing Julia code more performant! An understanding of AD is helpful, but not essential. @@ -134,14 +129,12 @@ Skills: familiarity with Julia programming, how to make Julia code performant, a **Project length**: 350 hrs -**Description**: The Turing.jl team is looking for a contributor to implement a lightweight Julia library to work with Jaxprs. If this could be you, get in touch and we can discuss the details. ## Contributor-proposed Project **Mentors**: Community -**Description**: If you have an idea not listed here, propose it. Submit a short proposal with motivation, a concise plan, expected deliverables, and a timeline. Maintainers and mentors will review and help turn it into a plan. Be prepared to discuss scope with mentors early. To discuss proposals and next steps, contact [Shravan Goswami](https://julialang.slack.com/team/U04UZB5U740) on the [Julia Slack](https://julialang.org/slack/). From a62cc43690b50922c504d3a838e6363ad15fe1b9 Mon Sep 17 00:00:00 2001 From: Shravan Goswami Date: Sun, 22 Feb 2026 16:40:19 +0530 Subject: [PATCH 3/5] update mentors --- news/posts/2026-02-21-gsoc/index.qmd | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/news/posts/2026-02-21-gsoc/index.qmd b/news/posts/2026-02-21-gsoc/index.qmd index 56a43cda0..015f480a9 100644 --- a/news/posts/2026-02-21-gsoc/index.qmd +++ b/news/posts/2026-02-21-gsoc/index.qmd @@ -17,7 +17,7 @@ The TuringLang ecosystem has made strong progress recently: more AD backends, a For GSoC 2026 we offer projects from core AD work to scalable inference and user-facing tools. If a project interests you, contact the mentors listed below or open a discussion on the relevant GitHub repo. -Please drop a short introduction message in the [`#turing`](https://julialang.slack.com/archives/CCYDC34A0) channel on the [Julia Slack](https://julialang.org/slack/) and feel free to ping [Penelope Yong](https://github.com/penelopeysm/) or [Shravan Goswami](https://github.com/shravanngoswamii) there. Mentors will be happy to discuss project details, scope, and expectations, and you can find mentor contacts at [team page](/team/). +Please drop a short introduction message in the [`#turing`](https://julialang.slack.com/archives/CCYDC34A0) channel on the [Julia Slack](https://julialang.org/slack/) and feel free to ping [Shravan Goswami](https://github.com/shravanngoswamii) there. Mentors will be happy to discuss project details, scope, and expectations, and you can find mentor contacts at [team page](/team/). Also cross-posted on [Julia's GSoC page](https://julialang.org/jsoc/gsoc/turing/). @@ -25,13 +25,12 @@ Also cross-posted on [Julia's GSoC page](https://julialang.org/jsoc/gsoc/turing/ | Mentor | Slack Contact | |--------|---------------| -| Penelope Yong | [Slack](https://julialang.slack.com/team/U07DBR7C2LD) | | Hong Ge | [Slack](https://julialang.slack.com/team/UCRDHV7PB) | | Xianda Sun | [Slack](https://julialang.slack.com/team/U03AV5JMJ8N) | ## New AbstractMCMC-based Gibbs Sampler for Turing.jl and JuliaBUGS.jl -**Mentors**: [Penelope Yong](https://github.com/penelopeysm/), [Hong Ge](https://github.com/yebai) +**Mentors**: [Hong Ge](https://github.com/yebai) and [Xianda Sun](https://github.com/sunxd3) **Project difficulty**: Medium @@ -49,7 +48,7 @@ Work will include: ## Moving from ParetoSmooth to PSIS + PosteriorStats in Turing.jl -**Mentors**: [Penelope Yong](https://github.com/penelopeysm/), [Hong Ge](https://github.com/yebai) +**Mentors**: [Hong Ge](https://github.com/yebai) **Project difficulty**: Medium @@ -67,7 +66,7 @@ The project involves: ## Stateful Hand-Written Rules and Thread Support in Mooncake.jl -**Mentors**: [Hong Ge](https://github.com/yebai) +**Mentors**: [Hong Ge](https://github.com/yebai) and [Xianda Sun](https://github.com/sunxd3) **Project difficulty**: Medium to Hard @@ -89,7 +88,7 @@ The work involves writing rules for the `ccall`s that enter and exit threaded re ## Pigeons.jl Integration with Turing and JuliaBUGS -**Mentors**: [Xianda Sun](https://github.com/sunxd3), [Penelope Yong](https://github.com/penelopeysm/) +**Mentors**: [Xianda Sun](https://github.com/sunxd3) **Project difficulty**: Medium to Hard From 12a63eacb5ea6c35507fad96bdec02e135fda3c1 Mon Sep 17 00:00:00 2001 From: Shravan Goswami Date: Mon, 23 Feb 2026 18:08:23 +0530 Subject: [PATCH 4/5] update GSoC projects --- news/posts/2026-02-21-gsoc/index.qmd | 43 +--------------------------- 1 file changed, 1 insertion(+), 42 deletions(-) diff --git a/news/posts/2026-02-21-gsoc/index.qmd b/news/posts/2026-02-21-gsoc/index.qmd index 015f480a9..9c1d1ce97 100644 --- a/news/posts/2026-02-21-gsoc/index.qmd +++ b/news/posts/2026-02-21-gsoc/index.qmd @@ -46,24 +46,6 @@ Work will include: - Migrating existing Turing.jl Gibbs usage to the new interface. - Ensuring JuliaBUGS.jl can plug in its own conditional samplers without modification. -## Moving from ParetoSmooth to PSIS + PosteriorStats in Turing.jl - -**Mentors**: [Hong Ge](https://github.com/yebai) - -**Project difficulty**: Medium - -**Project length**: 175 hrs - -Turing.jl currently uses [ParetoSmooth.jl](https://github.com/TuringLang/ParetoSmooth.jl) for Pareto-smoothed importance sampling (PSIS) and leave-one-out cross-validation (LOO-CV). -The upstream issue [TuringLang/ParetoSmooth.jl#115](https://github.com/TuringLang/ParetoSmooth.jl/issues/115) tracks migrating this functionality to the more actively maintained [PSIS.jl](https://github.com/arviz-devs/PSIS.jl) and [PosteriorStats.jl](https://github.com/arviz-devs/PosteriorStats.jl) packages from the ArviZ ecosystem. - -The project involves: - -- Studying the current ParetoSmooth usage across Turing.jl and dependent packages. -- Migrating to PSIS.jl + PosteriorStats.jl, making sure API compatibility for end users. -- Updating documentation and tutorials to reflect the new workflow. -- Deprecating or archiving ParetoSmooth.jl where appropriate. - ## Stateful Hand-Written Rules and Thread Support in Mooncake.jl **Mentors**: [Hong Ge](https://github.com/yebai) and [Xianda Sun](https://github.com/sunxd3) @@ -86,7 +68,7 @@ Even a race-condition-free primal can produce race conditions on the reverse pas Additionally, rule caches (the stacks inside `OpaqueClosure`s) must be Task-specific; sharing them across Tasks causes pushes and pops to interleave incorrectly. The work involves writing rules for the `ccall`s that enter and exit threaded regions, ensuring atomic tangent updates, and making rule caches Task-local without relying on `threadid()`. -## Pigeons.jl Integration with Turing and JuliaBUGS +## Pigeons.jl Integration with Turing and JuliaBUGS via AbstractMCMC **Mentors**: [Xianda Sun](https://github.com/sunxd3) @@ -107,29 +89,6 @@ The paper shows that by exploiting the structure of the compute graph (rather th JuliaBUGS already exposes the graph structure this approach relies on. The implementation must be correct and performant, validated against standard benchmarks with comparisons to both traditional Gibbs and HMC. - -## Mooncake.jl Performance Optimization - -**Mentors**: [Hong Ge](https://github.com/yebai) - -**Project difficulty**: Medium - -**Project length**: 350 hrs - -[Mooncake.jl](https://github.com/chalk-lab/Mooncake.jl) Mooncake.jl is a reverse-mode AD package written entirely in Julia, which addresses many of limitations of the popular [ReverseDiff.jl](https://github.com/JuliaDiff/ReverseDiff.jl) and [Zygote.jl](https://github.com/FluxML/Zygote.jl) libraries. While the library is typically fast, performance is not tested as systematically as it could be, meaning that there are probably a range of performance bugs waiting to be uncovered. Additionally, there are a range of known performance limitations which need to be addressed. This project aims to resolve known performance problems, to find new ones, and fix them too! - -Skills: familiarity with Julia programming, how to make Julia code performant, and a strong desire to make existing Julia code more performant! An understanding of AD is helpful, but not essential. - -## Jaxprs in Julia - -**Mentors**: [Hong Ge](https://github.com/yebai) - -**Project difficulty**: Hard - -**Project length**: 350 hrs - -The Turing.jl team is looking for a contributor to implement a lightweight Julia library to work with Jaxprs. If this could be you, get in touch and we can discuss the details. - ## Contributor-proposed Project **Mentors**: Community From 8d47a5fe612af56b233c32e88160025a7d288669 Mon Sep 17 00:00:00 2001 From: Shravan Goswami Date: Mon, 23 Feb 2026 18:27:24 +0530 Subject: [PATCH 5/5] update date in blog and year in footer --- _includes/footer.html | 2 +- news/posts/2026-02-21-gsoc/index.qmd | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/_includes/footer.html b/_includes/footer.html index 99e0f11ef..891272abb 100644 --- a/_includes/footer.html +++ b/_includes/footer.html @@ -38,7 +38,7 @@
Supported by leading researchers
diff --git a/news/posts/2026-02-21-gsoc/index.qmd b/news/posts/2026-02-21-gsoc/index.qmd index 9c1d1ce97..9b42e2f7e 100644 --- a/news/posts/2026-02-21-gsoc/index.qmd +++ b/news/posts/2026-02-21-gsoc/index.qmd @@ -8,7 +8,7 @@ categories: author: - name: The TuringLang team url: /team/ -date: 02/22/2026 +date: 02/23/2026 toc: true ---