Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[ecf-dev] Re: Riena Creation Review 19th Dec 2007

Hi Christian,

Christian Campo wrote:
> Hi Scott,
>
> thanks for your +1 on Riena.
>
> I wasn't sure what to say to your post (thats why the answer took so long). I think we > all want the same thing, but have a sometimes slightly different view on things.
>
> Do Riena and ECF have a significant overlap ? I tend to say no, because ECF covers so many > aspect of communication like datashare, filetransfer, chat, voip, skype, jabber, discovery > (and many others that I am not aware of) which Riena has no equivalent and has no plans
> to create one (our "discovery" does not really count I believe).

I disagree strongly with your assertion of lack of overlap. Just because ECF has other areas of API focus does *not* mean that we are not fully committed to working on/improving/extending what we already have WRT remote services...which is a transport independent, remote OSGi services API...supporting both network transparent and non-transparent OSGi service remoting.

As I read the Riena charter and Nyota docs, this is very much overlapping with what Riena/Nyota are planning on doing. Having these efforts be independent (the path of least resistance for EF projects) would be, I think, a very bad thing for the community...because it will create confusion.

> Riena on the other hand is not only communication but also security, objecttransaction, > persistence, reporting, a whole new way to create client UIs. (and many other things)

I understand this. But I still don't see ECF remote services and Riena as fundamentally different...both are about inter-process communication at the OSGi services level and above.

>
> So the discussion is about Remote Services. There we have the two parts a) transparent remote > service and b) non-transparent remote services. Now we believe very much in a) while you believe > much more in b). (So I could even argue we have no overlap at all but I dont do that seriously)

I respectfully disagree. As we've already discussed in the riena newsgroup, ECF remote services supports *both* transparent and non-transparent remote services. The reason I have emphasized b in some discussions is because so few/none of the other OSGi remoting approaches even support non-transparent access to remote services (e.g. one-ways, futures, etc), which I believe is a weakness for those approaches (because of the issues with assuming network transparency aka the Note on Distributed Computing argument).

>
> But nevertheless Riena's communication component only does the transparent remote services part. > There is no non-transparent approach and no plan to create one. The reason is that we believe > that a component A should be able to call component B no matter whether its remote or local (maybe
> its both or its sometimes remote and sometimes local).

You may believe that, but I doubt the dev community that you would like to support uniformly agrees with you. There are many applications that imply/desire/would benefit from non-transparent remote access, and there are many architects and designers that are well aware of the issues involved with network transparent approaches.

>
> Now Riena created its own implementation previously called "Nyota" beginning of last year when > no other implementation existed that did implemented remote service the way we thought its right. > Some people had created remote services on the server in a transparent way like r-osgi at that time, > but had their own more or less proprietory way to then call that service on the client (i.e. r-osgi). > They didn't have a OSGi Service as proxy on the client, ECF also didn't have that so thats
> why we created a solution for ourselves.

The capability was there.  It just hasn't/wasn't being promoted.

>
> ECF has changed in the meantime and r-osgi is obviously becoming a part of ECF.

Yes. Jan Rellermeyer has already nearly completed an ECF provider based upon r-OSGi and has joined the ECF team as a committer. We will be including this work in the ECF distribution as soon as the IP process allows it (estimate: ECF 2.0.0 M5). Same goes for SLP provider of the discovery API...worked on by Markus Kuppe and Jan.

>
> So the next steps are to include security (authentication, authorization) in that picture: > - only allow service to be called when a valid user is logged in on the client

Our concept of IContainer does include the notion of JAAS authentication BTW. This is done at connect time (IContainer.connect) through the IConnectContext interface:

http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/core/security/IConnectContext.html

This interface exposes CallbackHandlers, which are used at connect time to authenticate. Note that the Callback (and other interfaces) are not from JAAS *yet*, but the intention is that they will eventually will be.

> - call the OSGi Service on the server with the Subject.doAsPrivileged

Yes. We do not do this now, but given that IDs are principals, and that a server implementation can create a Subject upon authentication/login (via JAAS), then such calls are indeed possible now with ECF providers for server impls.

> - transferring session ids

