You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avalon.apache.org by Niclas Hedhman <ni...@hedhman.org> on 2003/11/15 06:00:05 UTC

[RT] Darwinistic COP

Hi,
last night I was laying in bed and thinking of your response, and somehow got 
me to draw parallels with other fields of components.

And then I had a "moment", and I can't shake it from my head, it just seems 
"right", but this is highly theoretical and could possibly be completely 
impractical. So....

Background;
1. Stefano maintains that software development has the most parallels with 
Evolution of Species. Where each release is a new species and each configured 
copy is an individual of that species. I am drawing parallels with animal 
kingdom from here on.

2. Phoenix uses named instances, who live a life in the container. Merlin 
recognizes that sometimes we don't care about which instance, any will do (a 
rat is a rat).

3. Leo (his wonderful Jicarilla Wiki pages) says among other things that it is 
wrong to talk about LifeCycle, as in practical circumstance there are only 2 
(birth and death).

4. Some people points out that some components has state (married, injured, 
hungry). Some also points out that the configuration is also a state, initial 
state maybe so, but why couldn't that change over time.


Now, for some reason, it just strike me that the "Container" we know today is 
not fit to be the vehicle of COP !!

Let me follow the Evolution analogy;

We have a "creation" of an individual, from an Egg (DNA information -> code) 
to a living being. At a particular point, that ends and the created 
individual enters the rest of the world. 

What if, component creation (bringing from DNA -> to an individual) is 
actually supposed to happen pre-deployment (birth).
During creation, the creator form the individual's birth state, maybe over a 
long period of time.

My bottom line;

What if the "Component" is an instance created by the developer and not by the 
deployer??

Huhh??

What if the "Component" is a Java instance, that is already "alive" when it is 
downloaded from the repository??

More huhhh??

What I have in mind is that the Component is in fact not a set of class files 
and a bunch of resources at all, but an actual instance of the Service it 
provides. It means that "somehow" the "Component" is created long before any 
"Container" (a small world of life) knows about.
Once the "Component" enter the "Container", it will "negotiate" with its 
surroundings for survival.

And we even have most of this mechanism in place, and in many forms. The 
"Creation Process" (the womb) is a set of tools that takes the class files, 
resource and what not, and output a serialized object, in one of many 
available formats (the format not being relevant).


If we compare the above model with Avalon of today, it seems to me that what 
we have is the "Womb" and "World" bound together. The container is 
responsible for the "creation" (constructor, configure), "birth" 
(contextualize, service, start) and "death" (stop, dispose, finalize).


But the whole "creation" process could be much more "manual" and 
"interactive", in fact, we are trying to build a static model of a manual 
process (people defines the creation into a static model, which the container 
then replicates). When in fact, we could have a 100% interactive process 
where the component is formed, and then that instance is saved for later used 
(or clones of it).


What I see as the really big challange is the "Negotiation with the 
Surroundings". A component can "Look" in the world around itself, and try to 
communicate with other individuals. Just like real life, that could be 
tricky.
But the component should also be allowed to move to other "Realms", to seek 
its fortunes there. I imagine a "Realm" being a neighbourhood that you can 
see you neighbours. And from one Realm you can no of some other Realms, but 
not the individuals over there.


Will this become the next big thing??  -  I don't know.
Can this possibly work at all?  -  I don't know.
Can we make it happen?  -  I don't know.
Is it desirable?  -  I don't know.
Is it worth more thought/research?  -  I think so.


Any comments? 


Niclas


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@avalon.apache.org
For additional commands, e-mail: dev-help@avalon.apache.org


Re: [RT] Tolkien COP ( was; Darwinistic COP)

Posted by Niclas Hedhman <ni...@hedhman.org>.
On Sunday 16 November 2003 11:05, hammett wrote:
> I Just [3] can't see this working in the Java plataform. Could you please
> show me some code snippets of what you aiming?


Whoooaaa... Code snippets of what could be the biggest revolution in software 
development since OO or even the Turing machine ;o)

Ok, uuuuhhh....

Divide the "Uniware"(tm) (Software Universe) into three "SoftWorlds"(tm);

Valhalla, Utgaard and Midgaard, ooopss, sorry wrong religion....

1. The Womb - an developing individual.
2. The OuterWorld  -  non-executing environment
3. The Realms - the cyberspace executing environments.

Furthermore, before I continue about these worlds, what we call the 
"development environment" of today is orthogonal to this notion. The 
"development environment" as we know it, is the process of creating new 
Species and evolving existing ones.

Ok?

Womb
=====
The Womb is a place where a Species' DNA (code, resources) are taken to be 
instantiated and configured. Part of it is that the instance is given a UUID, 
which will effectively give that instance an individuality forever, or it 
dies. Together with the Identity there must be Credentials, and probably the 
possibility of other Individuals to add Credentials to an individual (too 
much detail now..)
In Individual can be "developed" (developed as in child development) in the 
Womb, by parameterizing the various configurations and states, which it will 
keep with itself after it is release from the Womb (birth).


Realms
======
A Realm is an abstraction of en execution environment. Individuals can query 
the Realm and the other individuals living in the same Realm at great detail, 
and it can find out overview information about other Realms. The nearer the 
Realms are, the more is known about them, and vice versa.
An Individual can "travel" to another Realm.


OuterWorld
==========
When an Individual is moving between Realms, or waiting to go to one, and a 
handful of other cases, it is in OuterWorld. A desolate, barren place, where 
the gray darkness bores it inhabitants to passivity of enormous scale, i.e. 
no Individual do anything, they just "BE".


