Beremiz and its derivatives

Where the code came from, what is built on it, and what the licences ask in return

Beremiz has been developed in the open since 2007. Over that time its code has been picked up by vendors, by other open source projects and by commercial platforms. Some say so; some do not. This page records what is built on what, because it is not always obvious from the outside which tool you are actually using.

What Beremiz is, and is not

Beremiz is four things, under three licences:

component licence
IDE and Command Line Interface GPLv2 or later
Python reference runtime LGPLv2.1 or later
C++ runtime for smaller targets GPLv3 or later

MatIEC, the IEC 61131-3 compiler underneath, is not ours. It was started in 2002 by Mario de Sousa at the University of Porto, as the ST/IL compiler of the MatPLC project, and is licensed under the GPLv3. Beremiz maintains it at beremiz/matiec and contributes to it, but the credit for the compiler belongs there. Nearly every open source IEC 61131-3 tool in existence compiles through MatIEC, including the ones below.

OpenPLC

The OpenPLC Editor is a fork of the Beremiz IDE. This is not a matter of interpretation — its own repository states that it contains modified versions of the Beremiz and MatIEC projects, carried under their GPLv2 and GPLv3 licences. The fork updated the codebase to Python 3 and wxPython Phoenix, and retargeted it at the OpenPLC Runtime, which is a separate project and not Beremiz code.

If you are choosing between them, the practical difference is scope. OpenPLC Editor is an editor for one runtime. Beremiz ships the editor and the runtimes and the extension stack that connects a PLC program to the outside world: CANopen, Modbus, EtherCAT, OPC-UA, BACnet and MQTT, the SVGHMI web HMI toolkit, online debugging with variable forcing and plotting, and logic hot-swap on a running PLC. It targets everything from bare metal microcontrollers to Linux industrial PCs — see who is using it.

OTee

OTee sells a commercial “software-defined control” platform of virtual PLCs. Using a demo account on that platform and examining what it runs revealed that it uses MatIEC, and parts of the Beremiz Python codebase. We have found no mention of Beremiz or of MatIEC in OTee’s public material.

We record this because users deserve to know what they are running, and because both codebases are copyleft. Note that the GPL and LGPL are triggered by distribution, not by operating a service, so hosting alone carries no obligation to publish anything — this is a statement about provenance, not an accusation.

Vendor forks

Several hardware vendors maintain their own branches to support their products. These are visible, acknowledged, and in most cases contributed back:

  • Smarteh — their user manual documents functions specific to their branch.
  • INEUM — likewise for their user manual (Russian), with sources on GitHub.
  • Nucleron — the YAPLC platform is a set of Beremiz extensions plus a bare metal runtime, on GitHub.

These are exactly what the licences are for. Their products are on the use cases page.

What the licences ask

Short version, for anyone building on this code:

  • The IDE is GPLv2 or later, and MatIEC is GPLv3. Distribute something derived from either and you distribute the source of your changes too, under the same licence.
  • The Python runtime is LGPLv2.1 or later, deliberately. Your PLC program and the extensions you write for your own hardware are yours and stay yours; changes to the runtime itself are what has to come back.
  • None of these licences has a network clause. Running the code as a service creates no obligation to publish.

Attribution costs nothing and is the one thing the licences ask for unconditionally. If you are shipping a product built on Beremiz, saying so is not only good manners — it tells your users where to get support, and it tells the people maintaining the code that the work matters.

Building something on Beremiz? Tell us and we will list it.