Re: [Standards] NEW: XEP-0225 (Component Connections)

2007-08-10 Thread Michal 'vorner' Vaner
Hello

On Fri, Aug 10, 2007 at 11:19:59AM -0700, Justin Karneges wrote:
> > That said, all server implementations need to do this namespace juggling
> > anyway, so I don't see how it is an extra burden to do this for another
> > namespace, too.
> 
> What doesn't sit well with me is this idea of the standard elements having to 
> live under any random namespace.  The namespace is what gives them meaning.  
> If we only ever have exactly two (or potentially with a component namespace, 
> exactly three) possible namespaces for the elements, maybe that is fine.  
> What is not fine is having to worry that someday down the line we may invent 
> yet another namespace that the standard elements must be able to operate 
> under.  Is  omnipresent, and existing potentially in all namespaces? :)

Well, I take  does what it does if it is in the same namespace
with stanzas, and it does not much matter which kind of stanza it is
(client, server, whatever).

Technically, it is the namespace that gives the meaning, but - if you
look at the xml document/stream - it is the body that inherited the
namespace and does not have the xmlns= attribute (do I sound like XML
heretic to you?).

-- 
Security warning: Do not expose this email to direct sunlight.
It may lead to undefined behaviour, including possible data or life loses.

Michal 'vorner' Vaner


pgpf3tKIm9RN6.pgp
Description: PGP signature


Re: [Standards] NEW: XEP-0225 (Component Connections)

2007-08-10 Thread Justin Karneges
On Friday 10 August 2007 12:20 am, Ralph Meijer wrote:
> My namespace handing code has None besides the typical empty and
> non-empty namespace names. None means inheriting from whatever is the
> default namespace of the parent (or closest ancestor that sets this. So,
> I convert the namespace to None on incoming messages and to the stream
> namespace on outgoing messages.

Good approach, and it makes sense given how XMPP works.  Unfortunately, it 
requires a special data structure as opposed to a standard DOM, which does 
not have the notion of an inherited/default namespace (yes, I keep bringing 
up DOM... but standard XML tools are good.).  It just occurred to me though, 
that maybe I could add my own namespaced attribute onto the elements 
indicating the default namespace, which would be stripped at the time of 
transmission.  Yay for DOM hacks. :)

> This keeps namespace changes at the edges. Not having a defined default
> namespace the elements in transit between parts of the server make sense
> to me, as they don't actually belong to any of the currently defined
> stream namespaces.

This I'd argue with.  Take my example again about .  This element is 
defined to be in the jabber:client or jabber:server namespace.  What is its 
meaning in an undefined or None namespace, according to your implementation?  
Presumably it gains either 'jabber:client' or 'jabber:server' meaning when it 
becomes time to process it.  It must belong to one of those namespaces (or 
somehow both) at the time of processing, because otherwise the element would 
be meaningless.  If you have stanza code that processes , but does not 
care about the namespace of the body element, then that to me is a little bit 
goofy.

> That said, all server implementations need to do this namespace juggling
> anyway, so I don't see how it is an extra burden to do this for another
> namespace, too.

What doesn't sit well with me is this idea of the standard elements having to 
live under any random namespace.  The namespace is what gives them meaning.  
If we only ever have exactly two (or potentially with a component namespace, 
exactly three) possible namespaces for the elements, maybe that is fine.  
What is not fine is having to worry that someday down the line we may invent 
yet another namespace that the standard elements must be able to operate 
under.  Is  omnipresent, and existing potentially in all namespaces? :)

-Justin


Re: [Standards] NEW: XEP-0225 (Component Connections)

2007-08-10 Thread Peter Saint-Andre
Ralph Meijer wrote:
> jabber:server and jabber:client both don't make much sense
> for component streams. I think we have a couple of choices here:
> 
>  1. Use a separate namespace for the component streams.
>  2. Choose from jabber:server and jabber:client
>  3. Iff we do a new version of XMPP (i.e. >1.0), we could choose one
> namespace for all connections.
> 
> I strongly prefer 1 over 2, 

