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 that.
* 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.

Reply via email to