Library vs. OS model

Those gifted with a sharp memory (I mean the gray mushy kind), will notice that I am re-using one of my previous postings here, for the sake of putting all the information together.

All an application needs in order to be said to run "within" a group, is to own a handle to the object representing that group. Applications that may be started inside a group include everything that's in the class path, mainly because we haven't yet gotten around to loading things from any other source.

Groups do have an initial app, but whatever code instanciates that group is de-facto part of that group, since it holds a handle to the object. In addition, such an application is not obligated to actually start the group's main app. The combination of these two "features" provides kind of a "library" mode. One can instanciate and join groups at will. In addition an application can do that many times and thus jump from group to group and be de-facto part of them all (That's what instantp2p and the shell's join command do).

More, since the Platform is a group, in theory an application may actually start the platform if it so wishes (although, if used, the PeerGroupFactory *will* start the Platform's main app). All this may seem really convenient, and I agree that it may be a desirable mode of operation. But before being happy with it, there's some work to do; here's why: - Groups may be nested. People can create groups within groups. They can even build them around services that depend upon another group (and even more than one other group) - see the section about group nesting. So, as long as there is only a thin hierarchy of groups like today (/Platform/NetPeerGroup/yourgroup) an application can simply assume that any group it knows of can just be instantiated and published in either NetPeerGroup or Platform, and everything looks fine, but what if such an application encounters a group XYZ (let's say that the group's advertisement was received via e-mail rather than found by normal discovery) that is dependent on things that exist only in group /Platform/A/B/C/D (I'm making-up the path thing for clarity) ? Is this application supposed to figure it out recursively and instanciate all the hierachy first ? I think that it is the only solution, but you tell me.

If we look at the OS-like view of things on the other end, we're on more familiar ground. How does one run Outlook Express on a PC ? Does one stick a CD with OE on it in a virgin PC and watch Windows install itself before OE can start ? No, right. One turns-on the PC where Windows is installed, one familiar general purpose app starts: the desktop, and from there one finds an application, a file navigator runs it, and then uses it to nagivate directories (some of which do things when opened - by the way) and finds OE and runs it. What I'm getting at is that since the base JXTA is rather general purpose, and since there'll soon be a content system to go with it, why shall we need anything else to find and start applications. Why should a user start from the application and get the platform rather than the otherway around ? I am not saying that we must not support both, but polishing-up a realy good content system would make the issue a lot less urgent and achieve so much else in the same time



Jean-Christophe Hugly

Last modified: Thu Jun 14 14:36:16 PDT 2001