I prefer that too. Not sure I strongly prefer just yet. :)

> but if we do 2, I'd choose jabber:server.

I'm agnostic on that. Either way, we're forcing a square peg into a
round hole.

> Option 3 is something that could be considered, but if you want to be
> interoperable with client and server implementations that implement
> versions <=1.0, you still have to do some juggling at the edges. However
> you would change the namespaces to and from that new namespace and use
> the new namespace internally.

We've always tried not to break older software. I see no good reason to
change that policy now.

/psa



smime.p7s
Description: S/MIME Cryptographic Signature


Re: [Standards] NEW: XEP-0225 (Component Connections)

2007-08-10 Thread Ralph Meijer
I'm a bit torn about this, comments inline.

On Wed, 2007-08-08 at 15:11 -0700, Justin Karneges wrote:
> On Wednesday 08 August 2007 1:44 pm, Peter Saint-Andre wrote:
> > XMPP Extensions Editor wrote:
> > > Version 0.1 of XEP-0225 (Component Connections) has been released.
> > >
> > > Abstract: This document specifies a standards-track XMPP protocol
> > > extension that enables server components to connect to XMPP servers.
> >
> > One of the items up for discussion is the default namespace for
> > component connections. At the XMPP DevCon we thought that it would be
> > good to use 'jabber:client', but I know that both Matthias Wimmer and
> > Ralph Meijer have some arguments for 'jabber:server'. So perhaps we
> > could have a debate about that. :)
> 
> For namespace-aware implementations, these multiple namespaces are a real 
> pain.   and  have 
> identical meaning: a body of a message.  Yet, namespace-aware implementations 
> will consider these to be two distinct elements.  This affects the creating 
> and parsing of all RFC 3920 and 3921 XML data.  You need to write code that 
> understands both namespaces and can output under either namespace (depending 
> on whether a stanza is going out on c2s or s2s).
> 
> In jabberd2, I believe all XML is internally handled in the jabber:client 
> namespace.  I did the same thing in Ambrosia.  When a stanza arrives over 
> s2s, I iterate over the DOM and change all namespace instances 
> of 'jabber:server' to 'jabber:client' (note here that I'm not talking about 
> xmlns attributes, but rather the namespace property of each DOM element).  
> This allows me to reuse all of my existing stanza parsing and generation code 
> based on a single namespace ('jabber:client').

Since I am interesting how others do this, I'll first describe how I go
about this.

My namespace handing code has None besides the typical empty and
non-empty namespace names. None means inheriting from whatever is the
default namespace of the parent (or closest ancestor that sets this. So,
I convert the namespace to None on incoming messages and to the stream
namespace on outgoing messages.

This keeps namespace changes at the edges. Not having a defined default
namespace the elements in transit between parts of the server make sense
to me, as they don't actually belong to any of the currently defined
stream namespaces.

That said, all server implementations need to do this namespace juggling
anyway, so I don't see how it is an extra burden to do this for another
namespace, too.

> Additionally, I think indicating support for a feature or connection type 
> simply through a namespace declaration is weird.  A namespace declaration 
> indicates what namespace child elements should be assigned to, when you 
> actually have child elements.  By itself it doesn't have much meaning.  
> Namespace declarations don't show up in DOM either (they do show up in SAX 
> though, which is how I handle them).  I personally think it was a mistake to 
> use namespace declarations to indicate c2s vs s2s, or to indicate dialback 
> support, and so I vote not repeating this mistake.  This means 
> no 'jabber:component' or such.  The choice should be between 'jabber:client' 
> and 'jabber:server' for the namespace.  Use a real attribute or element to 
> indicate component support.

I can sympathize with the reasoning, actually. This is a clear case of
hist(e|o)ric reasons. I have to agree with Rachel and Peter here,
though, that jabber:server and jabber:client both don't make much sense
for component streams. I think we have a couple of choices here:

 1. Use a separate namespace for the component streams.
 2. Choose from jabber:server and jabber:client
 3. Iff we do a new version of XMPP (i.e. >1.0), we could choose one
