﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
5726	Categorize open-source libraries in OpenModelica for different uses	Francesco Casella	Francesco Casella	"During the Board meeting of 2 Dec 2019, we decided to classify the available open-source Modelica libraries (see e.g. [https://github.com/modelica-3rdparty/]) into four categories:

1. Production-grade libraries, full or nearly full OMC support
2. Production-grade libraries, partial OMC support, commitment to get to full support ASAP
3. Libraries under development or lacking proper maintenance (a.k.a. ""experimental"")
4. Obsolete or otherwise unsupported libraries

The first category includes all production-grade libraries which are actively maintained by their authors, which are responsive to feedback from OSMC in case of issues such as use of illegal Modelica code that hampers the compilation by OMC, and where 100% or nearly 100% available library tests pass successfully.

The second category is the same, except that the ratio of tests passing with OMC is still not close to 100%, but we have a commitment to eventually get there, and we state it explicitly.

With the goal of promoting OMC, we should publish reports on the web that only include models from those two sets, declaring explicitly that we are working to improve the coverage in the case of set no. 2.

The goal of OSMC regarding these two categories is to get to 100% green lights everywhere.

The third category is interesting for developers, which may find it helpful to get continuous testing of their libraries with OpenModelica, and also interesting for the Consortium to promote and increase the use of OMC among new library developers. For example, it could include {{{master/HEAD}}} revision of libraries whose latest release(s) belong to sets 1 and 2, or libraries under early development such as [https://libraries.openmodelica.org/branches/newInst/OpenHPL/OpenHPL.html OpenHPL]. 

It also provides useful information for people who may consider picking up the development of open-source libraries whose development has been discontinued by their original authors, e.g. [https://libraries.openmodelica.org/branches/newInst/ElectricalEnergyStorage/ElectricalEnergyStorage.html ElectricalEnergyStorage].

However, any failure in this category is not OSMC's responsibility, so we should prepare separate web reports for these libraries, whose purpose is to help their development, ''not to judge on the quality of implementation of OMC''.

The fourth and last category includes libraries that are obsolete, because they have been superseded by more recent ones. For example, the {{{Annex60}}} library is no longer developed, because it has been ported and merged into the {{{IBPSA}}} library, so it makes no sense to still refer to it, paricularly if there are any broken models. I would also consider very old versions of production-grade libraries in this set (e.g. Buildings prior to 5.1.0), since they most likely contain bugs that may lower the test passing ratio, but will never be fixed because the libraries have been superseded by more recent versions.

It also includes libraries that we may decide not to support because they are not conforming to the Modelica standard and their authors are not responding to pull requests or other kind of request for proper fixes.

This classification will provide the basis for web reports. It also provides the basis for the choice of libraries that we ship with the OMC installer, and that will be managed in the future by the Modelica package manager, which will only belong to sets 1. and 2., since 3. is best managed directly using a GIT tool, and 4. should never been considered in the first place.

We should probably provide some feedback in the installation procedure regarding the level of support, by linking each library of categories 1. and 2. to the corresponding web reports.

For some libraries, it seems that the authors have continued the development for a while without having a proper release. If the master version is clearly better than the latest released version, we are provisionally including that as the reference one; in the meantime, we are contacting all authors to make sure that the latest improvements are included in an official release.

I am tentatively scheduling this task for 1.15.0. 

== 1. Production-grade libraries, full OMC support
||= Library =||= Version =||= Report =||= URL =||
||FastBuildings || latest ||[https://libraries.openmodelica.org/branches/newInst/FastBuildings/FastBuildings.html Report] || https://github.com/open-ideas/FastBuildings/releases/tag/master || 
||HanserModelica || 1.1.0 ||[https://libraries.openmodelica.org/branches/newInst/HanserModelica/HanserModelica.html Report] ||https://github.com/christiankral/HanserModelica/releases/tag/v1.1.0 ||
||KeyWordIO || 0.9.0 ||[https://libraries.openmodelica.org/branches/newInst/KeyWordIO/KeyWordIO.html Report]|| https://github.com/christiankral/KeyWordIO ||
||MessagePack|| latest ||[https://libraries.openmodelica.org/branches/newInst/MessagePack/MessagePack.html Report]|| https://github.com/modelica-3rdparty/msgpack-modelica ||
||ModelicaByExample || 0.6.0 ||[https://libraries.openmodelica.org/branches/newInst/ModelicaByExample/ModelicaByExample.html Report]|| https://github.com/mtiller/ModelicaBook/tree/master/ModelicaByExample ||
||Modelica || 3.2.2 ||[https://libraries.openmodelica.org/branches/newInst/Modelica_3.2.2/Modelica_3.2.2.html Report]|| https://github.com/modelica/ModelicaStandardLibrary/releases/tag/v3.2.2 ||
||Modelica || 3.2.3 ||[https://libraries.openmodelica.org/branches/newInst/Modelica_3.2.3/Modelica_3.2.3.html Report]|| https://github.com/modelica/ModelicaStandardLibrary/releases/tag/v3.2.3%2Bbuild.3 ||
||OpenIPSL || 1.5.0 ||[https://libraries.openmodelica.org/branches/newInst/OpenIPSL/OpenIPSL.html Report]|| https://github.com/OpenIPSL/OpenIPSL/releases/tag/v1.5.0 ||
||PNLib || 2.2. ||[https://libraries.openmodelica.org/branches/newInst/PNlib/PNlib.html Report] || https://github.com/AMIT-FHBielefeld/PNlib/releases/tag/v2.2 ||
||PlanarMechanics || 1.4.1 ||[https://libraries.openmodelica.org/branches/newInst/PlanarMechanics/PlanarMechanics.html Report]|| https://github.com/dzimmer/PlanarMechanics/releases/tag/v1.4.1 ||
|| ScalableTestSuite || 1.11.5 ||[https://libraries.openmodelica.org/branches/newInst/ScalableTestSuite_noopt/ScalableTestSuite_noopt.html Report]|| https://github.com/casella/ScalableTestSuite/releases/tag/v1.11.5 ||
|| SolarTherm || master ||[https://libraries.openmodelica.org/branches/newInst/SolarTherm/SolarTherm.html Report]|| https://github.com/SolarTherm/SolarTherm ||
|| SystemDynamics || 2.1.1 ||[https://libraries.openmodelica.org/branches/newInst/SystemDynamics/SystemDynamics.html Report]|| https://github.com/modelica-3rdparty/SystemDynamics/releases/tag/v2.1.1 ||
|| VehicleInterfaces || 1.2.5 ||[https://libraries.openmodelica.org/branches/newInst/VehicleInterfaces/VehicleInterfaces.html Report]|| https://github.com/modelica/VehicleInterfaces/releases/tag/v1.2.5 ||
|| iPSL || 1.1.1 ||[https://libraries.openmodelica.org/branches/newInst/iPSL/iPSL.html Report]|| https://github.com/itesla/ipsl/releases/tag/v1.1.1 || 

== 2. Production-grade libraries, partial OMC support
||= Library =||= Version =||= URL =||
|| AdvancedNoise || 1.0.1-rc.1 || https://github.com/DLR-SR/AdvancedNoise/releases/tag/v1.0.1-rc1 || 
|| BuildSysPro || 3.3.0 || https://github.com/EDF-TREE/BuildSysPro/releases/tag/v3.3.0 ||
|| BuildingSystems || TBD || TBD ||
|| Buildings || 5.1.0 || https://github.com/lbl-srg/modelica-buildings/releases/tag/v5.1.0 ||
|| Buildings || 6.0.0 || https://github.com/lbl-srg/modelica-buildings/releases/tag/v6.0.0 ||
|| Chemical || 1.2.0-alpha || https://github.com/MarekMatejak/Chemical ||
||ExternData || 2.5.0 || https://github.com/modelica-3rdparty/ExternData/releases/tag/v2.5.0 ||
||HelmholtzMedia || 0.9.8 || https://github.com/thorade/HelmholtzMedia/releases/tag/v0.9.8 ||
||IBPSA || 3.0.0 || https://github.com/ibpsa/modelica-ibpsa/releases/tag/v3.0.0 ||
||IDEAS || 2.1.0 || https://github.com/open-ideas/IDEAS/releases/tag/v2.1.0 || 
||IndustrialControlSystems || 1.1.0 || https://github.com/looms-polimi/IndustrialControlSystems/releases/tag/v1.1.0 ||
||LibRAS || latest || https://github.com/FishSim/LibRAS/commits/master ||
||ModelicaTestOverdetermined || 3.2.2 || https://github.com/modelica/ModelicaStandardLibrary/blob/maint/3.2.2/ModelicaTestOverdetermined.mo ||
||ModelicaTestOverdetermined || 3.2.3 || https://github.com/modelica/ModelicaStandardLibrary/blob/maint/3.2.3/ModelicaTestOverdetermined.mo ||
|| ModelicaTest || 3.2.2 || https://github.com/modelica/ModelicaStandardLibrary/tree/maint/3.2.2/ModelicaTest ||
|| ModelicaTest || 3.2.3 || https://github.com/modelica/ModelicaStandardLibrary/tree/maint/3.2.3/ModelicaTest ||
|| Modelica_DeviceDrivers || 1.7.1 || https://github.com/modelica-3rdparty/Modelica_DeviceDrivers/releases/tag/v1.7.1
|| Modelica_LinearSystems2 || latest || https://github.com/modelica/Modelica_LinearSystems2/releases/tag/v2.3.5-rc.1 ||
|| Modelica_Synchronous || 0.93.0 || https://github.com/modelica/Modelica_Synchronous ||
||OpenIPSL || master ||[https://libraries.openmodelica.org/branches/newInst/OpenIPSL/OpenIPSL.html Report]|| https://github.com/OpenIPSL/OpenIPSL ||
|| PhotoVoltaics || 1.4.1 || https://github.com/christiankral/PhotoVoltaics/releases/tag/v1.4.1 ||
|| PhotoVoltaics_TGM || 1.4.1 || https://github.com/christiankral/PhotoVoltaics/releases/tag/v1.4.1 ||
|| Physiolibrary || 2.3.1 || https://github.com/MarekMatejak/Physiolibrary/releases/tag/v2.3.1 ||
|| Physiomodel || 1.0.0 || https://github.com/physiology/Physiomodel/releases/tag/v1.0.0 ||
|| PowerSystems || 1.0.0 || https://github.com/modelica-3rdparty/PowerSystems/releases/tag/v1.0.0 ||
|| TILMedia || 1.4.1 (master) || https://github.com/ClaRaLibrary/TILMedia ||
|| ThermalSeparation || master (no release) || https://github.com/modelica-3rdparty/ThermalSeparation ||
|| ThermoPower || master (3.1 with fixes) || https://github.com/casella/ThermoPower ||
|| ThermoSysPro || 3.2 || no link ||

== 3. Development, experimental, no longer maintained libraries
||= Library =||= Version =||= URL =||
|| Buildings || latest || https://github.com/lbl-srg/modelica-buildings ||
||ExternData || latest || https://github.com/modelica-3rdparty/ExternData ||
|| IBPSA || latest || https://github.com/ibpsa/modelica-ibpsa ||
|| IDEAS || master || https://github.com/open-ideas/IDEAS
|| ModelicaTest || latest ||https://github.com/modelica/ModelicaStandardLibrary/tree/master/ModelicaTest ||
|| Modelica_DeviceDrivers || latest || https://github.com/modelica-3rdparty/Modelica_DeviceDrivers
|| Modelica || master || https://github.com/modelica/ModelicaStandardLibrary ||
|| OpenHPL || master || https://github.com/simulatino/OpenHPL ||
|| PhotoVoltaics || master ||https://github.com/christiankral/PhotoVoltaics ||
|| PhotoVoltaics_TGM || master ||https://github.com/christiankral/PhotoVoltaics ||
|| Physiolibrary || master || https://github.com/MarekMatejak/Physiolibrary/ ||
|| Physiomodel || master || https://github.com/physiology/Physiomodel
|| PlanarMechanics || master || https://github.com/dzimmer/PlanarMechanics ||
|| PowerSystems || master || https://github.com/modelica-3rdparty/PowerSystems ||


== 4. Obsolete or discontinued
||= Library =||= Version =||= Report =||= URL =||= Reason =||
||ConPNLib || master || https://github.com/lochel/ConPNlib/commits/master || Superseded by PNLib ||
|| ElectricalEnergyStorage || latest || https://github.com/modelica-3rdparty/ElectricalEnergyStorage || Discontinued by the authors ||
|| FCSys || 0.2.6|| https://kdavies4.github.io/FCSys/ Development || Currently obsolete (old MSL dependency), development could resume in 2020 ||
|| IdealizedContact || N/A || https://github.com/tbeu/IdealizedContact || No longer maintained ||
|| ModelicaTest || 3.2.1 || https://github.com/modelica/ModelicaStandardLibrary/tree/maint/3.2.1/ModelicaTest || Superseded by MSL 3.2.2, no longer maintained ||
|| Modelica_Noise || 1.0 Beta 1 || https://github.com/DLR-SR/Noise || Obsolete, merged in to MSL 3.2.2 ||
|| Modelica_StateGraph2 || 2.0.2 || https://github.com/HansOlsson/Modelica_StateGraph2 || Not fully Modelica compliant ||
|| ObjectStab || 1.0.3 || https://github.com/modelica-3rdparty/ObjectStab || Marked as discontinued on GitHub ||
|| OpenHydraulics || master || https://github.com/cparedis/OpenHydraulics/commits/master || No longer maintained by the authors ||
|| SiemensPower || master || ? || No longer maintained by the authors ||


"	enhancement	closed	critical	1.19.0	Third-Party Libraries		fixed		Dietmar Winkler
