Re: [Standards] Proposed XMPP Extension: IO DATA

2008-04-07 Thread Peter Saint-Andre
Alexander Gnauck wrote:
> Artur Hefczyc schrieb:
>>
>> On 4 Apr 2008, at 12:05, Richard Smith wrote:
>> Johannes Wagener wrote:
>>> Proposed XMPP Extension: IO DATA
>> 
>>
>> I second this proposal.
> 
> I also second this proposal.
> 
> I have done lots of Jabber RPC stuff in the past. RPC is poorly
> documented and supports only basic data types.
> 
> Using this XEP its very easy to integrate XMPP in existing business
> applications without converting or mapping existing (xml)data to RPC or
> xdata.

Well, we seem to have a lot of interest in this proposal. :)

Johannes, could you send me updated XML sometime in the next week so
that I can put this on the agenda for the next Council meeting?

Thanks!

Peter

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



smime.p7s
Description: S/MIME Cryptographic Signature


Re: [Standards] Proposed XMPP Extension: IO DATA

2008-04-06 Thread Alexander Gnauck

Artur Hefczyc schrieb:


On 4 Apr 2008, at 12:05, Richard Smith wrote:
Johannes Wagener wrote:

Proposed XMPP Extension: IO DATA



I second this proposal.


I also second this proposal.

I have done lots of Jabber RPC stuff in the past. RPC is poorly 
documented and supports only basic data types.


Using this XEP its very easy to integrate XMPP in existing business 
applications without converting or mapping existing (xml)data to RPC or 
xdata.


Alex



Re: [Standards] Proposed XMPP Extension: IO DATA

2008-04-05 Thread Fabio Forno
On Sat, Apr 5, 2008 at 6:05 AM, Peter Saint-Andre <[EMAIL PROTECTED]> wrote:
>
>  Maybe we should change the title to "Web Services over XMPP"? :)

definetely

>  However, I suppose that when most people think of web services they
>  think of SOAP and the whole WS-* stack...

So let's teach them how to apply the real definition ;)

-- 
Fabio Forno, Ph.D.
Bluendo srl http://www.bluendo.com
jabber id: [EMAIL PROTECTED]


Re: [Standards] Proposed XMPP Extension: IO DATA

2008-04-04 Thread Peter Saint-Andre
Richard Smith wrote:
> Johannes Wagener wrote:
>> Proposed XMPP Extension: IO DATA
> 
> 
> +1
> 
> I'd like to endorse this proposal.
> 
> While AD-Hoc commands and Data Forms does offer a lot of flexibility, XMPP
> could benefit from extended capability in terms of representation of in
> terms of machine-to-machine communications that are outside of XMPP which is
> operating as a transport layer.
> 
> I would like to make a suggestion though.
> 
> I can see this proposal being used in my application framework where I have
> to ship lots of user interface specifications, SNMP information, accounting
> information and other stuff around the XMPP network. My current
> implementation is a hack on top of data-forms and various other namespace
> hacks. My only reservation is with the error conditions.
> 
> The proposal currently states that error conditions are handled according to
> the AD-Hoc commands which IMO is not sufficient.
> 
> Sure, sending a  element in response to a submission is
> possible, but it doesn't give the machine receiving this error any specific
> detail as to the nature of the problem, other than a string.
> 
> Would be nice if there was an  element that would specify a schema
> for errors possibly? I don't know...
> 
> Apologies if this doesn't make much sense, but it was written on the move...

Yes I think that makes a lot of sense. Given the limits on the number of
child elements allowed in  by the core XMPP spec, I think we'd
need to include the IO-specific conditions as children of the ad-hoc
commands errors.

Peter

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



smime.p7s
Description: S/MIME Cryptographic Signature


Re: [Standards] Proposed XMPP Extension: IO DATA

2008-04-04 Thread Peter Saint-Andre
Johannes Wagener wrote:
> Peter Saint-Andre schrieb:
>
>> Yes, ad-hoc commands can include payloads other than XEP-0004 data
>> forms. It's good to see someone using that extensibility.
>>
>> Just curious: did you look at XForms?
>>   
> I looked at XForms. XForms is primarily used for a form based data
> transmission while describing certain layers of abstraction. We thought
> that these abstractions are already too restrictive and are not required
> for a general usage. Though it is still possible to pass XForms in the
> data container of our XEP proposal without changing anything. all that
> would be advised is to publish a schema with the linking to the XForm
> Schema.

Heh, good point. :)

Peter

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