namespace for all connections.

I strongly prefer 1 over 2, but if we do 2, I'd choose jabber:server.

Option 3 is something that could be considered, but if you want to be
interoperable with client and server implementations that implement
versions <=1.0, you still have to do some juggling at the edges. However
you would change the namespaces to and from that new namespace and use
the new namespace internally.

-- 
Groetjes,

ralphm



Re: [Standards] NEW: XEP-0225 (Component Connections)

2007-08-10 Thread Matthias Wimmer

Hi Tomasz!

Tomasz Sterna schrieb:

Dnia 10-08-2007, pią o godzinie 10:26 +0200, Matthias Wimmer napisał(a):
But I'd prefere to use 'jabber:server'. Even if have a bit of 
the expression, that people merely prefere 'jabber:client' just
because 
more people seem to work on clients or client connections were they
are 
more used with using 'jabber:client' as the standard namespace, than 
working on s2s connections.


Could it be, that I prefer jabber:server for the same reason? :-)


It could be and I thought about that as well. But don't we work on 
client connections as much as we work on server connections as well? I'd 
say I am used to use both namespaces.



Matthias



Re: [Standards] NEW: XEP-0225 (Component Connections)

2007-08-10 Thread Alexander Gnauck

Hello,

i am for jabber:client because i don't like the namespace switching in 
software.
But this does not help that much if we stick with other namespaces on 
s2s connections forever.


Alex



Re: [Standards] NEW: XEP-0225 (Component Connections)

2007-08-10 Thread Tomasz Sterna
Dnia 10-08-2007, pią o godzinie 10:26 +0200, Matthias Wimmer napisał(a):
> But I'd prefere to use 'jabber:server'. Even if have a bit of 
> the expression, that people merely prefere 'jabber:client' just
> because 
> more people seem to work on clients or client connections were they
> are 
> more used with using 'jabber:client' as the standard namespace, than 
> working on s2s connections.

Could it be, that I prefer jabber:server for the same reason? :-)


-- 
Tomasz Sterna
Xiaoka Grp.  http://www.xiaoka.com/



Re: [Standards] NEW: XEP-0225 (Component Connections)

2007-08-10 Thread Matthias Wimmer

Hi Justin!

Justin Karneges schrieb:

I don't have a strong preference really. A component feels a bit more
like a client because it is a local connection, plus c2s connections are
simpler than s2s connections. Let's pick one and be done with it. :)

The reason why I for the most part suggest using jabber:server instead
of jabber:client is, that in the jabber:client namespace the from
attribute on stanza is optional, while on jabber:server it is not. I
think this is one of the biggest differences between these two
namespaces.

In fact I think it's the only difference. ;-)
There's an even bigger one: server connections can only send stanzas in one 
direction.  Although that's more of a protocol thing than a schema thing, if 
you want to get picky. :)


That's exactly what I thought. You will probably implement s2s and 
component connections in different components, so that the protocol part 
is not that important. - But the schema is shared between both if they 
use the same namespace. That's why I would pick the jabber:server namespace.


BTW: Even jabber:server connections do not have to be unidirectional, 
that is only a (current) restriction if you use SASL for authentication. 
(It meight even happen, that this restriction will be dropped sometime 
in the future, at least I would not be surprized.)



As I said, I think there are reasons to go with either jabber:client or
jabber:server. It may more more a matter of picking one than choosing
based on some reasoning.


I always figured components were more like clients than servers.  Clients and 
components make single outbound connections, and construct and parse stanzas 
for server routing.  In contrast, servers do very little stanza manipulation 
(and, depending on how your server is designed, even the roster stuff might 
be in a component).


... you might even do the roster stuff on a different server, that is 
connected using a s2s connection to the other server. I already set this 
up once.


> It is stanza manipulation that really kicks your ass
when it comes to the different namespaces, and so sharing the same one as 
clients would be useful I think.


