YouTube link: https://www.youtube.com/watch?v=RmezAWtGmWg
Your hosts: Josh Suereth, Dick Wall, Seth Tisue
Join us during and between episodes for web-based Scalawags chat on Gitter.
- steel yourself for 8 unbroken minutes of Seth's face
- may we suggest the audio version?
- Scala Days 2016 is announced:
- New York, May 9–11
- Berlin, June 15–17
- http://scaladays.org
- Josh will reunite with the ancestral Suereths of Germany (and tell them raccoon stories)
- Dick: what if SLIPs were all about developer collaboration?
- Josh: it's about defaults and about the beginner experience. languages are judged by this
- how'd this start? Matthew de Detrich submitted a SLIP on JSON ASTs
- much of the ensuing discussion (300+ comments) wasn't so much about JSON in particular, but about whether this was a proper subject for a SLIP at all
- I want to use JSON in Scala, what do I do?
- there's an old, bad parser in a standard module that people still use because it's there
- and there's at least a half dozen competing parsers and they all use their own, non-interoperable ASTs
- some projects (e.g. Jawn) attempt to support multiple AST implementations, but this is cumbersome to maintain
- Dick: in my training classes, #1 question about libraries is what JSON library to use. and I don't know what advice to give them
- is there a writeup of the pros and cons? there's Manuel Bernhardt's:
- http://manuel.bernhardt.io/2015/11/06/a-quick-tour-of-json-libraries-in-scala/
- pro: includes code samples for using each library
- con: light on history & design philosophy
- Dick: choosing a database library isn't much easier
- Manuel's writeup on relational database libraries:
- Seth: testing libraries in Scala are a community success story, actors are a community success story, there are other success stories. JSON in Scala is a failure story.
- Josh: the perfect is the enemy of the good. there are tradeoffs. picking a standard with decent choices won't eliminate competitors that want perfection on some axis. but that's fine.
- Seth fails to grasp why the idea of providing a default choice provokes so much opposition. Josh and Dick attempt to enlighten him
- meanwhile in Haskell-land they're talking about this Oleg article on "freer monads", check it out:
- Josh wants two standard libraries: the regular impure one, and an alternate for purely functional programming. and separate areas for strict vs lazy
- Dick tells the story of Play and Specs; was it bad for the Play project to pick a default test framework?
- Seth reminds himself that we're still living with negative consequences of past decisions, so it's understandable for "we know better now" to be met with skepticism
- Josh: other languages have good module systems and discoverability of modules (CPAN, Hackage). Java (and Scala) have Maven. meanwhile Oracle is still working on the long-promised Java module system. the platform makes it hard.
- Seth: we should (perversely) be thankful Scala breaks binary compatibility frequently; it culls legacy libraries from the ecosystem
- Python 3000, success story or disaster?
- a lot of people are still sticking with Python 2
import future
, yay- Thomas Bild points out: shouldn't migration be easier in a statically typed language?
- we (still) need automatic tools for rewriting Scala code
- James Gosling worked on something like this for Java, called Jackpot: http://www.artima.com/intv/jackpot.html
- Josh: "you need to spend more time on migration tools than on the feature". 3x-4x more
- don't tread on Erik Osheim
- what, in one sentence, do we want?
- Seth: a smaller standard library, a larger set of standard modules
- Dick: a trusted source where people can go to find high quality libraries, with reviews and information. and think of newcomers, and be nice.
- Josh: ...
- and it's a cliffhanger: Josh's internet connection died
- and now you get Dick's face until the end
- Seth agrees, libraries need to be easier to find and easier to add to your REPL or your project
- Dick: in Ubuntu there are "meta-packages" that bundle multiple dependencies. how about something like that for Scala? the EPFL metapackage, the Typelevel metapackage, etc
- and then the hangout dies, putting a merciful end to this cursed episode