There’s a bunch of video recordings from the NE Scala 2014 and I couldn’t resist to comment on Sbt 1.0 – The Interactive Build Tool by Josh Suereth. It’s 23 minutes about what’s coming in sbt 1.0 and the future of sbt.next.
Josh is an excellent speaker and he’s the product owner of sbt at Typesafe so he’s leading the team who develops sbt. All in all, who else could have presented the vision of the team about sbt than Josh?! You gotta watch the video since it’s very concise.
The video starts with a wide smile of Josh when he’s asking about people’s feelings towards sbt. He started his journey with sbt as a hater (!)
What’s the good about sbt – tilde ‘~’ (triggered builds) and plus ‘+’ (cross-versioned builds).
2:11 “We’re already an IDE…almost.”
Features of sbt (as pointed out by Josh during the presentation):
- diverse plugin ecosystem.
- the core of sbt is a type safe key-value map…which is really pluggable (when you think about it) and plugins benefited from it.
- we use Scala as the build language that’s the main reason we (= sbt) exist in the Scala ecosystem. Josh smiles :-)
- the default build which is an open source standard of how you should make an open source project and you can customise as needed
What’s bad about sbt – unsurprisingly the Number One is…Ivy – still the best conceptual model for dependencies – it beats the hell out of Maven – Josh wouldn’t go to Aether. Replacing Ivy is not an sbt 1.0 thing. The sbt team acknowledged that this is a problem. And pretty poor documentation. It’s still terse. Lot of investments going on in the documentation.
“The one thing people loved more than XML of Ant was the symbolic paths. So we got it right.”
“We improved the build format in sbt 0.13”
5:32 “The first API was all these applicative functors on tasks. We didn’t call it that because it still wasn’t cool. I think it’s ok here to call them applicative functors. I hope. Is it cool?” Josh smiles.
6:00 “The only thing that I’m noticing that’s kind of concern people don’t realise that this is still asynchronous. If you declare a dependency on key it’s not computed right where you wrote it – it’s actually computed asynchronously somewhere else.”
6:16 “We did a lot with Ivy – a lot of little stuff that you probably don’t notice besides I don’t have to delete the Ivy cache all the time, but only once in a while.”
6:33 “With 0.13 you’re seeing some new interesting stuff come out such as .previous to define incremental tasks.”
6:41 “Let’s talk about vision ’cause I don’t have much time on anything else.”
“We’re returning sbt into a server” and “We’re trying to clean up how plugins get implemented”.
And there’s more in the video, but you gotta watch it yourself to really appreciate what’s already available and coming up in 0.13.2 as well as 1.0. Have fun watching it!