In jabberd14 and as you (?) said at least in jabberd2 as well (don't 
know the other servers) all handling is internally done in the same 
namespace. This can be jabber:server (like in jabberd14 for the reasons 
from above) or jabber:client (like in jabberd2) and does not make a big 
difference for the server (it's just reading both namespaces as the same 
namespace and when serializing XML it's using the expected namespace on 
that connection to serialize the common internal namespace).


So if everybody else preferes the jabber:client namespace I can live 
with that. But I'd prefere to use 'jabber:server'. Even if have a bit of 
the expression, that people merely prefere 'jabber:client' just because 
more people seem to work on clients or client connections were they are 
more used with using 'jabber:client' as the standard namespace, than 
working on s2s connections.



Matthias


Re: [Standards] NEW: XEP-0225 (Component Connections)

2007-08-09 Thread Joe Hildebrand


On Aug 9, 2007, at 10:01 PM, Justin Karneges wrote:
There's an even bigger one: server connections can only send  
stanzas in one
direction.  Although that's more of a protocol thing than a schema  
thing, if

you want to get picky. :)


This is a good enough reason for me, which is why I like jabber:client.

--
Joe Hildebrand




Re: [Standards] NEW: XEP-0225 (Component Connections)

2007-08-09 Thread Justin Karneges
On Thursday 09 August 2007 8:03 pm, Peter Saint-Andre wrote:
> Hi Matthias! :)
>
> Matthias Wimmer wrote:
> > Hi Peter!
> >
> > Peter Saint-Andre schrieb:
> >> I don't have a strong preference really. A component feels a bit more
> >> like a client because it is a local connection, plus c2s connections are
> >> simpler than s2s connections. Let's pick one and be done with it. :)
> >
> > The reason why I for the most part suggest using jabber:server instead
> > of jabber:client is, that in the jabber:client namespace the from
> > attribute on stanza is optional, while on jabber:server it is not. I
> > think this is one of the biggest differences between these two
> > namespaces.
>
> In fact I think it's the only difference. ;-)

There's an even bigger one: server connections can only send stanzas in one 
direction.  Although that's more of a protocol thing than a schema thing, if 
you want to get picky. :)

> As I said, I think there are reasons to go with either jabber:client or
> jabber:server. It may more more a matter of picking one than choosing
> based on some reasoning.

I always figured components were more like clients than servers.  Clients and 
components make single outbound connections, and construct and parse stanzas 
for server routing.  In contrast, servers do very little stanza manipulation 
(and, depending on how your server is designed, even the roster stuff might 
be in a component).  It is stanza manipulation that really kicks your ass 
when it comes to the different namespaces, and so sharing the same one as 
clients would be useful I think.

-Justin


Re: [Standards] NEW: XEP-0225 (Component Connections)

2007-08-09 Thread Peter Saint-Andre
Hi Matthias! :)

Matthias Wimmer wrote:
> Hi Peter!
> 
> Peter Saint-Andre schrieb:
>> I don't have a strong preference really. A component feels a bit more
>> like a client because it is a local connection, plus c2s connections are
>> simpler than s2s connections. Let's pick one and be done with it. :)
> 
> 
> The reason why I for the most part suggest using jabber:server instead
> of jabber:client is, that in the jabber:client namespace the from
> attribute on stanza is optional, while on jabber:server it is not. I
> think this is one of the biggest differences between these two
> namespaces. 

In fact I think it's the only difference. ;-)

> So the component connection which also forces this stanza
> attribute to be present matches better the jabber:server namespace.

True.

> Minor reasons:
> - I'd say that component connections are more like a s2s connection, as
> you do not manage sessions from them in the server. 

Good point. But I suppose that a session is tied to resource binding and
sending initial presence (we're getting rid of session establishment in
rfc3921bis for this reason -- a session is essentially a presence
session), so I don't know if this reason is relevant.

