[GSoC 2026] Quick question about the small SourceKit-LSP project

Hey everyone,

My name is Divya Prakash (DPrakashh), and I'm a second-year student (B.Tech CS). I posted back in August about wanting to get into GSoC with Swift, and I really appreciate the advice I got then, especially from @ktoso .

I took that advice to heart and stepped back for a few months to properly focus on learning Swift and figuring out the compiler stuff. It's been a tough but really fun learning curve!

Now that GSoC 2026 is getting closer, I'm trying to figure out a small project. I saw the idea "Add more refactoring actions to SourceKit-LSP" from last year, and it looks perfect for me.

I really need to keep this project small (90-hour size) because I have my GATE exam preparation next year, and I want to be 100% sure I can finish the GSoC work well without rushing.

Could @ahoppen maybe give me some quick advice?

  1. Is this 90-hour refactoring idea something Swift is still looking to get done for GSoC 2026?

  2. If it is, could you possibly point me to one tiny thing—maybe a small bug or an easy refactoring feature—I could try to fix right now? I'm trying to get my environment set up and just want to prove I can handle the contribution process before the application time starts in March.

Thanks so much for your patience and for guiding new folks like me. I'm genuinely excited to try and help out the Swift community.

Best, Divya Prakash

Hi Divya,

Thanks for your interest in SourceKit-LSP.

I can’t make any promises for our GSoC plans next year and mentor staffing but the topic of adding more refactorings to SourceKit-LSP is definitely still up-to-date.

If you want to get started with something simple today, you could take a look at the issues marked as good first issue. Support copied file mappings in all requests ¡ Issue #2276 ¡ swiftlang/sourcekit-lsp ¡ GitHub for example should be something that you could implement for one request in a fairly short time.

If you want to go straight into refactorings, look at the code action label, though all of them are likely a little larger. I suspect Code action to convert between early-exit if and guard · Issue #1569 · swiftlang/sourcekit-lsp · GitHub would be the easiest one right now. But if you have your own ideas for new refactorings (anything you think would help you), we’re also always keen for that.

– Alex

1 Like

As far as GSoC and scheduling work we’re not ready to announce anything yet but we’re intending to participate as usual. We cannot guarantee if GSoC selects Swift this year again, but think we will be applying as usual.

As far as project ideas, when writing your own idea you have to convince someone to mentor your work. I don’t know if Alex is still able to mentor this project, so if not, you’d have to find another mentor. It might be best to also work on a proposal early on as we announce participating as organization in Swift, and then see if you can find a matching mentor (I can help in the sense of pointing some “potential” people at the threads, but that’s about it – people will have to decide on their own if they wanted to potentially mentor such project).

This is still quite far out, applications only start in a few months still, so keep an eye out on the gsoc website to check the schedule.

1 Like

Thank you for providing excellent target issues!

I'm going to take your advice and focus 100% on Issue #2276 (copied file mappings fix) first. This is the perfect way to validate my toolchain setup and prove I can handle the contribution process. I'm treating this as my primary task for December.

I truly appreciate the immediate guidance.

Best, Divya Prakash (DPrakashh)

I completely understand the GSoC process regarding organization selection and mentor availability. I appreciate you clarifying the risks, and I'll start drafting my proposal in January to be ready when the time comes!

Best

Divya Prakash

@ahoppen

I have successfully completed the major setup milestone of cloning the entire Swift toolchain, including LLVM, Clang, and SourceKit-LSP, a process that involved several hours of downloading and dependency fetching. I also resolved an initial path issue caused by whitespace in the directory name by moving the entire project to a clean location (~/sw/swift-project). Despite this progress, I am currently blocked from starting the full compilation phase due to a persistent and complex environmental error. The core problem is that the build script consistently fails during the initial "Local Ninja Build" with a TypeError: expected str, bytes or os.PathLike object, not NoneType. This error occurs because the internal Python script (used by the build system) is failing to locate or resolve the path for an essential build tool, such as cmake or ninja, causing a blank value (NoneType) to be passed where a string path is expected. To resolve this, I have attempted every standard and advanced macOS environment fix: I successfully executed sudo xcode-select --reset and confirmed the developer path is correctly set. Furthermore, to bypass potential conflicts with my Homebrew setup, I explicitly ran the build script using both the system Python (/usr/bin/python3) and the Python interpreter bundled inside the Xcode application (/Applications/Xcode.app/Contents/Developer/usr/bin/python3), but the specific NoneType error repeated in all cases. I also tried adding explicit build flags (e.g., --cmake-toolchain), but my version of the build-script rejected them as "unknown settings". Given the failure persists after these exhaustive isolation and toolchain reset efforts, the issue appears to lie in a boundary condition within the build script's dependency lookup logic on my specific macOS M2 configuration.

If possible i need little help :sweat_smile: attaching my progress report for better understanding sir
I was unable to complete step 4
If i am making any beginner mistake please point it out :innocent:

I did not look into your problem in detail but I just want to share that you don’t need to build a toolchain locally if you just intend to contribute to SourceKit-LSP. Following the steps in sourcekit-lsp/CONTRIBUTING.md at main · swiftlang/sourcekit-lsp · GitHub should be sufficient.

1 Like

That is a fantastic piece of advice, thank you!

Oh man, if only I'd known this a few days ago! When I was first setting up, I ended up getting stuck and, out of pure desperation and stubbornness, built the entire toolchain. I basically spent a whole night wrestling with the environment—it was an epic, all-nighter fight! :sweat_smile:

But hey, the setup agony was worth it! I'm thrilled to share that despite that brutal initial hurdle, I submitted my very first PR to SourceKit-LSP earlier this week! The PR adds keyword snippets (like if and for) for better completion support.

Now, I'm just incredibly excited for it to (hopefully!) get merged and to soak up all the feedback from the review process. Contributions like this are definitely the fastest, if not the most painless, way to learn the Swift ecosystem!

Thanks again for the helpful tip! :innocent:

1 Like