corner
Home

· About erlang.org
· Downloads
· Links
· FAQs + mailing lists
· Enhancements
· Getting started
· Documentation
· Examples
· Mirrors

Erlang Books









For comments or questions about this site, contact webmaster@erlang.org
     

Erlang Enhancement Process - Quick Links

List of Erlang Enhancement Proposals (EEPs)

EEP 1 - Guidlines for writing an EEP

Subscribing to the EEP mailing list

Erlang Enhancement Process - what is an EEP?

There are always many discussion threads on erlang-questions and other places about enhancements, changes and extensions to the Erlang runtime system and the language.

As a way to document the various proposals and the decisions taken we now introduce the Erlang Enhancement Process inspired by the Python Enhancement Process.

Because Erlang is a programming language with a few million lines of running business critical code in the world, the development process must impose some rigidity and provide resistance against accepting premature changes. Users have Erlang code, linked in drivers written in C, and applications that embed Erlang, so it is important that the inconvenience of upgrading to new versions of Erlang is minimized. Language changes might also make the language more difficult for new users to learn.

To ensure that changes are carefully considered, significant changes must be described in an EEP, short for Erlang Enhancement Proposal. Each EEP should explain, among other things, why the change is needed, document how it should work, and give an overview how it should be implemented. The EEP author should listen to the community's feeback and edit the EEP as necessary.

Before submitting an EEP; read EEP 1 - EEP Purpose and Guidelines that thoroughly explains the purpose of EEPs, their life cycle, and prescribed format. The EEP editor will reject EEPs that do not follow the guidelines.

EEP editorial

There is a mailing list for EEPs eeps (at) erlang (dot) org, see mailing lists. Anyone interested can subscribe to the list. The EEP editor(s) are subscribed to the list, as well as the EEP repository administrator(s). New EEPs should be sent here, as well as EEP updates by EEP authors without repository write access. Note that as with all erlang.org mailing lists only subscribers are allowed to post to the list.

The Erlang Extension Proposal repository

The EEP sources are in the directory /eeps/trunk of a version controlled repository /projects at erlang.org. There are also the build tools plugins needed to build .html EEPs.

The repository server runs Subversion of version 1.5.5, for now, both a public read-only server svn://svn.erlang.org/projects/ (that is: svn over TCP port 3690), and a read/write server svn+ssh://svn@svn.erlang.org/projects/ (that is: svn through SSH over TCP port 22 user svn) using SSH public key authorization.

EEP authors and editors that need and get repository write access should generate a password protected RSA or DSA key pair of at least 1024 bits dedicated for this (EEP commit) purpose, and submit the public key to the EEP repository administrator. The EEP author then also will get a user ID unique within the Subversion repository.

Repository access

For read-only access to the repository through svn://svn.erlang.org/projects/ you need a subversion client. For Unix/Linux/Cygwin there is most certainly a distro package svn to install, or get it from the origin. For Windows there is e.g Tortoise SVN. Install and apply the svn URL above.

For read/write access you also need SSH. For Unix/Linux/Cygwin you most certainly already have it. For Windows use e.g PuTTY. Since Subversion sets up several connections for many repository operations and you should have a password protected private key, it is recommended to use a key server that keeps password unlocked keys in memory and saves you from frequently typing your key password. For Unix/Linux/Cygwin use ssh-agent. For Windows (in conjunction with PuTTY) use Pageant.

.html EEPs

To build .html EEPs you also need docutils 0.4 and thereby Python. The build tools in the repository plugs into docutils, so it does not work with any version. For Unix/Linux/Cygwin you just add the right package(s). For Windows, download and install Python, download docutils from the link above, unpack it with e.g 7-Zip and use docutils's installation script to install onto Python.

In the repository /projects directory /eeps/trunk run the script eep2html.py to build .html EEPs. This is done automatically at the repository server when a new version is committed, so if it does not build after commit, the erroneously committing EEP author will get chased by the repository administrator with a torch.

The processed .html EEPs are at: http://www.erlang.org/eeps/.

Unix/Linux/Cygwin mini-HowTo for read/write access

  • Install svn, python and docutils-0.4.


$ ssh-keygen -b 1024 -t dsa -f ~/.ssh/id_dsa_svn_erlang_org
$ # send .ssh/id_dsa_svn_erlang_org.pub to repository administrator
$ ssh-agent /bin/bash
$ ssh-add ~/.ssh/id_dsa_svn_erlang_org
$ svn checkout svn+ssh://svn@svn.erlang.org/projects/
$ svn list projects/eeps/trunk/
$ cd projects/eeps/trunk
$ ./eep2html.py

      

Some variations on that theme: ssh-agent can be started in parallell with the running shell instead of forking a new shell. Some distros start ssh-agent during the X startup process, ...

Windows mini-HowTo for read/write access

  • Install Tortoise SVN (Windows installer) , PuTTY (Windows installer) , Python (Windows installer) and Docutils 0.4 .
  • Generate an SSH key pair.
    • Start PuTTYgen and generate e.g a password protected 1024 bit SSH-2 DSA key pair.
    • Set the comment to something like "John Doe for svn.erlang.org".
    • Save the private key as e.g svn_erlang_org.pck.
    • Copy all of the content in the "Public key for pasting into OpenSSH authorized_keys file" frame, and send it to the repository administrator. The public key does not have to be saved, since it is contained in the private key, and can be retreived by loading the private key into PuTTYgen again.
    • Exit PuTTYgen
  • Create a PuTTY session.
    • Start PuTTY.
    • Set the session name to e.g svn_erlang_org.
    • Set the hostname to svn.erlang.org
    • Set the user to svn.
    • Set the key to your private key e.g svn_erlang_org.pck.
    • Save the session.
    • Exit PuTTY.
  • Start pageant. Add your key e.g svn_erlang_org.pck from the GUI.
  • In Tortoise SVN (right click on the empty area in a file explorer window for the pop-up menu and select "SVN Checkout") use the svn URL svn+ssh://svn_erlang_org/projects/ (i.e use the PuTTY session name as hostname).
  • In the folder eeps/trunk in the repository working copy, double-click on eep2html.py to build the .html EEPs.

Some variations on that theme: Pageant can be started from your autostart folder. You can edit its shortcut properties in the autostart folder to add the key filename to the start command line making it add the key when it starts. Pageant can also be started by double-clicking on your private key.

See also

 
Last updated   2010-11-29 13:15 UTC