We speak to Sébastien Doeraene, student of Martin Odersky and creator of an experimental Scala to JS compiler.
Scala is already one of the biggest languages on the JVM, and with new project Scala.js, it’s breaking into the browser, too.
Having introduced the project to the world in June, Doeraene last month christened the current build as v0.1. We spoke to him about the project’s origins and aims for the future.
JAXenter: What inspired you to start working on Scala.js?
How long has it been in development?I started the development of Scala.js in February 2013. So it has been 10 months, as of this writing. The first two months were focused on writing the initial prototype of the compiler. After that, I spent two more months making it remotely usable for the presentation at Scala Days in June 2013. Since then, I have been improving tooling support, like development in IDEs and integration in sbt, the canonical build tool of Scala, as well as size of the generated code.
Recently, I have welcomed two active contributors, Haoyi Li, who has made a great job at improving the developer-friendliness of Scala.js, and Jonas Fonseca, who contributed benchmarks and a test suite. A week ago, that small team was joined by Tobias Schlatter, an engineer hired in LAMP to work, in part, on Scala.js.
This is a fairly young project, but the enthusiasm displayed by contributors and the resources that Martin Odersky is willing to allocate to this project give me a strong hope that it will be a complete success.
How stable is Scala.js now? The official site warns that it is “still experimental”.
Now, to give an overall feeling, I believe Scala.js is a successful prototype that deserves to be assessed in toy applications and personal projects. People who have been testing it all agree on being amazed at how well it does work. I would not recommend it for a project at work, though, unless your team is willing to accept the obvious risks of using an early alpha release.
What’s the advantage of using the same language both server and client-side?