smime.p7s
Description: S/MIME Cryptographic Signature


Re: [Standards] Proposed XMPP Extension: IO DATA

2008-04-04 Thread Peter Saint-Andre
Ola Spjuth wrote:
> Hi,
> 
> I'd like to add our strong support to the "IO DATA" XEP proposal. I
> represent the Bioclipse project (www.bioclipse.net) providing a
> workbench for life science that currently relies heavily on SOAP Web
> services for remote execution of jobs. The biggest problem for us is
> long lasting calls, as many of the calculations in life science are
> computationally expensive and we have had big problems with asynchronous
> calls over SOAP. This XEP looks very promising, and I think it could
> bring several long-desired features that have been requested by our
> users, such as stable long-running jobs and service-discovery.

Thanks for weighing in.

>  In my opinion, Bioclipse will be an excellent showcase for XMPP-based
> Web services, and we will continue to support this technology in the
> future.

Maybe we should change the title to "Web Services over XMPP"? :)
However, I suppose that when most people think of web services they
think of SOAP and the whole WS-* stack...

Peter

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



smime.p7s
Description: S/MIME Cryptographic Signature


Re: [Standards] Proposed XMPP Extension: IO DATA

2008-04-04 Thread Peter Saint-Andre
Luis Peralta wrote:

>Overall I like this XEP. What I missed are more possible status
>  values for the commands. Being in execution and completed is way too
>  simple for some applications. The initial state after submitting a
>  command would be 'accepted' and letting the client know that  it is in
>  fact sending commands to a batch service. IMO, the state diagram
>  should something like: accepted -> executing -> completed, even if in
>  the current spec 'executing' means both things.

Is this at the XEP-50 level or the IO-Data level?

>I would also explicitly refer the possibility of canceling a
> running command by using xep-50 'cancel' action.

Agreed.

Peter

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



smime.p7s
Description: S/MIME Cryptographic Signature


Re: [Standards] Proposed XMPP Extension: IO DATA

2008-04-04 Thread Fabio Forno
On Fri, Apr 4, 2008 at 5:35 PM, Luis Peralta <[EMAIL PROTECTED]> wrote:
>
>Overall I like this XEP. What I missed are more possible status
>   values for the commands. Being in execution and completed is way too
>   simple for some applications. The initial state after submitting a
>   command would be 'accepted' and letting the client know that  it is in
>   fact sending commands to a batch service. IMO, the state diagram
>   should something like: accepted -> executing -> completed, even if in
>   the current spec 'executing' means both things.
>
>I would also explicitly refer the possibility of canceling a
>  running command by using xep-50 'cancel' action.
>
>   +1 for this XEP.

I think that we can reach what you say by allowing any value in the
type attribute of the x child

-- 
Fabio Forno, Ph.D.
Bluendo srl http://www.bluendo.com
jabber id: [EMAIL PROTECTED]


Re: [Standards] Proposed XMPP Extension: IO DATA

2008-04-04 Thread Fabio Forno
On Sun, Mar 30, 2008 at 10:59 PM, Johannes Wagener
<[EMAIL PROTECTED]> wrote:

>  Indeed. If you read the xep you might see that the XEP is very much the
>  same as you suggest here. Ad-Hoc Commands do also support several
>  actions: For example execute/next/prev/cancel/complete are actions
>  supported by Ad-Hoc Commands. We think that this facilitates everything
>  that is required to completely manage/control a remote process. As I
>  already mentioned our approach is a very general one. The specs in the
>  XEP is that open that it is of course possible to do what you suggest,
>  for example see section 4.2 for getting the schemata. See 4.3 for
>  sending data.

Indeed for M2M I'm concerned about the lack of extensibility of the
actions of ad hoc commands, since they their only purpose is
describing the which is the next step required for performing an
operation, while they don't say anything about which kind of operation
we are doing on a node. The type of the the
http://xmpp.org/protocol/io-data child tries to fix this limitation
with some possible meanings of the command: input/output/get-schemata,
but it still uses a fixed vocabulary. Perhaps if you just allow any
value for type attribute we reach full flexibility and equivalence
with REST.

> >
>  Yes, that's why the XEP uses Ad-Hoc Commands. Because it has already a
>  session concept as you suggest here. In addition to this it is a widely
>  supported XEP, we think that - with the very generic io data container
>  in our specs - it is a friendly way to also support machine2machine
>  parseable/readable and especially marshal-able services with it. As I
>  already mentioned our approach is a very general one. The specs in the
>  XEP is that open that it is of course possible to do what you suggest
>  here: for example doing it in an asynchronous way there is the sessionid
>  of Ad-Hoc Commands - especially Examples in section 4.4 and 4.2.