> - Both with s2s and components you typically route one or more domains
> completely to the same desination. With c2s you only route single users
> out of a domain.

Right.

As I said, I think there are reasons to go with either jabber:client or
jabber:server. It may more more a matter of picking one than choosing
based on some reasoning.

Peter

-- 
Peter Saint-Andre
https://stpeter.im/



smime.p7s
Description: S/MIME Cryptographic Signature


Re: [Standards] NEW: XEP-0225 (Component Connections)

2007-08-09 Thread Matthias Wimmer

Hi Peter!

Peter Saint-Andre schrieb:

I don't have a strong preference really. A component feels a bit more
like a client because it is a local connection, plus c2s connections are
simpler than s2s connections. Let's pick one and be done with it. :)



The reason why I for the most part suggest using jabber:server instead 
of jabber:client is, that in the jabber:client namespace the from 
attribute on stanza is optional, while on jabber:server it is not. I 
think this is one of the biggest differences between these two 
namespaces. So the component connection which also forces this stanza 
attribute to be present matches better the jabber:server namespace.


Minor reasons:
- I'd say that component connections are more like a s2s connection, as 
you do not manage sessions from them in the server. pre-2.0 versions of 
jabberd2 even did not have a dedicated s2s component but did s2s 
directly in the router (where also components connect to).
- Both with s2s and components you typically route one or more domains 
completely to the same desination. With c2s you only route single users 
out of a domain.



Matthias


Re: [Standards] NEW: XEP-0225 (Component Connections)

2007-08-09 Thread Peter Saint-Andre
Tomasz Sterna wrote:
> Dnia 08-08-2007, śro o godzinie 15:11 -0700, Justin Karneges napisał(a):
>> I vote not repeating this mistake.  This means 
>> no 'jabber:component' or such.  The choice should be between
>> 'jabber:client' 
>> and 'jabber:server' for the namespace.  Use a real attribute or
>> element to 
>> indicate component support.
> 
> +1

I don't have a strong preference really. A component feels a bit more
like a client because it is a local connection, plus c2s connections are
simpler than s2s connections. Let's pick one and be done with it. :)

/psa





smime.p7s
Description: S/MIME Cryptographic Signature


Re: [Standards] NEW: XEP-0225 (Component Connections)

2007-08-08 Thread Tomasz Sterna
Dnia 08-08-2007, śro o godzinie 15:11 -0700, Justin Karneges napisał(a):
> I vote not repeating this mistake.  This means 
> no 'jabber:component' or such.  The choice should be between
> 'jabber:client' 
> and 'jabber:server' for the namespace.  Use a real attribute or
> element to 
> indicate component support.

+1

-- 
Tomasz Sterna
Xiaoka Grp.  http://www.xiaoka.com/



Re: [Standards] NEW: XEP-0225 (Component Connections)

2007-08-08 Thread Justin Karneges
On Wednesday 08 August 2007 1:44 pm, Peter Saint-Andre wrote:
> XMPP Extensions Editor wrote:
> > Version 0.1 of XEP-0225 (Component Connections) has been released.
> >
> > Abstract: This document specifies a standards-track XMPP protocol
> > extension that enables server components to connect to XMPP servers.
>
> One of the items up for discussion is the default namespace for
> component connections. At the XMPP DevCon we thought that it would be
> good to use 'jabber:client', but I know that both Matthias Wimmer and
> Ralph Meijer have some arguments for 'jabber:server'. So perhaps we
> could have a debate about that. :)

For namespace-aware implementations, these multiple namespaces are a real 
pain.   and  have 
identical meaning: a body of a message.  Yet, namespace-aware implementations 
will consider these to be two distinct elements.  This affects the creating 
and parsing of all RFC 3920 and 3921 XML data.  You need to write code that 
understands both namespaces and can output under either namespace (depending 
on whether a stanza is going out on c2s or s2s).

