Opened 8 years ago

Closed 7 years ago

Last modified 7 years ago

#4092 closed discussion (fixed)

using ZeroMQ messaging instead of CORBA/omniORB?

Reported by: Pierre Haessig <pierre.haessig@…> Owned by: somebody
Priority: normal Milestone: 1.12.0
Component: *unknown* Version:
Keywords: Cc:

Description

Hi,

I'm bringing here a question (rather than an issue) that I initially posted at https://github.com/OpenModelica/OMPython/issues/17 but I guess that the main OM Trac is more appropriate.

I was wondering if, in the mid term, there was the idea to *replace the communication channel between the OMC and Python* (and I understand this is in fact the communication between every OM components).

I find the present choice (CORBA/omniORB) to be slightly complicated (1). To be clear, I have zero knowledge of these messaging systems. Only, I know people at IPython were very happy with ZMQ (which they started using when they split the kernel and the front end to make the Notebook interface). Also, Googling for "Corba ZMQ", I found a link to a 2011 study by people from CERN (2). Of course the use case is different, but I just read through the paper and the story is they were looking for a replacement for their existing CORBA infrastructure. ZMQ appeared their best options (many criterions: simplicity, features...).

Now this is just an empty idea since I don't plan to start working on this, but maybe it is a useful suggestion?

best,
Pierre

(1)I mean simple practical issues, especially for OMPython: no pip install, no conda install. For Anaconda, I've found a third party built package at https://anaconda.org/mutirri/omniorb but after installation, I still get an ImportError: No module named omniORB...
(2) http://zeromq.wdfiles.com/local--files/intro%3Aread-the-manual/Middleware%20Trends%20and%20Market%20Leaders%202011.pdf

Change History (8)

comment:1 Changed 8 years ago by rfranke

Thank you for the hint. CORBA is really ancient. It appears worthwhile to investigate alternatives that emerged meanwhile.

comment:2 Changed 8 years ago by adrpo

I think it would be best to just use the compiler dll directly from python as we do it in OMEdit.
Then there is no need for IPC (inter process communication) of any kind.

comment:3 Changed 8 years ago by Christoph <buchner@…>

That would presumably also help with transitioning OMPython to Python 3 compatibility at some point (hopefully soon).

comment:4 Changed 8 years ago by sjoelund.se

@adrpo: It is a bit hard to use OMC as a DLL from within Python since we use macros and need to set stack base, etc. We'd probably need a pure C interface for:

  1. Init of an OMC object (created as a separate thread in order to get a stack base, init GC, etc)
  2. Call exported API functions (for example just executing commands like in CORBA), taking the initialized OMC object
  3. Freeing the OMC object

comment:5 Changed 8 years ago by Christoph <buchner@…>

Also probably relevant for this: issue #3705

comment:6 Changed 8 years ago by leo.gall@…

I'd like to support this request. We also have trouble installing CORBA/omniORB on some Windows PCs.

comment:7 Changed 7 years ago by casella

  • Resolution set to fixed
  • Status changed from new to closed

This is implemented in release 1.12.0, see

https://github.com/OpenModelica/OMPython/pull/23

comment:8 Changed 7 years ago by sjoelund.se

  • Milestone changed from Future to 1.12.0
Note: See TracTickets for help on using tickets.