From Fedora Project Wiki

Better Erlang Integration

Summary

Improve Erlang software integration with the rest of Fedora.

Owner

Current status

  • Targeted release: Fedora 21
  • Last updated: 2014-03-23
  • Tracker bug: <will be assigned by the Wrangler>

Detailed Description

Erlang in Fedora is already in a good shape. However we can do better since there are a number of annoying shortcomings and issues. Just a few of them:

  • Fedora partially enabled Ellyptic Curve Crypto recently but we still provide Erlang with EC disabled completely because there is no way to enable just a few EC in the current Erlang version.
  • Erlang<->systemd interaction is in a quite poor state currently.
  • There is no way to install "headless" Erlang. Every Fedora Erlang user have to install graphical libraries even if (s)he doesn't want to use GUI on the target machine.
  • Every daemon written in Erlang has its own logging solution which doesn't use neither syslog nor Journald.
  • Erlang packaging is quite complex and undocumented mostly.

In order to address all these issues we should do the following:

  • Enable fine grained EC crypto support by upgrading Erlang to the latest R17.
  • Start working on a better systemd support in Erlang by enabling EPMD systemd support. This could be done by merging patches from Matwey V. Kornilov.
  • Add erlang-ejournald, erlang-lager_journald_backend, and make Journald as a default logging backend.
  • Split-off infrequently used modules which requires X11, Pulseaudio and ensure that it won't break anything.
  • Fix the long-standing noarch issue by providing additional default location for Erlang bytecode data.
  • Update Erlang RPM-related macros to improve packaging by reducing spec-file sizes.

Benefit to Fedora

  • Users will get initial EC support in Erlang. We still can't enable EC fully but at least we will enable some EC curves.
  • Users will have less issues caused by poor systemd and EPMD integration (lost node names during other Erlang daemons restarts etc).
  • Users will get centralized unified logging from all Erlang applications
  • Users won't have to install X11-related libraries if they don't want to.
  • Packagers won't see scary rpmlint messages regarding marking arch-independent package as arch-dependent one.
  • Packagers will spend less time on packaging Erlang software for Fedora.

Scope

  • Proposal owners:
    • We must rebuild Erlang R17 and submit it to build-overrides.
      • We have to rebuild all the packages listed below in the Dependencies section.
    • A necessary *.socket unit must be added to erlang-erts to enable EPMD socket activation.
      • Every Erlang daemon must require epmd.socket.
    • We need to fill new review request for erlang-ejournald
      • We have to fill new review request for erlang-lager_journald_backend
    • We have to patch out GUI parts and provide a way to tell user what to do in order to enable this functionality.
    • Add another default directory to look for Erlang *.beam files.
    • Every Erlang package must require erlang-rpm-macros.
  • Other developers: N/A
  • Release engineering: N/A
  • Policies and guidelines:
    • We have to create Erlang Packaging Guidelines which doesn't exist yet.

Upgrade/compatibility impact

Every Erlang upgrade requires the rebuilding of modules which contains ports or NIFs, and we will rebuild all such modules in Fedora. However if a user has some additional modules not available in a Fedora repository,then (s)he will have to rebuild it manually.

How To Test

  • Ensure that high-grade Erlang applications are still working:
Name Tested
couchdb No
ejabberd No
mochiweb No
rabbitmq-server No
riak No
wings No
  • Collect feedback from volunteers regarding their experience with this Erlang/OTP version

User Experience

Fedora Erlang users will get more robust Erlang configurations. Less issues, more detailed logs.

Dependencies

The following packages must be rebuilt:

Name Rebuilt
couchdb No
ejabberd No
erlang-basho_metrics No
erlang-bitcask No
erlang-cl No
erlang-ebloom No
erlang-eleveldb No
erlang-emmap No
erlang-erlsyslog No
erlang-esasl No
erlang-esdl No
erlang-js No
erlang-skerl No
erlang-snappy No
wings No

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? product <-- Applicable for Changes that blocks specific product release/Fedora.next -->

Documentation

N/A (not a System Wide Change)

Release Notes