[ogpx] The Urgent Need For Protocol Negotiation (Was: Beyond the monolithic client protocol endpoint)

Carlo Wood <carlo@alinoe.com> Mon, 07 December 2009 00:20 UTC

Return-Path: <carlo@alinoe.com>
X-Original-To: ogpx@core3.amsl.com
Delivered-To: ogpx@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id C65803A69BC for <ogpx@core3.amsl.com>; Sun, 6 Dec 2009 16:20:20 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.555
X-Spam-Level:
X-Spam-Status: No, score=0.555 tagged_above=-999 required=5 tests=[AWL=-1.629, BAYES_40=-0.185, HELO_EQ_AT=0.424, HOST_EQ_AT=0.745, J_CHICKENPOX_34=0.6, J_CHICKENPOX_36=0.6]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Wl6FocjUQcVh for <ogpx@core3.amsl.com>; Sun, 6 Dec 2009 16:20:19 -0800 (PST)
Received: from viefep15-int.chello.at (viefep15-int.chello.at [62.179.121.35]) by core3.amsl.com (Postfix) with ESMTP id E48493A69D0 for <ogpx@ietf.org>; Sun, 6 Dec 2009 16:20:15 -0800 (PST)
Received: from edge05.upc.biz ([192.168.13.212]) by viefep15-int.chello.at (InterMail vM.7.09.01.00 201-2219-108-20080618) with ESMTP id <20091207002004.XXFX10074.viefep15-int.chello.at@edge05.upc.biz> for <ogpx@ietf.org>; Mon, 7 Dec 2009 01:20:04 +0100
Received: from mail9.alinoe.com ([77.250.43.12]) by edge05.upc.biz with edge id E0L21d08F0FlQed050L31L; Mon, 07 Dec 2009 01:20:04 +0100
X-SourceIP: 77.250.43.12
Received: from carlo by mail9.alinoe.com with local (Exim 4.69) (envelope-from <carlo@alinoe.com>) id 1NHRHj-0001QQ-PM for ogpx@ietf.org; Mon, 07 Dec 2009 01:17:03 +0100
Date: Mon, 7 Dec 2009 01:17:03 +0100
From: Carlo Wood <carlo@alinoe.com>
To: ogpx@ietf.org
Message-ID: <20091207001703.GA26539@alinoe.com>
References: <e0b04bba0912051014y1aeea211i2ce3267179c70f1e@mail.gmail.com> <4B1B785A.9000602@cox.net> <e0b04bba0912060911i122d62e9o37a7229a2d742ac@mail.gmail.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <e0b04bba0912060911i122d62e9o37a7229a2d742ac@mail.gmail.com>
User-Agent: Mutt/1.5.20 (2009-06-14)
Subject: [ogpx] The Urgent Need For Protocol Negotiation (Was: Beyond the monolithic client protocol endpoint)
X-BeenThere: ogpx@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: Virtual Worlds and the Open Grid Protocol <ogpx.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/ogpx>, <mailto:ogpx-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/ogpx>
List-Post: <mailto:ogpx@ietf.org>
List-Help: <mailto:ogpx-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ogpx>, <mailto:ogpx-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 07 Dec 2009 00:20:21 -0000

On Sun, Dec 06, 2009 at 05:11:51PM +0000, Morgaine wrote:
> It's not up to us to prejudge nor prescribe how VW applications will be
> structured.  The fact that advanced ones will involve multiple disjoint
> processes is a given, and our protocol endpoint design must take that into
> account, or it will be obsolete before it is even ready.

I'd like to grab this opportunity to recall my proposal for
client-server protocol negotiation.

I really, really think that this is very important.

If we could get the protocol completely right and finished
the first time and it would never have to be changed again
in the future, because it would suit every possible future
demand and desire, then sure, we wouldn't need this...

However, apart from that the fact that we'll make mistakes,
we certainly can't predict what will be needed in the future!

Therefore we really should allow for protocol changes by
means of negotiation of optional and mandatory protocol
features.

I also think that we should use MY proposal for this negotiation;
and not some other "protocol negotiation" that just won't cut
it once things really start to change.

To recall:

* The protocol negotiation would allow to shift the protocol
base over time to a COMPLETELY arbitrary new protocol (that
garantees that any possible future demand CAN be met).
* It is possible to keep backwards compatibility for as long
as desired (ie, a few years), at which point old clients
may be forced to upgrade if they lack then mandatory protocol
features.
* The proposal comes with a well thought-out sheme of
distributed documentation of the protocol (extensions):
For documentation purposes there would be the need for
one central website having links to the websites
of every administration with protocol
extensions/enhancements (and from there to documentation
of each feature separately).

Leaving out the details for now, as they don't really
matter imho. Not until we agree that this is something
that we want.

Having such negotiation defined, the protocol can and
will be subject to an evolutionary process: Client coders
will think of new features; certain VW's will implement
and support those - and the best features will, under
user demand, be copied by other grids. Once every grid
uses some new feature and every viewer supports it,
the feature can be made an integral part of the protocol
as if it had been from the very start of it's design.

As an example (from IRC (I have been the main developer
and coder for undernet IRC for seven years)): In 1993
I introduced "Time Stamps" on undernet to battle net.riding.
Today every IRC network uses time stamps, and it's
unthinkable that IRC would work without. Other extensions
that I added on top of the RFC which have slowly been
copied by other networks*) are: bans stop every type
of channel flooding; SILENCE stops private flooding at the
server of the sender; delayed joins (to allow large
event channels with thousands of listeners); "max targets"
flood limiting (to slow down mass spamming to one message
per 2 minutes); BURST message to synchronize channels
on net.join atomically; numeric nicks to stop seven types
of possible desyncs as a result of changing nicks in
combination of MODE's, etc. But here it stopped... and
left me very frustrated about the protocol: IT TURNED OUT
TO BE IMPOSSIBLE TO MAKE NEEDED IMPROVEMENTS! Why? Because
for subsequent essential improvements I needed to change
the client-server protocol and that was IMPOSSIBLE because
of the lack of a good client-server protocol negotiation.
(After I left, this negotiation was added, but in a bad
way, still not allowing for the changes that are really
needed).

-- 
Carlo Wood <carlo@alinoe.com>

*) Not literally, but the Idea: each IRC network is
   a completely isolated set of servers, often running
   their own private server versions, so there is no
   need for any kind of compatibility there.
   That is different for the client-server protocol,
   since the SAME clients connect to different networks
   (but, as said before-- for a long time any such
   negotiation was lacking; resulting in hackish ways
   to "detect" on what network one was ('undernet',
   'efnet', 'dalnet') and then guessing what features
   are needed (as no versioning was being done) for
   a long time, with uncontrolled wild growth as
   result.
   VWRAP will exist of many servers and viewers by
   *different* administrations/groups that all
   interconnect however! In that case a good protocol
   negotion sheme IS needed, from the very start!