Candidate Libraries for the Scala Platform

After years of working on many Scala projects, I have formed my personal highly opinionated list of goto libraries for common stuff:

Copying here:

Libraries

If you are using Play, these are reasonable alternatives to above since these have better out-of-the-box Play support:

Code Quality

sbt plugins

A subset of these would be nice additions to SP. Don’t know the process here. Should we eval them? Contact authors?

4 Likes

I’ve been looking at the dependency graph for the runtime dependencies for (only) the libraries. Many libraries on the list don’t have a 2.12 release. For 2.12, the top dependencies by PageRank according to gephi from the GraphML file exported by sbt dependency graph are

  • scala reflect
  • macro compat
  • machinist
  • scalaz core
  • simulacrum
  • slf4j
  • sbt test interface
  • reactive streams
  • cats core

For 2.11, that list becomes

  • scala reflect
  • scala compiler
  • macro compat
  • slf4j
  • netty common
  • netty buffer
  • scala xml
  • netty transport
  • machinist
  • parser combinators
  • rapture core
  • reactive streams
  • scalaz core

Rapture, which is a metapackage of 31 sub-packages, seems to be a “platform” all by itself. All references to rapture core seem to come from that metapackage

Removing rapture, and pruning evicted dependencies gives the “top list”

  • slf4j
  • macro-compat
  • netty-common
  • netty-buffer
  • typesafe config
  • netty-transport
  • scalaz-core
  • machinist
  • reactive streams
  • play
  • commons codec
  • play-silhouette
  • jackson core
  • simulacrum
  • sbt test interface
  • netty codec

That could give some insights on what important dependencies to standardize on and/or whitelist are.

No-dependencies libraries in the list are

  • scala-time
  • better files
  • typesafe config
  • quants
  • swave

Those could make for relatively easy adoption discussions.

3 Likes