I'd let the application decide which is the best way to handle the
session. For example there are session associated with a previous
authentication process and applied to different nodes, or sessions
lasting for ever, even after the restart of the service. The
session-id of ad hoc commands is limited from this point of view.
However it's not written anywhere that that's the only session-id we
can use, and this - I think - keeps the necessary extensibility for
session handling. For example the app could get an auth token logging
to a given node, and then add the token to the payload of different
commands to different nodes. I'd add an example about this to the XEP,
just for showing the the concept of session is not limited to the
ad-hoc commands scope.

Finally I think that the  and  children are unnecessary in
commands of type input and output, but that's just a minor adjustment.

If you agree with these two observations, I'm absolutely fine with the
XEP (I even think that it could be a better way for transporting SOAP
itself)

bye

-- 
Fabio Forno, Ph.D.
Bluendo srl http://www.bluendo.com
jabber id: [EMAIL PROTECTED]


Re: [Standards] Proposed XMPP Extension: IO DATA

2008-04-04 Thread Artur Hefczyc


On 4 Apr 2008, at 12:05, Richard Smith wrote:
Johannes Wagener wrote:

Proposed XMPP Extension: IO DATA



I second this proposal.

I've read this XEP and I love it.

This is exactly what I needed when I was working on the server  
configuration

via XMPP.  I decided to use ad-hoc commands because that was the best
available way to do it. But I really struggled with conversion data  
between

string and other types.

Using this XEP would be much, much more efficient and easier to  
implement
as I could just skip all types conversion stuff and detecting/ 
remembering

what type apply to which configuration parameter.

I second this XEP as an official XMPP XEP :-)

Artur
--
Artur Hefczyc
http://www.tigase.org/
http://artur.hefczyc.net/



Re: [Standards] Proposed XMPP Extension: IO DATA

2008-04-04 Thread Sami Haahtinen
On Sun, 2008-03-30 at 01:16 +0100, Johannes Wagener wrote:
> Further explanation comes here:
> We want to do dynamic Web Services over XMPP. For certain reasons we 
> explain in the XEP we think neither SOAP over XMPP nor Jabber-RPC is
> the way to go. We think future asynchronous Web Services can be best 
> implemented with the session based Ad-Hoc Commands XEP-0050.

I can easily see the need for such a protocol. Looking at Data Forms in
there is no real way of transporting XML data. There are quite a few
applications that can make better use of transporting XML with Ad-Hoc
commands instead of resorting to complex things like SOAP and the rest.

In general, lot of the things that hover around xmpp are more geared
towards the IM side of xmpp, while there are kinds of needs too.
Addressing the need to do Ad-Hoc command with program data is a good
thing.

Regards, 
  Sami




Re: [Standards] Proposed XMPP Extension: IO DATA

2008-04-04 Thread Luis Peralta
2008/3/30, Johannes Wagener <[EMAIL PROTECTED]>:
> Proposed XMPP Extension: IO DATA
>
>  Hello,
>  here I submit a proposal for a new XEP called "IO DATA".
>

Hi,

   Overall I like this XEP. What I missed are more possible status
 values for the commands. Being in execution and completed is way too
 simple for some applications. The initial state after submitting a
 command would be 'accepted' and letting the client know that  it is in
 fact sending commands to a batch service. IMO, the state diagram
 should something like: accepted -> executing -> completed, even if in
 the current spec 'executing' means both things.

   I would also explicitly refer the possibility of canceling a
running command by using xep-50 'cancel' action.

  +1 for this XEP.

  Regards,
-- 
http://www.ziritione.org


Re: [Standards] Proposed XMPP Extension: IO DATA

2008-04-04 Thread Richard Smith
Johannes Wagener wrote:
> Proposed XMPP Extension: IO DATA


+1

I'd like to endorse this proposal.

While AD-Hoc commands and Data Forms does offer a lot of flexibility, XMPP
could benefit from extended capability in terms of representation of in
terms of machine-to-machine communications that are outside of XMPP which is
operating as a transport layer.

I would like to make a suggestion though.

I can see this proposal being used in my application framework where I have
to ship lots of user interface specifications, SNMP information, accounting
information and other stuff around the XMPP network. My current
implementation is a hack on top of data-forms and various other namespace
hacks. My only reservation is with the error conditions.