In jabberd2, I believe all XML is internally handled in the jabber:client 
namespace.  I did the same thing in Ambrosia.  When a stanza arrives over 
s2s, I iterate over the DOM and change all namespace instances 
of 'jabber:server' to 'jabber:client' (note here that I'm not talking about 
xmlns attributes, but rather the namespace property of each DOM element).  
This allows me to reuse all of my existing stanza parsing and generation code 
based on a single namespace ('jabber:client').

Additionally, I think indicating support for a feature or connection type 
simply through a namespace declaration is weird.  A namespace declaration 
indicates what namespace child elements should be assigned to, when you 
actually have child elements.  By itself it doesn't have much meaning.  
Namespace declarations don't show up in DOM either (they do show up in SAX 
though, which is how I handle them).  I personally think it was a mistake to 
use namespace declarations to indicate c2s vs s2s, or to indicate dialback 
support, and so I vote not repeating this mistake.  This means 
no 'jabber:component' or such.  The choice should be between 'jabber:client' 
and 'jabber:server' for the namespace.  Use a real attribute or element to 
indicate component support.

-Justin


Re: [Standards] NEW: XEP-0225 (Component Connections)

2007-08-08 Thread Peter Saint-Andre
Rachel Blackman wrote:
> 
> On Aug 8, 2007, at 1:44 PM, Peter Saint-Andre wrote:
> 
>> XMPP Extensions Editor wrote:
>>> Version 0.1 of XEP-0225 (Component Connections) has been released.
>>>
>>> Abstract: This document specifies a standards-track XMPP protocol
>>> extension that enables server components to connect to XMPP servers.
>>
>> One of the items up for discussion is the default namespace for
>> component connections. At the XMPP DevCon we thought that it would be
>> good to use 'jabber:client', but I know that both Matthias Wimmer and
>> Ralph Meijer have some arguments for 'jabber:server'. So perhaps we
>> could have a debate about that. :)
> 
> It does not quite seem to fit into either.
> 
> I know it would be a real pain, but maybe this deserves its own
> namespace?  jabber:internal, perhaps?  Or jabber:service?

People seem to want to re-use an existing namespace. I tend to agree
with you, urn:xmpp:component seems like a good idea so that we don't
overload one of the existing namespaces. I'm especially concerned about
how the server would know whether to offer hostname binding and properly
authenticate the component if we re-use an existing default namespace.

/psa



smime.p7s
Description: S/MIME Cryptographic Signature


Re: [Standards] NEW: XEP-0225 (Component Connections)

2007-08-08 Thread Rachel Blackman


On Aug 8, 2007, at 1:44 PM, Peter Saint-Andre wrote:


XMPP Extensions Editor wrote:

Version 0.1 of XEP-0225 (Component Connections) has been released.

Abstract: This document specifies a standards-track XMPP protocol
extension that enables server components to connect to XMPP servers.


One of the items up for discussion is the default namespace for
component connections. At the XMPP DevCon we thought that it would be
good to use 'jabber:client', but I know that both Matthias Wimmer and
Ralph Meijer have some arguments for 'jabber:server'. So perhaps we
could have a debate about that. :)


It does not quite seem to fit into either.

I know it would be a real pain, but maybe this deserves its own  
namespace?  jabber:internal, perhaps?  Or jabber:service?


--
Rachel Blackman <[EMAIL PROTECTED]>
Trillian Messenger - http://www.trillianastra.com/




Re: [Standards] NEW: XEP-0225 (Component Connections)

2007-08-08 Thread Peter Saint-Andre
XMPP Extensions Editor wrote:
> Version 0.1 of XEP-0225 (Component Connections) has been released.
> 
> Abstract: This document specifies a standards-track XMPP protocol
> extension that enables server components to connect to XMPP servers.

One of the items up for discussion is the default namespace for
component connections. At the XMPP DevCon we thought that it would be
good to use 'jabber:client', but I know that both Matthias Wimmer and
Ralph Meijer have some arguments for 'jabber:server'. So perhaps we
could have a debate about that. :)

/psa


smime.p7s
Description: S/MIME Cryptographic Signature