[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: BEEP as OCP transport



again, speaking as the beep guy, not the co-chair:

> I share this experience in other protocols/areas. There are just to
> many variables to find a good fit between a general-purpose protocol
> library and a decent-size project. This is why I am also concerned
> with XML!
    
all i can say is that your perception about xml appears to be at
variance with my impression of a lot of other people's perceptions.
    
    
> ... if you already use C language, do not have performance or memory
> management problems with expat ways of doing things, and are OK with
> MIT license. This is actually what surprises me about the XML choice
> for BEEP Core -- its use is so limited that it is hard to justify!

see above.

    
> If somebody takes a shortcut in supporting the XML part of BEEP, it
> would be trivial to prove that their implementation is not OCP
> compliant by sending an "interesting" (difficult to parse but valid)
> XML element as a part of a channel management routine.

the xml subset used by beep makes that rather difficult.
    
    
> Thus, we would
> either have to close our eyes on this problem and test with simple XML
> elements only, or we would have to acknowledge that many (most?) OCP
> implementations are not really compliant. Not a nice choice.

i think it's a false choice. anyone who can wade through and understand
the opes specifications, will have no difficulty dealing with xml. let's
keep our perspective here.
    
    
> The same can be said about MIME, I guess. Most HTTP implementations
> fail to parse at least some "interesting" MIME-like headers
> (quotations, escapes, multiple lines via LWS, etc.). This is really
> unfortunate and does lead to compatibility problems long-term.
> 
> What do you think about documenting an even simpler XML subset and
> recommending (requiring?!) its use within OCP/BEEP? Would that help at
> all? Did you consider that option when designing BEEP?

no, because then you move out of the realm of widely-deployed
tools. that's why canonical xml is a bad thing: it requires the use of
special-purpose libraries.

    
    
> > > 	4. BEEP exchange styles are close fit, but not perfect
> > >
> > > 	   BEEP requires replies to every BEEP MSG. OCP does not.
> > > 	   We can add "null" replies, of course, but the
> > > 	   protocol does not need them (it would be a waste from
> > > 	   technical point of view).
> > > 	   Some might argue that mandatory replies will actually
> > > 	   make OCP easier to understand.
> >
> > the reason why MSG's get a response is because until you see the
> > response, you never know if the the MSG actually got to the other side
> > and got worked on. ultimately, it's the application, and not the
> > transport, that's responsible for things like that (cf., Clark, etc.).
> 
> Yes, that is why the always-respond restriction in BEEP seems out of
> place. Some applications (like OCP) do not care whether certain OCP
> messages are already being worked on (a pipeline model).

ok, do you care that they actually got there or not?

    
> > if you want to do some kind of streaming thing in OCP, you can look
> > at the way syslog reliable does it. darren came up with that and
> > it's fairly elegant.
> 
> Do you mean a stream of ANS frames, with optional in-frame aggregation
> of syslog messages? Aggregation aside, that seems like the only sane
> way to do "streaming" or "pipeline" with BEEP. I kept the same
> approach in mind when considering OCP over BEEP. Or are you talking
> about something else?

if you don't need an acknowledgement for each MSG, you can do what
reliable syslog does, wherein the server sends a MSG when the channel
opens, and the client sends back zero or more ANS in response.
    
/mtr