That was pretty surreal. What does it mean in more practical terms?

After the software developer creates a new Species and publish its DNA (code, 
resource) a Mother takes the DNA and creates an Individual in a Womb. During 
that creation, the Mother (a human being) sets the values, and states. During 
this lifecycle phase, the object is more susceptible to modifications that it 
would be later in its life. This will allow the Mother to form the individual 
down to the smallest detail.
The Womb is a Java application, that will instantiate the DNA and allow for 
introspection and modifications, and finally Birth.

Birth will be a matter of "serializing" the individual to its "passive state" 
and the individual will then be in OuterWorld, incapable of any activity and 
relying entirely on the Gods of OuterWorld to take care of it.
That means, practically, OuterWorld is disk drives, network transport, and 
other wrapping of the indvidual.


A Realm is a complex world, where individuals lives side by side. Their life 
is about communicating (statements, discussions, queries, request/response, 
opinion making) at the Forum and trading (transactions, advertising) at the 
Market. (Other Analogies to follow).
Both communication and trade will be based on Trust. Different Individuals may 
be more or less stringent about the trust requirement, and may discriminate 
accordingly for each activity.

Forum
=====
The Forum is the place where individuals can make statements ( "in the 
realm://hedhman.org/heaven, you can trade apples for knowledge" ). A 
statement will be nailed on the wall of the forum.
An individual could also announce "I come from realm://hedhman.org/heaven", 
and "travel news" invidividuals could ask questions about the place.
And so on.


Market
======
This is the most important place in the Realm. It is here all transactions of 
artifacts takes place.
"I have Files for sale. Very cheap!!" is a sales advertisement.
"I want file:///home/niclas/www/index.html. Anyone have it?" is a purchase 
advertisement.
The seller could request something in return for the transacted object, or 
provide it "free", as in free beer.



Does Java contain everything required to make this work?
Yes I am pretty sure.


Can you model all current business objects and business processes with such a 
weird programming model? 
Yes, I am pretty sure you can. In fact, I think it will even be easier. One 
thing about Object Oriented programming is that it allows you to model the 
real world in which the model have to work, but the most important part of 
the model is missing in OO, the WORLD, and the mechanisms that make citizens 
of the World to interact.
I am also sure programming will become more fun!! I rather create a new 
species "MushRats", who sneak around in Markets picking up good deals, than a 
EntityCollectionEvaluator (effectively doing the same) ;o) But maybe that is 
just my "Fiction Author" side of my personality shining through.


Back to your "show code snippets"...

I can't show, the subject is too immense, but I hope the above description 
have given some more "practical detail" than the original post.

Merlin in its current form is not a Realm container. It is too encompassing 
(it creates individuals) and doesn't allow for "travelers" and all that comes 
with that.
Can/should Merlin be the base for this kind of experiment? Yeah - probably in 
the "learning phase". There are so much new territory that needs to be 
explored, and we would need a platform where ideas can be tested quickly.

But the overwhelming issues surrounds the abstraction of communications, 
trade, travel, "understanding" and so on.

A long journey, but it starts with small steps...


Cheers
Niclas

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@avalon.apache.org
For additional commands, e-mail: dev-help@avalon.apache.org


Re: [RT] Darwinistic COP

Posted by hammett <ha...@apache.org>.
Cheers, Niclas!

You point out very important subjects and while I was reading your post I
wrote some code (in my head). I just don't know how to make such thing
actually happen. These statements can't get out of The Wall [1] of the
technology (Java).

In the CLI world we can do something like:

    [LivesInAContainerRealm]
    public class MyHumanComponent : ContextBoundClass
    {
        // Desired lifecycles follows
    }

The happiest days of programmers lifes [1] could be brough by this kind of
use:


    MyHumanComponent component = new MyHumanComponent();


...and justice for all [2] - the magic happens (lifecycle is handled
transparently)

I Just [3] can't see this working in the Java plataform. Could you please
show me some code snippets of what you aiming?



Regards,

hammett

[1] - Pink Floyd
[2] - Metallica
[3] - Radiohead

----- Original Message ----- 
From: "Niclas Hedhman" <ni...@hedhman.org>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@avalon.apache.org
For additional commands, e-mail: dev-help@avalon.apache.org


Re: [RT] Darwinistic COP

Posted by Edison Too <ed...@yahoo.com.sg>.
Hi,

>What I see as the really big challange is the "Negotiation with the
>Surroundings". A component can "Look" in the world around itself, and try to
>communicate with other individuals. Just like real life, that could be tricky.
>But the component should also be allowed to move to other "Realms", to seek
>its fortunes there. I imagine a "Realm" being a neighbourhood that you can see
>you neighbours. And from one Realm you can no of some other Realms, but not
>the individuals over there.

This above paragraph reminds me of P2P-based framework. One interesting project I used to follow was www.jtrix.org. A paragraph from their roadmap might show you the similarity:

<quote>
Multiservice optimisation. The scenario is that an HTTP service may want to move to a hosting service nearer its users. It will use the indexing service to choose a hosting service with the right geographic features. But it will also use, say, a Webtrix servlet service which has its own requirements. How can we amalgamate all these requirements and find the optimal criteria for the hosting service? 
</quote>

But as far as I know, the project is no longer active, I may be wrong though.

Cheers,
Edison


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@avalon.apache.org
For additional commands, e-mail: dev-help@avalon.apache.org