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.cppto delay context cleanup, allowing me to extractxmlCtxt->input->lineduring theOnStartElementNscallback. - I stored this line number in the
CTagAST and propagated it to the schemaXMLTagduringconnectTags(). - I updated
XMLAttribute::readValueto accept line numbers, enabling deep attribute validation (e.g., catchingconstraint="magic-value") to report the exact line number. - I injected
tag.getLineNumber()intoMeshConfiguration,ParticipantConfiguration, andCouplingSchemeConfiguration.
(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:
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!