El Viernes 05 Marzo 2010, Laurent Etiemble escribió: > Hello, > > The <entry-ref/> and <external/> elements serves different purposes:
> - <entry-ref/> is used to reference an <entry/> element. Yes right, I missed that point and thought that it could also point to a <list> (within the same xcap-root). Thanks. > 3.1). This way, the same <entry/> element can appear at different places by > reference and be defined in one place. The reference is relative as the > document and the reference share the same XCAP root. > - <external/> is used to reference a whole <list/> element.The list can be > defined in another document but it can also be placed on another server > (RFC 4826 Para. 3.1). This way, composite list can be constructed (as > defined in OMA and RCS). The anchor is absolute as the anchor can be an > another server. Thanks a lot for the clarification. Anyhow, after implementing a complete XDMS server and all the XCAP protocol and applications I can sure something: XCAP resource-lists application is the worst design in the world. Just a big pain. I really cannot understand how such specification can be token by OMA/RCS. The whole XCAP protocol and applications should be deleted from the IETF documents, as they just are valid to show very complex and unfeasible flow diagrams: http://oversip.net/public/SIP_SIMPLE_OMA.jpeg Also, there is no a real specification about how should the presence server *subscribe* to *all* the XCAP document modifications under the users tree. For sure, vendors will use a proprietary mechanism between their presence servers and XCAP servers. Great. > Moreover: > - In OMA and RCS, it is common to use <external/> to build aggregate groups > ("oma_grantedcontacts" contains "oma_buddylist", which contains > "oma_pocbuddylist", etc). And those resource-lists documents look really ugly, containing absolute links referencing to other absolute links referencing to a list in the document. Finally RCS resource-lists document format/guidelines is a big hack, but a dirty hack is the only solution when using such painful specification (RFC 4826). A document format must be *easy* to implement and parse, and must allow easy interoperability. resource-lists format doesn't fit such requirements at all. OMA guidelines for resource-lists are still a pain, something fully unusable (if not, take a look to OMA pres/xdm guidelines documents and let me know if you understand something there and can code two interoperable implementations). So RCS has done a hack-over-hack design to get something "usable", but a hack anyway, containing absolute <external> references pointing to other absolute <external> references within the same document, and so on. Also, moving a contact from the buddy list to the blocked list involves two XCAP partial operations (entry DELETE and entry PUT). So the XCAP server must notify these changes to the presence server which must get the XCAP document (twice) and recompute *all* the pres-rules (and other permission documents using shared list) twice again. The most inefficient and unclear mechanism I've ever seen. And also, the meaning of a <list> is completely unclear/broken/confused in RFC 4826. Should such list mean something as "my golf friend"? or shall it mean something as "blocked contacts"? What about if I want a contact in two groups ("friends" and "work")? or what about if I want to block a user but keep him within the "friends" group? This is *easily* implementable in XMPP and any other good IM/presence protocol, as <group> is a property of each buddy/contact, instead of having groups/lists containing contacts. So it's easy a buddy to have various <group> elements. Also, being blocked or not is also a property within each buddy/contact, rather than having buddies distributed in "allowed"/"blocked" lists (in fact they are <lists> referenced by other list referenced by other lists.... a chaos). There is a lot to learn from XMPP in terms of IM/presence, I cannot understand with IETF has chosen a completely different design (and *much* worse) for SIP/SIMPLE. Nobody wants it! > - It is common that anchors in <external/> elements reference the XDM > aggregation server XCAP root, which hides on which server the anchored > <list/> is stored. This adds a level of indirection that help hide real XDM > topology. Again, this is a pain. Why should the xcap server domain (or aggregation proxy domain) be present into the documents? what about if the domain must be changed? or what about if the provider changes from http to https? then all the documents would get invalid as they contain absolute URI's. Why should the client be aware of the exact server (or domain) in which the document is stored? This is a really bad design. And the main question: did the author of XCAP protocol and its RFC applications take a look to XMPP specification? For sure: no. He preferred to build a painful/abstract/undefined protocol from scratch (based on Xpath 1.0 but not compatible with Xpath1.0 due to the painful "auid default namespace" which makes any Xpath1.0 existing library not valid to work with XCAP). Nobody chooses SIMPLE for IM/presence in the 2.0 world, nobody (Facebook, Google... all choose XMPP, of course). I'd really would like to know if IETF- SIMPLE work-group cares it. Perhaps they are already happy having telcos/operators trying to make such abominable specifications to run into their private IP networks, so far from Internet. Is this the main target of the SIMPLE group and protocols? ok, goodbye then. As I said, after coding a complete XCAP/XDM server (and client) implementing the full XCAP protocol and OMA/XDM applications (so I *do* know what I'm speaking about), I leave this world of pain forever. I would like to send also this mail to IETF-SIMPLE maillist, but there the only important subject is creating a new version of the hyperpainful xcap-diff draft. No real activity, no real interest in SIP presence/IM at all. In the other hand I don't want just to complain without providing an alternative, so I'll write my own specifications for *easy* and *effective* presence in SIP, so far from XCAP protocol and painful flows. It will be based on a single subscription dialog for event "buddies", so creating a new buddy means a PUBLISH with body like: <buddies> <!-- Adding a new buddy --> <buddy uri="sip:al...@domain.org"> <!-- allow the buddy to contact us by call/IM and see our status --> <permissions> <allow-pres/> <allow-call/> <allow-im/> </permissions> <!-- instruct the presence server that we can see the buddy status --> <pres-watched/> <!-- which groups this buddy belongs to --> <groups> <group>My Friends</group> <group>Co-workers</group> </groups> <!-- data for this user provided by us --> <static-data> <display-name>Alice</display-name> <address>lalalala 1234</address> ... </static-data> </buddy> </buddies> The presence server will store this buddy into a database after extracting some useful data as <permissions> and <pres-watched>, so these fields can be a real column into the table row, allowing *fast* and efficient searching. Then the client sends a SUBSCRIBE for "Event: buddies", this means that the presence server will compute all the user buddies for which <pres-watched/> is present, so no need to subscribe to each watcher, and really simpler than the complex and dangerous rls-service subscription. Then to publish the user presence status, the client would send a new PUBLISH "Event: buddies" with body like this: <buddies> <!-- publish my entire presence status for resource "home" --> <!-- there could me more resource publishing presence status --> <me type=full resource="home"> <display-name>Iñaki</display-name> <status><online/><status> <avatar> <format>png</format> <height>100</height> <wegiht>100</weight> <icon>abca65c6a6565b65ca65c6a56b56a5c6a5....</icon> </avatar> </me> </buddies> If alice allows me to see her presence status then the presence server would send me a NOTIFY with: <buddies> <buddy uri="sip:al...@domain.org" type="partial"> <status> <display-name>Alice</display-name> <status><bussy/><status> <avatar> <format>gif</format> <height>120</height> <wegiht>110</weight> <icon>abca65c6a6565b65ca65c6a56b56a5c6a5....</icon> </avatar> </buddy> </buddies> In this way it's easy to create buddies in an elegant way, without custom and complex documents. Permissions belong to each buddy/contact. And yes, the avatar image goes into the SIP message (PUBLISH/NOTIFY), avoiding exotic external access from a XCAP/XDM server and all the painful flow it involves when coming to permissions rules. What about UDP client? modernize or die, doesn't RFC 3261 states that a SIP device must also speak TCP? I will write such specification and publish it when a first draft is finished. I think it could be useful for SIP environments in pure internet rather than vendor closed networks (as IMS and so...). Also, after 7 months playing with XCAP protocol and SIMPLE presence (building a 100% compliant server and so) I recommend everybody to avoid SIMPLE and XCAP current specifications, fully, they are the worst design I've ever seen, and it's clear that nobody in the Internet world wants to implement them (neither can understand them without ending writing his own "vision" and specification to make them work in some ***custom*** way, so non interoperable with other "visions"). Note that current RCS specifications requires layers over layers to get something "usable" (and really less powerful than XMPP): RCS layer over OMA layer over XCAP related RFC's Pain! All this stuff should dissapear as it has failed. Move on IETF! There is no need to reuse such kind of unuseful specifications, not at all. Best regards. -- Iñaki Baz Castillo <i...@aliax.net> _______________________________________________ Sip-implementors mailing list Sip-implementors@lists.cs.columbia.edu https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors