Open Telecom Platform

From Wikipedia, the free encyclopedia
Initial release1998
Stable release
26.2.4[1] Edit this on Wikidata / 12 April 2024; 7 days ago (12 April 2024)
Written inErlang
Operating systemCross-platform
TypeProgramming Framework (middleware, libraries, tools, database)
LicenseApache License 2.0 (since OTP 18.0) Erlang Public License 1.1 (earlier releases) Edit this on Wikidata

OTP is a collection of useful middleware, libraries, and tools written in the Erlang programming language. It is an integral part of the open-source distribution of Erlang. The name OTP was originally an acronym for Open Telecom Platform, which was a branding attempt before Ericsson released Erlang/OTP as open source. However neither Erlang nor OTP is specific to telecom applications.[2][3]

The OTP distribution is supported and maintained by the OTP product unit at Ericsson, who released Erlang/OTP as open-source in the late 90s, to ensure its independence from a single vendor and to increase awareness of the language.

It contains:


Early days[edit]

Originally named Open System, it was started by Ericsson in late 1995 as a prototype system that aimed to select from a range of appropriate programming technologies and system components, including computers, languages, databases and management systems, to support a remote access system being developed at Ericsson.[5] In the same year, following the collapse of another gigantic C++-based project, Open System was ordered to provide support when it restarted from scratch using Erlang.[2] The result was the highly successful AXD301 system, a new ATM switch, announced in 1998. Open System system was later named Open Telecom Platform (OTP) when the first prototype was delivered in May 1996. OTP has also become a specific product unit within Ericsson since then, providing management, support and further development.

The early OTP system components in 1998:[5]

  • Distributed application management
  • SASL - error logging, release handling
  • OS resource monitoring
  • EVA - protocol independent event/alarm handling
  • Mnesia - real-time active data replication
  • SNMP - operations and maintenance interface
  • INETS - simple HTTP support

A key subsystem in OTP is the System Architecture Support Libraries (SASL), which gave a framework for writing applications. The early version of SASL provided:[5]

  • Start-up scripts
  • An application concept
  • Behaviours (design patterns)
  • Error handling
  • Debugging
  • High-level software upgrade in runtime without shutdown

The behaviours provide programmers with yet higher abstractions for efficient program design. The early version included:[5]

OTP Components[edit]

The OTP components can be divided into six categories:[6]

  • Basic Applications - Basic Erlang/OTP functionality.
    • Compiler A compiler for Erlang modules.
    • Kernel Functionality necessary to run Erlang/OTP itself.
    • SASL (System Architecture Support Libraries) A set of tools for code replacement and alarm handling etc.
    • Stdlib The standard library.
  • Operations and Maintenance - OAM both of the system developed by the user and of Erlang/OTP itself.
    • EVA A multi-featured event and alarm handler.
    • OS_Mon A monitor which allows inspection of the underlying operating system.
    • SNMP SNMP support including a MIB compiler and tools for creating SNMP agents.
  • Interface and Communication - Interoperability and protocols support.
    • Asn1 Support for ASN.1.
    • Comet A library that enables Erlang/OTP to call COM objects on windows
    • Crypto Cryptographical support
    • Erl_Interface Low level interface to C.
    • GS A graphics system used to write platform independent user interfaces.
    • Inets A set of services such as a web server and a FTP client.
    • Jinterface Low level interface to Java.
    • SSL Secure Socket Layer (SSL), interface to UNIX BSD sockets
  • Database Management.
    • QLC Query language support for Mnesia DBMS.
    • Mnesia A heavy duty real-time distributed database.
    • ODBC ODBC database interface.
  • CORBA services and IDL compiler.
    • cosEvent Orber OMG Event Service.
    • cosNotification Orber OMG Notification Service.
    • cosTime Orber OMG Timer and TimerEvent Services.
    • cosTransactions Orber OMG Transaction Service.
    • IC IDL compiler
    • Orber A CORBA object request broker.
  • Tools.
    • Appmon A utility used to view OTP applications.
    • Debugger For debugging and testing of Erlang programs.
    • Parsetools A set of parsing and lexical analysis tools.
    • Pman A process manager used to inspect the state of an Erlang/OTP system.
    • Runtime_Tools Tools to include in a production system.
    • Toolbar A tool bar simplifying access to the Erlang/OTP tools.
    • Tools A set of programming tools including a coverage analyzer etc.
    • TV An ETS and Mnesia graphical table visualizer.

Applications in OTP[edit]

As of OTP 18.2, the following applications are included in the Erlang/OTP distribution:[7]

  • asn1
  • common_test
  • compiler
  • cosEvent
  • cosEventDomain
  • cosFileTransfer
  • cosNotification
  • cosProperty
  • cosTime
  • cosTransactions
  • crypto
  • debugger
  • dialyzer
  • diameter
  • edoc
  • eldap
  • erl_docgen
  • erl_interface
  • erts
  • et
  • eunit
  • gs
  • hipe
  • ic
  • inets

See also[edit]


  1. ^ "Release 26.2.4". 12 April 2024. Retrieved 19 April 2024.
  2. ^ a b "M. Logan, E. Merritt, and R. Carlsson (2010) Erlang and OTP in Action" (PDF).
  3. ^ Erlang Solutions (1 March 2013). "OTP, the Middleware for Concurrent Distributed Scalable Architectures". Archived from the original on 2021-12-20 – via YouTube.
  4. ^ "Erlang -- Compilation and Code Loading". Retrieved 2017-12-21.
  5. ^ a b c d B. Däcker (2000) Concurrent Functional Programming for Telecommunications: A Case Study of Technology Introduction
  6. ^ "Erlang -- Introduction".
  7. ^ "Erlang Programming Language".