You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@celix.apache.org by Sascha Zelzer <s....@dkfz-heidelberg.de> on 2013/06/12 23:10:25 UTC
Re: [Native-OSGi] Progress update
Hi,
I just wanted to confirm that I think moving forward with the Celix
project and extending it to support C++ is an important step.
To get started, we should probably discuss the directory layout of the
Celix code repository. With respect to a (hypothetical) C/C++ OSGi spec,
we could first try make the distinction between interfaces and
implementation apparent at the directory level. A first (incomplete)
shot of mine trying to cope with these new requirements looks like this:
cmake
...
framework/ <-- current Celix C implementation
framework++/ <-- new Celix C++ stuff
|---- wrapped/ <-- C++ implementation using the existing C impl.
L---- native/ <-- independent C++ implementation (for experimentation)
...
osgi/
|---- framework/
| |---- include/
| | L---- osgi/
| | |---- BundleContext.hxx <-- C++ interface
| | L---- bundle_context.h <-- C interface
| L---- src/
|---- cm/
| |---- include/
| | L---- osgi/
. | L---- cm/
. | |---- ConfigurationAdmin.hxx
. | L---- configuration_admin.h
- L---- src/
I tried to just add stuff on top of the existing repository to keep the
impact low. With the second-level dirs, we could also add more
sub-directories by e.g. having "c" and "cpp" folders below
osgi/framework/ , but I thought trying to keep the hierarchy from
getting too deep is better. We would still have to figure out how C and
C++ implementations of service specifications could be marked as such
and distinguished from each other (as long as these implementations are
not contained in their own repository).
I would be more than happy to contribute the work done in the Native
OSGi directory so far (especially the C++ interfaces [1]).
Looking forward to the discussions!
Thanks,
Sascha
[1]
https://github.com/abroekhuis/NativeOSGi/tree/master/src/api/cpp/include/osgi
On 05/22/2013 09:17 AM, Alexander Broekhuis wrote:
> Hi all,
>
> Quite some time ago there was already something mentioned about Native-OSGi
> [1]. To recap: Native-OSGi is an effort to create a common specification
> for OSGi in C and C++. This effort was started by the CTK Plugin Framework,
> nOSGi and Apache Celix and although it has been rather quiet, there has
> been a lot of progress.
>
> This progress is not as much on the technical front, but more on the
> procedural front. During our initial talks we were asked if it would be
> worthwhile to write the Native-OSGi specification as an OSGi Alliance RFC.
> For us this meant a big boost in confidence wrt the specification. So of
> course we said yes to this!
>
> So in the past period we have been working on a RFP which is the first step
> towards writing the RFC for Native-OSGi. And now about a week ago this RFP
> has been published for the general public to read, discuss and comment on
> [2].
>
> For this work we would like to use Celix (and the Celix project) as home
> for, and as, the reference implementation. While Celix is writtin in C,
> Native-OSGi also specifies a C++ implementation, as such we do like to
> extend Celix to also support C++, but also like to start some discussion
> wrt a implementation in C++.
>
> So I would like to invite everyone to read and comment to the RFP on [2],
> but also would like to hear your comments regarding Celix and Native-OSGi
> and as Reference implementation as a reply to this mail.
>
> Thanks!
>
> [1]: http://incubator.markmail.org/thread/7rqtyp2so2duapfy
> [2]: https://www.osgi.org/bugzilla/show_bug.cgi?id=165
>
Re: [Native-OSGi] Progress update
Posted by Alexander Broekhuis <a....@gmail.com>.
Hi,
2013/6/12 Sascha Zelzer <s....@dkfz-heidelberg.de>
> Hi,
>
> I just wanted to confirm that I think moving forward with the Celix
> project and extending it to support C++ is an important step.
>
Great to hear this!
>
> To get started, we should probably discuss the directory layout of the
> Celix code repository. With respect to a (hypothetical) C/C++ OSGi spec, we
> could first try make the distinction between interfaces and implementation
> apparent at the directory level. A first (incomplete) shot of mine trying
> to cope with these new requirements looks like this:
>
I'd like to take some smaller steps in this, and start with a "new"
directory for the Native-OSGi compliant implementation. Some reasons are:
* Celix relies on APR all over the place, also on the API level. This was
an explicit choice when we made it. Moving to Native-OSGi breaks the
current Celix API.
* We have a (small) userbase using Celix, I would like to keep the current
codebase supported for them, see above point.
* Creating a new subproject gives us the opportunity to work on it and
breaking stuff, without to much impact on the current Celix source.
>
> cmake
> ...
> framework/ <-- current Celix C implementation
> framework++/ <-- new Celix C++ stuff
> |---- wrapped/ <-- C++ implementation using the existing C impl.
> L---- native/ <-- independent C++ implementation (for experimentation)
> ...
> osgi/
> |---- framework/
> | |---- include/
> | | L---- osgi/
> | | |---- BundleContext.hxx <-- C++ interface
> | | L---- bundle_context.h <-- C interface
> | L---- src/
> |---- cm/
> | |---- include/
> | | L---- osgi/
> . | L---- cm/
> . | |---- ConfigurationAdmin.hxx
> . | L---- configuration_admin.h
> - L---- src/
>
This layout looks good, but I'd like to see is to make "framework" the new
Celix C implementation which is Native-OSGi compliant.
>
>
> I tried to just add stuff on top of the existing repository to keep the
> impact low. With the second-level dirs, we could also add more
> sub-directories by e.g. having "c" and "cpp" folders below osgi/framework/
> , but I thought trying to keep the hierarchy from getting too deep is
> better. We would still have to figure out how C and C++ implementations of
> service specifications could be marked as such and distinguished from each
> other (as long as these implementations are not contained in their own
> repository).
>
I'd like to follow the Celix directory layout a bit more and also use the
public and private directories. This gives a good sense as to what should
be exported and what not (wrt osgi metadata, but also wrt including and
building). Also, I do think have a c and cpp folder makes sense. That way
it is immediately clear in what language(s) a module is implemented.
Also, in your example you have eg "osgi/cm/include/osgi/cm", is the second
"osgi/cm" needed? For C it is an unneeded duplication, and it doesn't add
any extra information. It is already placed in the "osgi/cm" directory, so
why use it again?
Has it to do with C++ namespaces? If so, I'd like to split the h and hxx
files into own directories, this keeps the namespace specific for C++ and
doesn't make C use paths to include files.
I prefer the language directory on a higher level, if a certain module
doesn't have a c (or cpp) implementation or doesn't have any private files,
the directory isn't needed. Adding it later on doesn't have an impact on
the already existing directories etc.
cm/
c/
private/
include/
src
public/
include/
configuration_admin.h
src
cpp/
private/
include/
src
public/
include/
osgi/cm/ConfigurationAdmin.hxx
src
>
> I would be more than happy to contribute the work done in the Native OSGi
> directory so far (especially the C++ interfaces [1]).
>
If the others agree, I'd like to use that contribution as a means to make
you committer ;). So yeah, I'd like to that code moved to Celix.
--
Met vriendelijke groet,
Alexander Broekhuis