[gclist] Impl, terminate & obviousness

Arturo Bejar arturo@communities.com
Fri, 14 Jun 96 11:12:51 -0700


This posting adresses implementation, terminate messages, obviousness, 
and a bit of IP stuff.

>I'd still be a bit suspicious 
>until a proof were constructed. While academics sometimes neglect practical 
>hands on testing of their constructs, we industrial types have a habit 
>of neglecting formal analysis.

I agree with the need for a formal proof and work, if only these 
deadlines didn't keep popping up... :P

>How can you do that? If A is reachable, dropping B would be a disaster.
>But you are inducing an unecessary "failure". This is a bug not a failure.

Yes and no, perhaps the way I adressed the issue was incorrect, let me 
expound, in our implementation by construction there is no way for A to 
become reachable, in Java all of the pointers are strong, and if a 
reference to A leaves the machine it set up a strong remote reference. So 
A would not be reachable.

>>We could follow a more agressive strategy for cleaning up the cycle by 
>>sending terminate messages, but those could be spoofed,
>I'm not sure, but I believe that Matt Fuch's addresses this point in his 
>paper. Even if it is spoofed, you are still no worse off than you are with 
>your algoritm.

Fuchs assumes that pervasive encryption will be available to keep 
malicious messages from happenning, which will probably eventually be 
true and will lead to an interesting application. Right now taking that 
approach would be expensive, and the biggest difference is that his 
terminates get propagated to the IRG, sort of telling the objects that 
are pointing at you that they are garbage (hence the security issues). 
Dropping forward references on the other hand is a a different ballgame, 
the pointers you hold to other remote objects are inside your trust 
boundary and you can do whatever you want with them. If you drop them it 
is up to the other machine to decide wether it will collect the objects 
or not. Another, smaller advantage is that we don't actually have to 
implement terminate since the standard cleanup will take care of it.

>I lean in this direction. At the very least, obtaining a patent should 
>require much more inventive work than demonstrated here. As Arturo
>admits, using an IRG was pioneered by others. And once you have the IRG, 
>tracing it is should not be considered so inventive as to deserve a patent.
>I mean, how hard is the thought process: "Hmmm. Tracing forward is hard. 
>But, there is an IRG. AHA! Let's trace it."

Trying to adress the issue of originality, or lackof thereof ;)

We're all building on each other's work, and I believe there is no use 
tearing down each other's work in petty ways, if you find a hole in my 
posting, cool!.

I've seen remarks that describe this algorithm as a Depth First Search 
(which I will contest in a moment), which would be analogous to calling 
Fuch's algorithm just a graph coloring algorithm (which it is), that is 
not the point, we're combining different tools in our CS arsenal to solve 
different problems.

This algorithm is is a combination of a search and a topological sort, 
what is important about it is not how it finds, but rather how it doesn't 
find a local root, it is not formally a DFS because it never sends a 'not 
found' message, now some people implement DFS in a way that it doesn't 
overlap which gets closer to what this algorithm does, but if they still 
traverse a branch looking for something and if they don't find it they 
send back a 'not found' for that branch, those combined with the 
non-overlapping will give the result. The algorithm focuses purely on the 
non-overlapping aspect of thing, if you look this up in Robert's 
Combinatorics it is called a topological sort of a hamiltonian chain, and 
oddly enough it is two sections after the formal definition of a DFS ;), 
but again arguing about this is probably a waste of time, if it is, or it 
isn't, so what?

The important part is that if anybody has seen this documented in this 
context before I would appreciate the reference.

IP Stuff:

I don't want to talk about IP issues too much, The IP protection that we 
filed for did not try to cover any of the work that has been published 
before, as far as we knew, and gave credit to all the prior art we could 
find (including Fuchs which was the most recent publication that we could 
find), what we did only covers certain key aspects of the way we did 
things. Speaking for myself: When I worked at other places, including 
IBM, I refused to patent stuff afraid that the company would use it to 
hamper the field which goes against my principles. Before we proceeded 
here I spoke with management (After all a company pays for its 
intelectual property, it has the right to protect it), and I know that 
they will to the right thing, that's why they allowed me to post the 
description and hopefully they will allow me to post the implementation 
too so that everybody can tear at it. If there are licensing issues I'm 
sure (speaking for myself, not EC) they will only be related to 
commercial implementations and I'm sure that they will be liberal, we're 
not in the dgc business... Check out www.communities.com to see what 
we're about.

Take care,
Arturo

___________________________________________________________________
Arturo Bejar                   "What you can see, you can achieve."
arturo@communities.com                          - J. Verne, sort of