The proposal currently states that error conditions are handled according to
the AD-Hoc commands which IMO is not sufficient.

Sure, sending a  element in response to a submission is
possible, but it doesn't give the machine receiving this error any specific
detail as to the nature of the problem, other than a string.

Would be nice if there was an  element that would specify a schema
for errors possibly? I don't know...

Apologies if this doesn't make much sense, but it was written on the move...

-- 
Richard


Re: [Standards] Proposed XMPP Extension: IO DATA

2008-04-03 Thread Johannes Wagener

Peter Saint-Andre schrieb:

Johannes Wagener wrote:
  

Proposed XMPP Extension: IO DATA

Hello,
here I submit a proposal for a new XEP called "IO DATA".

The XEP is already located in the XEP inbox directory:
 URL: http://www.xmpp.org/extensions/inbox/io-data.html

However, the initial version is erroneously missing some namespaces in
the examples, therefore we append the current fixed version as PDF to
the mail directly to the standards mailing list.



Feel free to send updated versions to me and I'll update that URL.
  
Yes, I will do so this weekend. I will have fixed the issues I got 
pointed to within the discussion...
  

Abstract: This specification defines an XMPP protocol extension for
handling the input to and output from a remote entity.

Further explanation comes here:
We want to do dynamic Web Services over XMPP. For certain reasons we
explain in the XEP we think neither SOAP over XMPP nor Jabber-RPC is the
way to go. We think future asynchronous Web Services can be best
implemented with the session based Ad-Hoc Commands XEP-0050.

Thus, and as already suggested in Ad-Hoc Commands we describe an
alternative data container IO DATA that can transport more complex data
than Data Forms. The specification describes a way to discover the
Schemata of the IO DATA input and output at runtime, too. Thus a client
implementation can dynamically marshal an API for the input and output
of a certain service.



Yes, ad-hoc commands can include payloads other than XEP-0004 data
forms. It's good to see someone using that extensibility.

Just curious: did you look at XForms?
  
I looked at XForms. XForms is primarily used for a form based data 
transmission while describing certain layers of abstraction. We thought 
that these abstractions are already too restrictive and are not required 
for a general usage. Though it is still possible to pass XForms in the 
data container of our XEP proposal without changing anything. all that 
would be advised is to publish a schema with the linking to the XForm 
Schema.


Re: [Standards] Proposed XMPP Extension: IO DATA

2008-03-31 Thread Johannes Wagener

Hi

Peter Saint-Andre schrieb:

Do you send it all through XMPP? Is it all in small chunks as in the
examples you wrote, ore there may be also bigger chunks of data? I'm
asking because I think that everybody here would like to know more
about real life examples of binary data transfer through XMPP. Keep us
informed about the performance and the setup you use.



Good question. Typically I think that computational processes might want
to include binary blobs. The question is how best to do that -- e.g., a
 element per XEP-0231 or a reference to a URI where the data can
be retrieved via HTTP or FTP or XMPP or whatever.
Yes, that's true: many real life examples will have to transport binary 
data somehow. In fact one of the Examples in the xep proposal (in 
section 4.4) makes use of XEP-0231 (encrypting a wav file into an mp3 file).
But as XML is very flexible itself we can think about various legal ways 
of passing data via the stream. For example it might be possible to make 
use of XEP-0065 SOCKS5 Bytestream or maybe reference data via HTTP/FTP. 
Initially we thought about specifying this, but then we thought, that 
there is already enough flexibility coming with XML. It is possible for 
the client to discover the io schemata of the ad hoc service io data 
container. These schemata can hint to the way of data transfer (for 
example namespace forXEP 0231) compatible with the service. Example: 4.2 
Plenty options here. 


Re: [Standards] Proposed XMPP Extension: IO DATA

2008-03-30 Thread Peter Saint-Andre
Johannes Wagener wrote:
> Proposed XMPP Extension: IO DATA
> 
> Hello,
> here I submit a proposal for a new XEP called "IO DATA".
> 
> The XEP is already located in the XEP inbox directory:
>  URL: http://www.xmpp.org/extensions/inbox/io-data.html
> 
> However, the initial version is erroneously missing some namespaces in
> the examples, therefore we append the current fixed version as PDF to
> the mail directly to the standards mailing list.

Feel free to send updated versions to me and I'll update that URL.

