Hi Sanjiva, Sorry for the confusion, the CXF project is named as dependency to test the remote services in combination with other java based OSGi implementations. The C part should be in C, and Axis2/C seems a good candidate. But at the moment we are also looking at other, lighter, protocols to use.
For example hessian [1] (not available in C), or protocol buffers (from google). Both have limitations, as said, hessian is not available in C. And while the protobuf project itself does not provide a C implementation, there is a separate project [3]. Using any other protocol would also imply that it has to be implemented in Java to be able to test interoperability. This is where the protobuf project has a limitation. Remote services should be usable for any given interface at runtime. In Java this is solved using reflection, and for example, the Apache CXF JAX-WS implementation. Protobuf has a java implementation, but no runtime support. It relies on .proto files to define and generate the messages and services. I hope this makes things a little clearer, and if someone has other ideas/possibilities, I am really interested in them. [1] http://hessian.caucho.com/ [2] http://code.google.com/p/protobuf/ [3] http://code.google.com/p/protobuf-c/ On Mon, Sep 27, 2010 at 4:51 PM, Sanjiva Weerawarana <sanj...@opensource.lk>wrote: > Alexander, I'm confused about the remote API aspect- since Celix is in C > why > would you implement the remote API in Java with CXF? Why wouldn't you use > Axis2/C? > > Sanjiva. > > On Fri, Sep 24, 2010 at 8:15 PM, Alexander Broekhuis > <a.broekh...@gmail.com>wrote: > > > Hello, > > > > I would like to announce the following proposal as a new incubator > > project. > > Abstract > > > > Celix is a OSGi like implementation in C with a distinct focus on > > interoperability between Java-OSGi and Celix. > > Proposal > > > > Celix will be an implementation of the OSGi specification adapted to C. > It > > will follow the API as close as possible, but since the OSGi > specification > > is written primarily for Java, there will be differences (Java is OO, C > is > > procedural). > > An important aspect of the implementation is interoperability between > > Java-OSGi and Celix. This interoperability is achieved by porting and > > implementing the Remote Services specification in Celix. These Services > > will > > be made available in separate bundles. > > Background > > > > In embedded/realtime situations software is mostly implemented in C. In > > situations where interoperability and dynamics are important, a good > > architecture and design principle is needed. OSGi provides such > middleware > > for Java based systems. > > To be able to have such dynamic environment implemented in C, a OSGi like > > implementation is needed. Besides a dynamic environment, OSGi also makes > it > > easier to reuse parts of the system, reducing time needed to implement > and > > maintain software. > > The implementation started with the basics to make it possible to load > > libraries dynamically, and steadily grown towards an implementation where > > large parts of the OSGi framework API is implemented. > > The implementation of Celix is heavily based on Apache Felix (where > > appropriate it is even a direct port of the Apache Felix code (Java) to > C). > > Since distributed systems are used more and more in services based > > environments, a scalable and transparent solution is needed for remote > > communication. The OSGi specification describes remote services, this > > specification will be a part of the first release. > > Remote services also make it possible to communicate between Java-OSGi > and > > Celix. To achieve this interoperability, both Java and C implementations > of > > remote services for a common protocol are needed. For local services JNI > > can > > be used, for remote services SOAP and/or REST can be used. In the latter > > case, Apache CXF can be used to implement the Remote Services API in > Java. > > Rationale > > > > In embedded/realtime/distributed environments there is a need to be able > to > > create dynamic and maintainable software. Currently there are no off the > > shelf middleware/frameworks for this. Celix tries to provide such a > > framework. > > The choice to base the implementation on the OSGi specification makes it > > possible for a developer to use Celix as well as Java OSGi implementation > > without much differences and without a steep learning curve. > > The community and user driven platform created by Apache provides a great > > base for middleware such as Celix. Also the fact that Celix is based on > > Apache Felix, and Apache Felix is hosted by Apache, makes it a logical > > choice to have Apache as home for this project. > > Initial Goals > > > > - Provide a basic implementation of the OSGi Framework API > > - Provide an implementation of Remote Services to be able to create > > distributed systems (and Celix <-> OSGi interoperability). > > - Build/Expand a community using/developing Celix > > - OSGi like implementation in C > > - Provide a module/component based software solution for embedded > > Platforms > > - RealTime software > > - Distributed systems > > - Provide Services based solution > > - Investigate if Apache Portable Runtime can be used for platform > > abstraction > > > > Current Status Meritocracy > > > > Celix was created by Alexander Broekhuis. While he is no active > > committer/participant of Apache projects, he has used Open Source and is > > well known with it and how a meritocracy works. Currently there are > several > > other possible committers. > > To be able to create and maintain complex middleware (such as Celix) a > good > > structure is needed. A meritocracy following the rules and traditions of > > the > > ASF is a good choice for Celix. > > Community > > > > Currently the Celix community exists out of the core developers, and the > > users integration Celix in an end-user product (all from Thales). > > Core Developers > > > > - Alexander Broekhuis (Luminis) > > - Jasper Gielen (Humiq) > > - Herman ten Brugge (Thales) > > > > Alignment > > > > Celix is heavily based on Apache Felix. Since Apache Felix is an Apache > > project it makes sense to develop Celix under Apache. > > Also, Celix is a complex and large middleware project, it makes sense to > > have a supporting/developing community. Apache provides a solid base, > with > > established processes and rules, to create such community. > > Known Risks Orphaned Products > > > > Celix will be used by Thales, and so there is no direct risk for this > > project to be orphaned. > > Inexperience with Open Source > > > > The committers have experience using and/or working on open source > > projects. > > The Apache process is new, but most likely not a problem. > > Homogeneous Developers > > > > Currently all committers are from the Netherlands, but they do work for > > different organizations. > > Reliance on Salaried Developers > > > > All committers working on Celix (currently) are paid developers. The > > expectation is that those developers will also start working on the > project > > in their spare time. > > Relationships with Other Apache Products > > > > - Celix is based on Apache Felix > > - Using Apache ACE it probably is possible to provision Celix bundles > > - For remote services Apache CXF can be used (either SOAP or REST) > > - Possibly Apache ZooKeeper can be used for remote service discovery > > (Apache ZooKeeper vs SLP) > > - Possibly Apache Portable Runtime for platform abstraction > > > > An Excessive Fascination with the Apache Brand > > > > Celix itself will hopefully have benefits from Apache, in terms of > > attracting a community and establishing a solid group of developers, but > > also the relation with Apache Felix. These are the main reasons for us to > > send this proposal. > > We think that a good community is needed to build and maintain large > > middleware projects, such as Celix. > > However, even if Celix would not be accepted, development will continue. > As > > such, there is no need to, or reason to, "abuse" the Apache Brand. > > Documentation > > > > Currently all documentation and information is stored on a private > > corporate > > wiki.. This has to be moved to a public place. (is this part of the > process > > after acceptance, or should this be placed on (eg) the luminis open > source > > server?) > > Initial Source > > > > Development of Celix started in the summer of 2010. The source currently > is > > located on a private corporate SVN repository. > > All the source is available for Open Sourcing and can be found at > > http://opensource.luminis.net/wiki/display/SITE/Celix > > Source and Intellectual Property Submission Plan > > > > Celix is currently developed solely by Luminis employees. All source will > > be > > donated to Apache. > > External Dependencies > > > > - MiniZip source , zlib license > > > > This source can be included, according to > > http://www.apache.org/legal/3party.html > > Required Resources Mailing Lists > > > > - cosgi-dev > > - cosgi-private > > > > Subversion Directory > > > > https://svn.apache.org/repos/asf/incubator/celix< > > http://svn.apache.org/repos/asf/incubator/cosgi> > > Issue Tracking > > > > JIRA Celix > > Other Resources > > > > - CMake > > > > Celix uses Cmake as build environment. CMake generates Make files for > > building, bundling and deploying Celix. > > This build environment can also be used by project using Celix, it > provides > > simple methods for creating and deploying bundles to a named target. > > > > - Confluence Wiki > > > > To be able to provide help, documentation, faq etc, a wiki is needed. > > Initial Committers > > > > Alexander Broekhuis a.broekh...@gmail.com > > Sponsors Champion > > > > Marcel Offermans > > Nominated Mentors Sponsoring Entity > > > > Celix is a new project and proposed is to release to code under the > > sponsorship of the Incubator. > > > > -- > > Met vriendelijke groet, > > > > Alexander Broekhuis > > > > > > -- > Sanjiva Weerawarana, Ph.D. > Founder, Director & Chief Scientist; Lanka Software Foundation; > http://www.opensource.lk/ > Founder, Chairman & CEO; WSO2; http://wso2.com/ > Founder & Director; Thinkcube Systems; http://www.thinkcube.com/ > Member; Apache Software Foundation; http://www.apache.org/ > Member; Sahana Software Foundation; http://www.sahanafoundation.org/ > Visiting Lecturer; University of Moratuwa; http://www.cse.mrt.ac.lk/ > > Blog: http://sanjiva.weerawarana.org/ > -- Met vriendelijke groet, Alexander Broekhuis