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]

Erlang
Developer(s)Ericsson
Initial release1998
Stable release
27.1.2[1] Edit this on Wikidata / 17 October 2024; 38 days ago (17 October 2024)
Repository
Written inErlang
Operating systemCross-platform
PlatformCross-platform
TypeProgramming Framework (middleware, libraries, tools, database)
LicenseApache License 2.0 (since OTP 18.0) Erlang Public License 1.1 (earlier releases)
Websitewww.erlang.org Edit this on Wikidata

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

It contains:

History

edit

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 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

References

edit
  1. ^ "Release 27.1.2". 17 October 2024. Retrieved 17 October 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". erlang.org. 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". erlang.org.
  7. ^ "Erlang Programming Language". www.erlang.org.