# GSoC 2026 Introduction: Clean multi-step configuration (Dhanraj Rateria)

**URL:** https://precice.discourse.group/t/gsoc-2026-introduction-clean-multi-step-configuration-dhanraj-rateria/2859
**Category:** Google Summer of Code
**Tags:** gsoc-configuration, gsoc-period-appl
**Created:** [March 19, 2026, 7:40am UTC](https://precice.discourse.group/t/gsoc-2026-introduction-clean-multi-step-configuration-dhanraj-rateria/2859 "2026-03-19T07:40:25Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![DhanrajRateria](https://yyz2.discourse-cdn.com/free1/user_avatar/precice.discourse.group/dhanrajrateria/32/3404_2.png) [@DhanrajRateria](https://precice.discourse.group/u/DhanrajRateria)
#### Post date: [March 19, 2026, 7:40am UTC](https://precice.discourse.group/t/gsoc-2026-introduction-clean-multi-step-configuration-dhanraj-rateria/2859/1 "2026-03-19T07:40:25Z")

</div>

Hi preCICE team! 👋

My name is Dhanraj Rateria, and I am highly interested in contributing to the **“Clean multi-step configuration”** project for GSoC 2026. I have spent the last few days diving deep into the preCICE XML parsing architecture.

Because repository interactions are currently restricted to collaborators, I am posting my introduction and entry test results here, and I would be incredibly grateful for collaborator access so I can submit my Pull Request!

**What motivates you to spend this summer in GSoC instead of doing anything else?**  
I want to spend my summer doing deep systems engineering that has a tangible impact. Contributing to a high-performance multi-physics library like preCICE allows me to work on challenging C++ architecture while supporting software used by scientists globally. GSoC provides the perfect structured environment to dedicate 100% of my time to this.

**What interests you most about our project?**  
I am fascinated by compiler design and parser architecture. The challenge of refactoring the `libxml2` wrapper into a decoupled, multi-step Abstract Syntax Tree (AST) perfectly aligns with my interests in software architecture and memory management.

**Will you have any other commitments while working on the project?**  
No, I will have no other academic or work commitments during the GSoC coding period. I am fully committed to working on preCICE for the standard 30-40 hours per week.

**What previous experience do you have with the respective technologies?**  
I have strong experience in C++ and object-oriented design. I am comfortable navigating large codebases, managing pointers/references, using CMake, and working with data structures like ASTs.

**What previous experience with Git and GitHub do you have?**  
I am highly proficient with Git (branching, rebasing, resolving merge conflicts, and GitFlow) and GitHub (PRs, code reviews, and issue tracking).

**My Entry Test Progress (Beyond the basics):**  
For the entry test, I didn’t just modify a hardcoded string. I explored the core parser architecture to propagate exact XML line numbers from `libxml2` directly into the configuration error messages.

- I modified `ConfigParser.cpp` to delay context cleanup, allowing me to extract `xmlCtxt->input->line` during the `OnStartElementNs` callback.
- I stored this line number in the `CTag` AST and propagated it to the schema `XMLTag` during `connectTags()`.
- I updated `XMLAttribute::readValue` to accept line numbers, enabling deep attribute validation (e.g., catching `constraint="magic-value"`) to report the exact line number.
- I injected `tag.getLineNumber()` into `MeshConfiguration`, `ParticipantConfiguration`, and `CouplingSchemeConfiguration`.

_(Note: During this, I noticed that post-parsing validation, like `M2NConfiguration::getM2N()`, loses this context because the AST is currently discarded. This perfectly highlighted to me why the multi-step configuration project is so necessary!)_

My code is fully tested, committed, and pushed to my fork here:

> **[GitHub - DhanrajRateria/precice at add-xml-line-numbers](https://github.com/DhanrajRateria/precice/tree/add-xml-line-numbers)**
>
> add-xml-line-numbers

Could I please request collaborator access to the `precice/precice` repository so I can officially open this PR against the `develop` branch for your review?

Thank you for your time, and I look forward to your feedback!
