From 2010 to 2017, Scala was part of the Google Summer of Code (GSoC). We are registering our organization to be part of the GSoc 2018. Every year thousands of talented students get paired with Open Source Organization. It’s a great place to find new contributors. However, we need to be attractive to prospective students with a list of inspiring project ideas.
I suggest tooling as a theme. Super rewarding and fun to work on tools that help programmers master and be productive with Scala (REPL modernisation, Scaladoc using tasty?, help with VS Code IDE support via LSP, help with scalafix: refactoring & linting, configurable error reporting / suppress warnings, nicer error messages,…)
Some ideas for REPL modernisation:
- upgrade to jline 3 for multi-line editing and history, highlighting as you type,…
- make it more like a worksheet with e.g. watched variables that update as you change your program
- make REPL embeddable in your own code to poke around in a running program
- (advanced, happy to help with this) make the compiler more supportive of REPL-style line-by-line coding, instead of encoding it with deep nesting of interpreter wrapper objects (https://github.com/scala/scala/pull/5220)
Also, an idea Jason was pretty excited about a few years ago, would be better presentation compiler integration with the repl. https://github.com/ensime/ensime-server/issues/988
I’d like to mentor this year and I like your suggestions around modernising the REPL, but I’ve never worked on it. Where is a good place to get started? Do you think is something I could get to know good enough in a couple of months? I’d like to chat more about it if you have some time!
Great! A few months sounds like a reasonable time frame. Happy to provide feedback and pointers along the way.
I’m sorry I don’t have a friendlier getting started suggestion, but this massive PR would be a good starting point. It refactors the compiler so that there’s some separation between the compiler side of things (which does a lot of messy encoding to power the REPL’s smarts), and the “front-end”/GUI (which takes user input, keeps history, displays code with highlighting, reports error etc). The interface just captures the status quo. It would be nice to evolve it, coordinating with sbt, ammonite, spark,…
To get started hacking on this, I suggest upgrading to JLine 3. That should now be possible without touching the rest of the compiler. It would give us proper multi-line history, syntax highlighting as you type,…
Thanks, Adriaan! This sounds great, I’ll start having a look this week to see how it goes.
I would also recommend speaking to Andrew Marki (“Som Snytt”) to let him know what you’re doing, as he’s quite enthusiastic about REPL work and (I think) knows his way around the code, and would probably be able to help with answering questions.
Is REPL open for contributions too? If yes, I would like to contribute.
I just stumbled upon GSoC today, and I was particularly interested in this project. I recognize that the deadline is incredibly close, but if possible, would I be able to contact you to discuss it further and learn more about it?
Thanks so much