Hi Helin, Phil, and the Dart team,
I'm Haraprosad Biswas, a Senior Software Engineer currently building an AI-powered fintech platform at TechCare Inc. (Canada) with real-time transaction processing and bank connectivity via streaming APIs. Prior to this, I was a founding engineer at 10xScale.ai where I led the full technical implementation of a cross-platform LMS and Hospital Management System — both involving real-time WebSocket communication, offline-first architecture, and FastAPI backends. I'm also the author of two open-source Dart packages: flutterfix (a CLI that auto-resolves Flutter/Android build errors) and flutter_tanstack_query (intelligent API caching with offline-first support).
I'm applying for GSoC 2026 and I'm very interested in the 'Prototype New Dart IntelliJ Plugin using LSP' project.
I've studied PR #278 carefully, including the review rounds from Angelo Zerr, DanTup, and the Gemini code analysis. I have three specific technical questions before I finalize my proposal:
1. LSP message framing
The current DartLanguageServerFactory uses a brace-counting loop to detect message boundaries — flagged by Gemini as a MUST-FIX since it breaks on any } inside a string value or when two messages arrive in the same read buffer. DanTup suggested reusing StreamMessageProducer from lsp4j which implements correct Content-Length framing per the LSP spec. Is this the direction you'd want the GSoC project to take, or are you considering a different integration point for message parsing?
2. LanguageServerFactory pattern
Angelo Zerr noted that extending LanguageServerDefinition directly is discouraged in lsp4ij — the correct approach is implementing LanguageServerFactory and declaring server + file mappings in plugin.xml. Is migrating to this pattern part of the GSoC scope, or is it being handled separately from the prototype work?
3. clientCapabilities forwarding
DanTup suggested capturing clientCapabilities from the LSP initialize request and forwarding them to the legacy analysis server via setClientCapabilities — so the server returns correctly-typed responses for completion kinds, symbol kinds etc. that lsp4ij expects. Should the proposal treat this as in-scope for the initial prototype?
My background in real-time streaming systems — bank transaction pipelines at TechCare, WebSocket sync in the Hospital HMS, IoT LoRa gateway integration — maps directly to the stream interception architecture in PR #278. I'll have a working fork ready by this weekend.
Thank you for your time — looking forward to your thoughts.
Best,
Haraprosad Biswas
GitHub:
https://github.com/HaraprosadPortfolio :
https://portfolio-website-2f800.web.app/