We do this now with the ECF ID.

> - accessing and maintaining permissions on client and on server and making them accessible in a > (again) transparent way, in other words so that you can find out if the current user has a permission > with the same API no matter whether you are on the client or on a server

Yes. Defining a Permissions store, changing the JVM default security Policy and defining Permissions interfaces are all things that we have simply not worked on, because ECF has been trying to maintain compatibility with as small an OSGi runtime as possible (CDC 1.0/Foundation 1.0) in the case of the ECF core/identity plugins and others.

But, now that the JAAS security framework is headed into Equinox (at CDC 1.1/Foundation 1.1 I believe) work with you in this area will be much easier.

>
> As your one plea for an open middleware API I am all for it to define a standard way how > remote services are published (on the server) and accessed on the client. OSGi is a good > starting point for services in general and if we can define a way how he can make them remote
> I am happy to work together with ECF.

That's great to hear Christian. We are going to try to work with the EE on doing reference impl work for the RFC (199 I think) for distributed services. Our efforts there will be focused on the ECF remote services API...not implementation/provider-specific work.

>
> Defining a technical dependency in Riena components in general to ECF components is nothing I really
> want.

I would urge you to reconsider...at least for the following:

ECF core plugins:  org.eclipse.ecf (68k), org.eclipse.ecf.identity (43k)
ECF remote services API:  org.eclipse.ecf.remoteservices (12k)
ECF discovery:  org.eclipse.ecf.discovery (22k)

These four plugins are *pure* API. No implementation at all. But they do define a basic, extensible APIs. They are also quite small in code size.

Note that the p2 work currently depends upon/requires the ECF core plugins, so the these will be in Ganymede/Equinox as of the Ganymede release. There is also some potential that the discovery API might be interesting to Equinox/runtime efforts as well (for discovering...e.g. update sites, p2 meta-data repositories, remote services, etc).

> ECF in my view (and thats were we have slightly different point of views) is a major player in > the communication area in the Eclipse ecosystem but for remote services its one of many
> possible implementation of a yet to be defined Remote Service Standard.

You are indeed correct...there is nothing (yet) approaching a 'standard' for remote services in OSGi. In my view, this is a good thing, as premature standardization is *not* a good thing. We are, however, interested in contributing to the standardization by promoting the ECF remote services API as a transport-independent, small, general, not-bound-only-to-network-transparent-solutions approach.

We have no commercial interest in promoting our own implementation (or anyone else's) as a standard...rather our only interest is in making remote services APIs available to developers that are

1) open
2) extensible
3) as small/simple/compact as possible
4) sufficient for a variety of distributed systems use cases (i.e. support both network-transparent and network-non-transparent remote access)

> I am sure also the OSGi EE group once they can come up with a standard will allow multiple > implementations for a Remote Service implementation. In my view that is totally unrelated to > the fact that such an implementation might offer multiple protocols underneath.

Although I have confidence that the OSGi EE will allow for multiple implementations, I suspect this will be a long process of standardization (years)...and there will of course also be multiple versions of the standard. We expect and hope to contribute to this standardization, by using the ECF remote services API to

1) point out and help define areas of importance that the RFP authors are not currently considering (e.g. non-transparent access to remote services, and programmatic remote service APIs...in addition to declarative approaches)
2) provide reference implementations of the contents of the RFP proposals
3) provide a 'grounding' of the standardization efforts by connecting the EE standardization with an existing and large community (Eclipse developers).

So I don't think we disagree with you at all about the standardization process...but I expect/hope that ECF will contribute to that process, rather than being a passive receiver of standardization (since there is nothing close to standardization of an open approach at the specification level, not to mention the implementation level).

> Thats technical
> details.
>
> Having said this I realize that having its own communication will give Riena communication a > sort of competive advantage over any other communication framework which is kind of unfair.

I'm not sure I understand what you are saying here, but a comment: IMHO standardization of communications protocols has traditionally had a hard time separating API/spec from implementation. There are several reasons for this I think...one of which being that enterprise software standards are frequently very politically charged...because of the implications for businesses (and the perceived 'owner') of the 'standard'. All you need to do is look at xml, security, web services, other standardization efforts to see these things happening. The reason is that it is in the business interests of the implementer to have *their* implementation drive the standardization...for obvious business reasons.