> Abstract: This specification defines an XMPP protocol extension for
> handling the input to and output from a remote entity.
> 
> Further explanation comes here:
> We want to do dynamic Web Services over XMPP. For certain reasons we
> explain in the XEP we think neither SOAP over XMPP nor Jabber-RPC is the
> way to go. We think future asynchronous Web Services can be best
> implemented with the session based Ad-Hoc Commands XEP-0050.
> 
> Thus, and as already suggested in Ad-Hoc Commands we describe an
> alternative data container IO DATA that can transport more complex data
> than Data Forms. The specification describes a way to discover the
> Schemata of the IO DATA input and output at runtime, too. Thus a client
> implementation can dynamically marshal an API for the input and output
> of a certain service.

Yes, ad-hoc commands can include payloads other than XEP-0004 data
forms. It's good to see someone using that extensibility.

Just curious: did you look at XForms?

Peter

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



smime.p7s
Description: S/MIME Cryptographic Signature


Re: [Standards] Proposed XMPP Extension: IO DATA

2008-03-30 Thread Peter Saint-Andre
Fabio Forno wrote:
> (I crosspost  this to the API mailing list, because I think that this
> problem is another use case of  the more general problem of p2p
> communication between applications we are discussing; in the API ml we
> can brainstorm better)
> 
> On Sun, Mar 30, 2008 at 8:38 PM, Egon Willighagen
> <[EMAIL PROTECTED]> wrote:
> 
>>  BTW, let me say that asynchronous RPC support in XMPP is very
>>  interesting for scientific workflow environments. This proposal
>>  addresses two problems which are important limitations of current
>>  approaches like SOAP over HTTP.
> 
> Indeed, it's interesting in general ;)
> 
>>  1. many different data types. This is particularly a problem in
> [...]
>>  2. asynchronise calls. This is also a big limitation of our current
>>  tools. Call-by-reference does solve the problem of HTTP time  outs on
> [...]
>>  These two items combined, make this proposal an excellent candidate
>>  for running webservices in sciences like chemistry and biology.
> 
> I understand the scenario, as I've written it's more general than
> scientific or biological computations (e.g send the input events from
> a UI widget placed somewhere to a remote service). Basically you'd
> like to do something like this:
> - retrieve a data scheme from an end point
> - send data to that end point
> - receive (also asynchronously) data from that end point
> 
> Let's try to RESTify it in order to have a more general solution:

What is the particular benefit here of having a RESTful interface?

In particular, do you think that we need to reference each action via a
URI? Such as:

xmpp:compute.example.com?io;node=foo;action=get;data=schema

> - retrieving the data scheme is an operation on a particular node (a
> GET), so we don't need a particular action, just get it from the
> correct node, e.g. GET /nodename/schemata
> 
> 

I think you meant type='get' :)

> 
> 

It might be good to separately specify the node and the data type (in
this case, the schema).

> - sending data is another operation on the node (the semantics of the
> operation on the data is given by the combination of the data and the
> node): POST /nodename payload
> 
> 
> 
>   
>   
> 
> 
> 
> - receiving the result depends on whether the operation is synchronous
> or not. If synchronous it's just the payload of the answer, and we can
> correlate them using the id in the  stanza.  If asynchronous the
> service should create a session on the client, by adding the session
> id to the headers of the subsequent asynchronous messages (this
> mechanism is application defined, other applications may create a
> specialized node or use other strategies for handling sessions)
> 
> 
> 
>   
>   
>   
> 
> 
> 
> Well, this is just a first attempt to brainstorm... The structure is
> much like HTTP, where we have actions, headers (for carrying optional
> metadata concerning the document) and the exchanged document, with all
> the semantics left to the application. In this way we have the same
> expressiveness of HTTP, with the advantage of a bidirectional
> asynchronous support as XMPP.
> 
>>  I am not too much into XMPP myself, but hope the discussions on this
>>  mailing list will help us get the proposal in shape, because we really
>>  like to see this functionality. The example code from Johannes looks
>>  great, and eager to start using it. We are setting up webservices for
>>  metabolomics, where the data that needs to be passed around goes in
>>  the gigabytes, and where processing easily goes into the tens of
>>  minutes.
> 
> Do you send it all through XMPP? Is it all in small chunks as in the
> examples you wrote, ore there may be also bigger chunks of data? I'm
> asking because I think that everybody here would like to know more
> about real life examples of binary data transfer through XMPP. Keep us
> informed about the performance and the setup you use.

Good question. Typically I think that computational processes might want
to include binary blobs. The question is how best to do that -- e.g., a
 element per XEP-0231 or a reference to a URI where the data can
be retrieved via HTTP or FTP or XMPP or whatever.

