From Fedora Project Wiki


Improved Scala Ecosystem Support

Summary

Fedora now supports several essential parts of the Scala language ecosystem as well as building packages with sbt, the de facto build tool for the Scala community.

Owner

Current status

  • Targeted release: Fedora 21
  • Last updated: 18 March 2014
  • Tracker bug: <will be assigned by the Wrangler>

Detailed Description

Fedora has had a Scala package for some time, but the larger Scala ecosystem has been absent from Fedora. In fact, until very recently, Fedora included no packages that depended on Scala. The main obstacle to getting Scala ecosystem projects packaged for Fedora was the difficulty in packaging sbt, the Simple Build Tool, which many Scala projects use for build, dependency, and release management. Fedora 21 now includes sbt as well as several interesting and foundational Scala ecosystem projects, most notably:

  • akka, a toolkit for developing actor-based systems;
  • json4s, a unified interface to JSON parsers and generators;
  • sbinary, a typed Scala interface for reading and writing binary formats;
  • sbt, the simple build tool for Scala and Java projects;
  • scala-stm, a software transactional memory implementation for Scala;
  • scalacheck, a property-based testing framework for Scala; and
  • scalaz, a set of extensions to the Scala standard library to facilitate functional programming.

Benefit to Fedora

Scala is an interesting language that has attracted a lot of cool projects. This change will enable Fedora to be an excellent platform for Scala development and for distributing Scala software.

Scope

  • Proposal owners: The change is complete as described; other ecosystem packages and additional Fedora-specific developer documentation will continue to become available.
  • Other developers: N/A (not a System Wide Change)
  • Release engineering: N/A (not a System Wide Change)
  • Policies and guidelines: N/A (not a System Wide Change)

Upgrade/compatibility impact

N/A (not a System Wide Change)

How To Test

In general, the best way to test these new packages is to install them, use them, and build other packages with them. After running yum install sbt, it should be possible to use sbt to build arbitrary Scala packages under Fedora. Using sbt for packaging is currently more involved; some initial details are available on the Big Data SIG page.

User Experience

Users who have had to rely upon third-party packages for essential Scala development infrastructure will now be able to install these from Fedora repositories. Developers who wish to package Scala projects for Fedora in a way consistent with the packaging guidelines now have a way to do.

Dependencies

This change depends on the versions of Scala and several Java packages currently available in Fedora. It is possible that the introduction of Java 8 would impact some of the packages in this change or their dependencies (in particular Scala and sbt), but we are of course monitoring the transition. Further sbt Fedora integration will be possible as a result of improved Ivy metadata support in Fedora 21.

Contingency Plan

  • Contingency mechanism: (What to do? Who will do it?) N/A (not a System Wide Change)
  • Contingency deadline: N/A (not a System Wide Change)
  • Blocks release? N/A (not a System Wide Change), Yes/No
  • Blocks product? N/A <-- Applicable for Changes that blocks specific product release/Fedora.next -->

Documentation

I've written some notes on packaging Scala projects for the Big Data SIG. I'll also be writing up some additional Fedora-specific documentation on using sbt more effectively by exploiting new XMvn fatures available in F21 and above.

Release Notes

Fedora now features dramatically improved support for the Scala ecosystem with the inclusion of sbt version 0.13.1 and several other key Scala infrastructure packages, including:

  • akka, a toolkit for developing actor-based systems;
  • json4s, a unified interface to JSON parsers and generators;
  • sbinary, a typed Scala interface for reading and writing binary formats;
  • scala-stm, a software transactional memory implementation for Scala;
  • scalacheck, a property-based testing framework for Scala; and
  • scalaz, a set of extensions to the Scala standard library to facilitate functional programming.

With these packages available in Fedora, Fedora has become an excellent environment for developing and distributing Scala projects.