celix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michael de Lang <o...@apache.org>
Subject Positioning Celix against CppMicroservices, a C++ OSGi implementation
Date Sat, 15 Aug 2020 20:41:26 GMT
It seems we've (or at least I have) missed the already existing CppMicroservices (https://github.com/CppMicroServices/CppMicroServices)
framework, which aims to implement OSGi for C++14. Given our current discussions/efforts into
providing C++ API for Celix, we have a couple of critical questions we need to ask ourselves.

I've tried to assess the current situation, feel free to let me know if I made omissions:
* Celix currently provides a partial implementation of OSGi, of which some parts are not (yet?)
implemented in CppMicroservices (pubsub, RSA) and some parts are not in OSGi at all (etcdlib,
iovec implementation). 
* Both Celix and CppMicroservices both have one big commercial user (AFAIK): Celix has Thales
and CppMicroservices has German Cancer Research Center (DKFZ)
* Both Celix and CppMicroservices have similar order of magnitude of activities outside of
the main contributors (watches/stars/forks)
* There are currently two approaches at providing C++-esque support for what Celix stands
for. The experimental C++ API for Celix as can be seen in Pepijn's PR (https://github.com/apache/celix/pull/259)
and a more revolutionary approach where OSGi is only used as an inspiration and adds things
like a clear threading model; Cppelix (https://github.com/volt-software/cppelix).

The questions we must then ask ourselves are as follows:

* Do we believe a C implementation of the OSGi specification is a worthwhile addition alongside
other implementations such as CppMicroservices?
* Do we think it is worthwhile to offer a C++ API around Celix if other implementations offer
a native C++ API?

If we honestly believe that providing a C++ API is the way to go, perhaps we should consider
the following two options:
* Joining forces/forking and implementing Celix functionality like the stateless pubsub/RSA
components in CppMicroservices
* Creating an evolution of the OSGi spec, such as Cppelix is an attempt at, and focusing on
* Perhaps a third option that I haven't thought of yet

Don't get me wrong, Celix is a product with lots of functionality in it that isn't necessarily
in the OSGi and is useful. However, I truly think that the reality is that there are serious
attempts in the world around us in making similar products. We would do well to formulate
a strategy with which we can respond to these circumstances.

View raw message