Peter

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



smime.p7s
Description: S/MIME Cryptographic Signature


Re: [Standards] Proposed XMPP Extension: IO DATA

2008-03-30 Thread Tobias Markmann
On Sun, Mar 30, 2008 at 2:16 AM, Johannes Wagener
<[EMAIL PROTECTED]> wrote:
>
> Proposed XMPP Extension: IO DATA
>
>  Hello,
>  here I submit a proposal for a new XEP called "IO DATA".
>
>  The XEP is already located in the XEP inbox directory:
>   URL: http://www.xmpp.org/extensions/inbox/io-data.html
>
>  However, the initial version is erroneously missing some namespaces in
>  the examples, therefore we append the current fixed version as PDF to
>  the mail directly to the standards mailing list.
>
>  Abstract: This specification defines an XMPP protocol extension for
>  handling the input to and output from a remote entity.
>
>  Further explanation comes here:
>  We want to do dynamic Web Services over XMPP. For certain reasons we
>  explain in the XEP we think neither SOAP over XMPP nor Jabber-RPC is the
>  way to go. We think future asynchronous Web Services can be best
>  implemented with the session based Ad-Hoc Commands XEP-0050.
>
>  Thus, and as already suggested in Ad-Hoc Commands we describe an
>  alternative data container IO DATA that can transport more complex data
>  than Data Forms. The specification describes a way to discover the
>  Schemata of the IO DATA input and output at runtime, too. Thus a client
>  implementation can dynamically marshal an API for the input and output
>  of a certain service.
>
>  Johannes
>

+1
This data container is really useful for a lot applications. Through
my development of the Data Form Designer Suite for XMPP I've learned a
lot about x-data and ad-hoc enhancement proposals. This showed me that
ad-hoc commands which aren't emitted by humans might not need the
overhead of static forms and structure. That's why this XEP is useful
for all future machine-to-machine application and will largely ease
development of them.
Best of all there is already a working implementation so the concept
has been more than proven.

Cheers
Tobias


Re: [Standards] Proposed XMPP Extension: IO DATA

2008-03-30 Thread Johannes Wagener

Dear Fabio, thank you for your comment/clarification about the term "REST".

Fabio Forno schrieb:

While it's true that in SOAP+XMPP specs there is no asynchronous
message exchange pattern (and that was a mistake, though I think it's
possible to add a new MEP), this is not related to REST. Neither the
concept of session id is somewhat related to REST, at the contrary,
REST explicitly forbids things like session ids. The basic principles
of REST in fact are:
  
Sorry for causing confusion with this term. In conclusion we - as egon 
already mentioned we will use another term and fix the sentences where 
"RESTful" term was used.


Johannes


Re: [Standards] Proposed XMPP Extension: IO DATA

2008-03-30 Thread Johannes Wagener

Fabio Forno schrieb:

 BTW, let me say that asynchronous RPC support in XMPP is very
 interesting for scientific workflow environments. This proposal
 addresses two problems which are important limitations of current
 approaches like SOAP over HTTP.



Indeed, it's interesting in general ;)
  
I think so, too. Therefore as our protocol is a very general approach we 
sent the specs to the standards mailing list. It's worth to note that we 
already wrote an opensource client and component side library for this 
protocol to be used from java or scripting languages to 
discover/invoke/manage (start/cancel/continue/complete) remote 
processes. The sample code in the section 1.3 of the XEP proposal is 
very similar to how it is actually implemented. We hope that other 
libraries will have interest in the protocol in future, too.

 1. many different data types. This is particularly a problem in


[...]
  

 2. asynchronise calls. This is also a big limitation of our current
 tools. Call-by-reference does solve the problem of HTTP time  outs on


[...]
  

 These two items combined, make this proposal an excellent candidate
 for running webservices in sciences like chemistry and biology.


I understand the scenario, as I've written it's more general than
scientific or biological computations (e.g send the input events from
a UI widget placed somewhere to a remote service). Basically you'd
like to do something like this:
- retrieve a data scheme from an end point
- send data to that end point
- receive (also asynchronously) data from that end point

Let's try to RESTify it in order to have a more general solution:
- retrieving the data scheme is an operation on a particular node (a
GET), so we don't need a particular action, just get it from the
correct node, e.g. GET /nodename/schemata