My hope is that this process (in the OSGI EE with involvement of Eclipse Foundation/Eclipse projects/ECF/Riena) can be different from that...i.e. that it will be possible to keep API (e.g. ECF remote services API and subsequent follow ons) and implementation (r-OSGi, ECF generic, Nyota, etc) truly *separate* (in Equinox terms...actually separate bundles/class namespaces).

>
> So I take that as an action item that I must find a way to also remove any technical dependency > to Riena communication components from all the other Riena components. (So Riena Security, Persistance
> etc have no direct knowledge of Riena Communication)

I think this would be a very good exercise. I expect you would find it necessary to define an abstract remote services API...like the ECF remote services API in order to do this...so would humbly suggest that implementing an ECF remote services provider based upon Nyota (as we have done with r-OSGI) would be a good way to go. It would also help us refine/generalize the ECF remote services API, by pointing out weaknesses/areas that are insufficiently general...and then we would (of course) happily respond by enhancing/generalizing the remote services API (and/or core APIs) as needed.

>
> We are not there yet but thats a good goal. On the way to that goal we hopefully together (Riena and ECF) > can define a mechanism on how an arbitrary component can publish and access Remote Services without > any knowledge about the implementation of the commmunication framework. I hope we can do that together.

Yes, I would very much like to do that together. Again I hope you will consider the ECF remote services API as a candidate for 'publishing and accesssing Remote Services without any knowledge about the implementation of the communication framework'. That was the intention for the org.eclipse.ecf.remoteservices bundle from the beginning. We haven't reached completion on that goal yet (I'm sure that there are both design weaknesses and areas where more capability are needed), but your input and modifications to the API would be most welcome.

>
> So bottom line, working together with ECF is something I definitly like to do. Dropping components
> of our own is currently nothing we would like to do.

I expect it would not be necessary to drop components of your own in order to use the ECF remote services API.

> Also you might be happy to hear that we are interested to become part of the new runtime top level project
> once it comes into existence.
> So that will definitly through us into the same pond. And hopefully quite natural we would talk together > to define such a standard together with others how remote osgi services should work.

Yes.

>
> Enabling things like security that we are currently doing also for ECF is definitly an option. That > also applies to other extensions to communication that we might be doing in the future.
>
> On the wider level I see ECF as one of the many cases where Riena needs to use other components. > Say we need to support EclipseLink, sure an obvious choice. Still we would want to create our > persistence wrapper in a way that you could also use Hibernate (if thats the Riena application builders > choice). Also SWT is an obvious choice for the UI. However that does not mean that we will stop > anyone from writing a Swing client or build uncessary hurdles. Same applies to > other functional parts that we are building i.e. SoftwareUpdate (P2, Maynstall or else)

I agree that there is lots of potential and value to come from cross-project interaction...particularly when focusing on enterprise/server applications on OSGi/Equinox.

>
>
> christian
>
> p.s. we are currently in the process to bring our code into CVS. Once that is done, we have some samples, > a webpage and stuff we can discuss how we can bring the two projects closer together.

OK. I'll look forward to any pointers...particularly WRT security that you can provide (pointers to the src base are perfectly fine).

>
> p.p.s. having a joint Riena, ECF sample application is definitly a good idea, forgot to mention that. > We are currently in process of defining multiple examples for Riena (some with UI, some as JUnit test). > Doing the exact same samples also using ECF is something we could do, once that is finished (and see where
>        differences/problems/challenges are.

That would be ideal. Perhaps at some point we could discuss some joint demo-level work...or at least have a public discussion about possible demo applications for remote services, as we (Jan, Markus, and myself) are working through ideas for EclipseCon 2008 demos right now (of r-OSGi/remote services, and discovery). It may be to our mutual advantage (i.e. more/cooler demos) to share the work involved.

I'm cross posting this response to the Riena newsgroup...which didn't seem to be on the original cc list. My apologies if this creates a problem for you.

Thanks,

Scott


Back to the top