- sending data is another operation on the node (the semantics of the
operation on the data is given by the combination of the data and the
node): POST /nodename payload



  
  


  
Indeed. If you read the xep you might see that the XEP is very much the 
same as you suggest here. Ad-Hoc Commands do also support several 
actions: For example execute/next/prev/cancel/complete are actions 
supported by Ad-Hoc Commands. We think that this facilitates everything 
that is required to completely manage/control a remote process. As I 
already mentioned our approach is a very general one. The specs in the 
XEP is that open that it is of course possible to do what you suggest, 
for example see section 4.2 for getting the schemata. See 4.3 for 
sending data.

- receiving the result depends on whether the operation is synchronous
or not. If synchronous it's just the payload of the answer, and we can
correlate them using the id in the  stanza.  

Exactly. That's how we do it.

If asynchronous the
service should create a session on the client, by adding the session
id to the headers of the subsequent asynchronous messages (this
mechanism is application defined, other applications may create a
specialized node or use other strategies for handling sessions)
  
Yes, that's why the XEP uses Ad-Hoc Commands. Because it has already a 
session concept as you suggest here. In addition to this it is a widely 
supported XEP, we think that - with the very generic io data container 
in our specs - it is a friendly way to also support machine2machine 
parseable/readable and especially marshal-able services with it. As I 
already mentioned our approach is a very general one. The specs in the 
XEP is that open that it is of course possible to do what you suggest 
here: for example doing it in an asynchronous way there is the sessionid 
of Ad-Hoc Commands - especially Examples in section 4.4 and 4.2.



 I am aware that we continue the unofficial extension of Edrin, but
 having this as an official XEP will make it much easier to roll out
 XMPP-based webservices on a larger scale.

 Looking forward to hearing further comments!



sure

bye

  

Thank you for your comments




Re: [Standards] Proposed XMPP Extension: IO DATA

2008-03-30 Thread Fabio Forno
(I crosspost  this to the API mailing list, because I think that this
problem is another use case of  the more general problem of p2p
communication between applications we are discussing; in the API ml we
can brainstorm better)

On Sun, Mar 30, 2008 at 8:38 PM, Egon Willighagen
<[EMAIL PROTECTED]> wrote:

>  BTW, let me say that asynchronous RPC support in XMPP is very
>  interesting for scientific workflow environments. This proposal
>  addresses two problems which are important limitations of current
>  approaches like SOAP over HTTP.

Indeed, it's interesting in general ;)

>  1. many different data types. This is particularly a problem in
[...]
>  2. asynchronise calls. This is also a big limitation of our current
>  tools. Call-by-reference does solve the problem of HTTP time  outs on
[...]
>  These two items combined, make this proposal an excellent candidate
>  for running webservices in sciences like chemistry and biology.

I understand the scenario, as I've written it's more general than
scientific or biological computations (e.g send the input events from
a UI widget placed somewhere to a remote service). Basically you'd
like to do something like this:
- retrieve a data scheme from an end point
- send data to that end point
- receive (also asynchronously) data from that end point

Let's try to RESTify it in order to have a more general solution:
- retrieving the data scheme is an operation on a particular node (a
GET), so we don't need a particular action, just get it from the
correct node, e.g. GET /nodename/schemata





- sending data is another operation on the node (the semantics of the
operation on the data is given by the combination of the data and the
node): POST /nodename payload



  
  



- receiving the result depends on whether the operation is synchronous
or not. If synchronous it's just the payload of the answer, and we can
correlate them using the id in the  stanza.  If asynchronous the
service should create a session on the client, by adding the session
id to the headers of the subsequent asynchronous messages (this
mechanism is application defined, other applications may create a
specialized node or use other strategies for handling sessions)



  
  
  



Well, this is just a first attempt to brainstorm... The structure is
much like HTTP, where we have actions, headers (for carrying optional
metadata concerning the document) and the exchanged document, with all
the semantics left to the application. In this way we have the same
expressiveness of HTTP, with the advantage of a bidirectional
asynchronous support as XMPP.

>  I am not too much into XMPP myself, but hope the discussions on this
>  mailing list will help us get the proposal in shape, because we really
>  like to see this functionality. The example code from Johannes looks
>  great, and eager to start using it. We are setting up webservices for
>  metabolomics, where the data that needs to be passed around goes in
>  the gigabytes, and where processing easily goes into the tens of
>  minutes.

Do you send it all through XMPP? Is it all in small chunks as in the
examples you wrote, ore there may be also bigger chunks of data? I'm
asking because I think that everybody here would like to know more
about real life examples of binary data transfer through XMPP. Keep us
informed about the performance and the setup you use.

>  I am aware that we continue the unofficial extension of Edrin, but
>  having this as an official XEP will make it much easier to roll out
>  XMPP-based webservices on a larger scale.
>
>  Looking forward to hearing further comments!

sure

bye

-- 
Fabio Forno, Ph.D.
Bluendo srl http://www.bluendo.com
jabber id: [EMAIL PROTECTED]


Re: [Standards] Proposed XMPP Extension: IO DATA

2008-03-30 Thread Egon Willighagen
On Sun, Mar 30, 2008 at 7:09 PM, Fabio Forno <[EMAIL PROTECTED]> wrote:
>  While it's true that in SOAP+XMPP specs there is no asynchronous
>  message exchange pattern (and that was a mistake, though I think it's
>  possible to add a new MEP), this is not related to REST. Neither the
>  concept of session id is somewhat related to REST, at the contrary,
>  REST explicitly forbids things like session ids.

Fabio,

thank you for catching this misqualification. We'll fix this shortly.

BTW, let me say that asynchronous RPC support in XMPP is very
interesting for scientific workflow environments. This proposal
addresses two problems which are important limitations of current
approaches like SOAP over HTTP.

1. many different data types. This is particularly a problem in
(bio-)chemical sciences, where experimental data is found in many,
many data types, which, moreover, are increasingly semantic.
Currently, SOAP often cannot validate input unless the call has been
made, while this proposal promises to allow to do this at the gate.
Big improvement.

2. asynchronise calls. This is also a big limitation of our current
tools. Call-by-reference does solve the problem of HTTP time  outs on
intermediate IP packet routers, but the only way to do long running
jobs is to have the client use a second 'service' to poll the primary
service and ask if it is done yet. XMPP is provides a much nicer
protocol for such situations, and this proposal formalizes this.

These two items combined, make this proposal an excellent candidate
for running webservices in sciences like chemistry and biology.

I am not too much into XMPP myself, but hope the discussions on this
mailing list will help us get the proposal in shape, because we really
like to see this functionality. The example code from Johannes looks
great, and eager to start using it. We are setting up webservices for
metabolomics, where the data that needs to be passed around goes in
the gigabytes, and where processing easily goes into the tens of
minutes.

I am aware that we continue the unofficial extension of Edrin, but
having this as an official XEP will make it much easier to roll out
XMPP-based webservices on a larger scale.

Looking forward to hearing further comments!

Egon

-- 

Post-doc in Metabolomics
Wageningen Universtity & Research Center, The Netherlands
http://chem-bla-ics.blogspot.com/


Re: [Standards] Proposed XMPP Extension: IO DATA

2008-03-30 Thread Fabio Forno
On Sun, Mar 30, 2008 at 2:16 AM, Johannes Wagener
<[EMAIL PROTECTED]> wrote:
> Proposed XMPP Extension: IO DATA
>
>
>  Abstract: This specification defines an XMPP protocol extension for
>  handling the input to and output from a remote entity.
>

Some remarks.
You write "While SOAP over XMPP supports complex functionality it
lacks an obvious mechanism for asynchronous usage (for example it has
no default RESTful design: there is no sessionid like in Ad-Hoc
Commands)."
While it's true that in SOAP+XMPP specs there is no asynchronous
message exchange pattern (and that was a mistake, though I think it's
possible to add a new MEP), this is not related to REST. Neither the
concept of session id is somewhat related to REST, at the contrary,
REST explicitly forbids things like session ids. The basic principles
of REST in fact are:
- being able to address "resources" with URIs;  since ad hoc commands
end points nodes, whose URI may be
xmpp:[EMAIL PROTECTED]/resource;node=nodename (if I remember well),
they are RESTful in this aspect
- be able to do actions (verbs like post/get/delete/put) on that
resources; in this ad hoc commands are not RESTful, since they don't
define a real action, they just provide a generic "execute"
- stateless operations, and state or sessions are intentionally left
out from REST, since they are too much application dependent; ad hoc
commands have just a limited "session" concept, which is a sequence of
operations forming a wizard with a start and an end. However
applications may have different concepts of sessions, such as all
operation between a login and logout, on a given resource or on a set
of resources, or all operations in period of time; these are all
concepts more complex than the model provided by ad hoc commands. For
this reason I'd leave the responsibility of handling a session to the
application, which should find a way for passing state information
among requests as cookies or other mechanisms in HTTP.

bye

-- 
Fabio Forno, Ph.D.
Bluendo srl http://www.bluendo.com
jabber id: [EMAIL PROTECTED]