XEP-0088: Client Webtabs

Abstract
A protocol for displaying web-based tabs in clients.
Author
Richard Dobson
Copyright
© 1999 – 2020 XMPP Standards Foundation. SEE LEGAL NOTICES.
Status

Deferred

WARNING: This document has been automatically Deferred after 12 months of inactivity in its previous Experimental state. Implementation of the protocol described herein is not recommended for production systems. However, exploratory implementations are encouraged to resume the standards process.
Type
Informational
Version
0.4 (2004-03-14)
Document Lifecycle
  1. Experimental
  2. Deferred
  3. Proposed
  4. Active

1. Introduction

Webtabs are a way for servers to specify a number to web pages which can be used in clients and displayed like the web-based services in Yahoo Messenger, MSN Messenger and JIM. This enables a server administrator to easily create services for Jabber clients and also help to integrate Jabber clients with existing web-based applications.

2. Requirements

The motivations for this document are:

3. Use Cases

3.1 Service Discovery

Service Discovery (XEP-0030) [1] SHALL be used for discovering support for webtabs on servers.

Example 1. Disco info response containing support for webtabs
<iq
    type='result'
    from='domain.com'
    to='user@domain/resource'
    id='disco1'>
  <query xmlns='http://jabber.org/protocol/disco#info'>
    <feature var='http://jabber.org/protocol/webtab'/>
  </query>
</iq>

It is RECOMMENDED that the jabber server itself (JSM in jabberd) serves the webtab list, but if desired by the server implementor they MAY be served by a separate host/component.

Example 2. Separate webtab host specified by server
<iq
    type='result'
    from='domain.com'
    to='user@domain/resource'
    id='disco1'>
  <query xmlns='http://jabber.org/protocol/disco#items'>
    <item
        jid='webtabs.domain.com'
        name='Webtab Provider'/>
  </query>
</iq>

<iq
    type='result'
    from='webtabs.domain.com'
    to='user@domain/resource'
    id='disco1'>
  <query xmlns='http://jabber.org/protocol/disco#info'>
    <feature var='http://jabber.org/protocol/webtab'/>
  </query>
</iq>

3.2 Retrieving list of web tabs

The list of available web tabs is retrieved using the following protocol:

Example 3. Request for list of webtabs available on a server
<iq
    to='domain.com'
    type='get'
    id='webtab1'>
  <query xmlns='http://jabber.org/protocol/webtab'/>
</iq>
Example 4. Response from server listing the available webtabs
<iq
    to='user@domain.com/resource'
    from='domain.com'
    type='result'
    id='webtab1'>
  <query xmlns='http://jabber.org/protocol/webtab'>
    <webtab type='email' id='em' name='Webmail'>
        http://tab.server.com/mail/
    </webtab>
    <webtab type='bookmark' id='bk' name='Bookmarks'>
        http://webtab.bookmarks.example.com/
    </webtab>
    <webtab type='calendar' id='cal' name='Calendar'>
        http://calendar.example.com/webtab/
    </webtab>
    <webtab type='news' id='nws' name='BBC News'>
        http://news.bbc.co.uk/webtab/
    </webtab>
  </query>
</iq>

The webtab contains CDATA which is the URL of the webtab, the webtab is an HTML page retrieved from an HTTP server using a standard browser which you embed into your client UI using a technique such as the IWebBrowser2 control interface on windows which allows you to embed either the IE or Gecko engines depending on what you have installed, this data is REQUIRED.

The "type" attribute tells the client what the service being provided is, this allows a client to display icons on the tabs to represent them, handling of the type in clients is OPTIONAL, inclusion of this attribute is REQUIRED (See "XMPP Registrar Considerations" for examples of values for this attribute).

The "name" attribute is the offical name of a particular service this can be displayed as the tab name, this attribute is REQUIRED.

The "id" attribute is a unique identifier for a service which you can use to refer to it later, used for when using private storage to store a preference to which tabs should be visible, this attribute is REQUIRED.

3.3 Private storage of preferences

Private XML Storage (XEP-0049) [2] SHALL be used for storing webtab preferences.

Example 5. Request for current webtab preferences
<iq
    to='domain.com'
    type='get'
    id='prefs1'>
  <query xmlns='jabber:iq:private'>
    <prefs xmlns="webtab:prefs"/>
  </query>
</iq>
Example 6. Response with webtab preferences
<iq
    to='user@domain.com/resource'
    from='domain.com'
    type='result'
    id='prefs1'>
  <query xmlns='jabber:iq:private'>
    <prefs xmlns='webtab:prefs'>
      <webtab id='em' visible='true'/>
      <webtab id='bk' visible='false'/>
      <webtab id='cal' visible='true'/>
    </prefs>
  </query>
</iq>

The "id" attribute matches the "id" attribute from the list of webtabs, this attribute is used to match these preferences to the webtab in question, this attribute is REQUIRED.

The "visible" attribute tells the client that a tab SHOULD or SHOULD NOT be hidden, a client SHOULD provide an interface for managing the visibility of the tabs and updating the preferences appropriately, this attribute is REQUIRED.

3.4 Service authentication

It is RECOMMENDED that a mechanism such as HTTP Authentication using Jabber Tickets (XEP-0101) [3] be used for automatic service authentication.

4. Implementation Notes

The following guidelines may assist client developers.

5. Security Considerations

It is recommended that XEP-0101 be used to provide transparent authentication of the webtabs.

6. IANA Considerations

No IANA interaction required.

7. XMPP Registrar Considerations

The XMPP Registrar [4] will need to register the new namespace of "http://jabber.org/protocol/webtab" and possibly the list of offical types will need to be managed too.

Table 1: Possible types for webtabs
Type Purpose
email Web based email
calendar Web based calendar
bookmark Web based bookmark management service
news General news headlines
news/sport Sport headlines

Appendices

Appendix A: Document Information

Series
XEP
Number
0088
Publisher
XMPP Standards Foundation
Status
Deferred
Type
Informational
Version
0.4
Last Updated
2004-03-14
Approving Body
XMPP Council
Dependencies
XMPP Core, XEP-0030, XEP-0049
Supersedes
None
Superseded By
None
Short Name
webtab
Source Control
HTML

This document in other formats: XML  PDF

Appendix B: Author Information

Richard Dobson
Email
richard@dobson-i.net
JabberID
richard@dobson-i.net

Copyright

This XMPP Extension Protocol is copyright © 1999 – 2020 by the XMPP Standards Foundation (XSF).

Permissions

Permission is hereby granted, free of charge, to any person obtaining a copy of this specification (the "Specification"), to make use of the Specification without restriction, including without limitation the rights to implement the Specification in a software program, deploy the Specification in a network service, and copy, modify, merge, publish, translate, distribute, sublicense, or sell copies of the Specification, and to permit persons to whom the Specification is furnished to do so, subject to the condition that the foregoing copyright notice and this permission notice shall be included in all copies or substantial portions of the Specification. Unless separate permission is granted, modified works that are redistributed shall not contain misleading information regarding the authors, title, number, or publisher of the Specification, and shall not claim endorsement of the modified works by the authors, any organization or project to which the authors belong, or the XMPP Standards Foundation.

Disclaimer of Warranty

## NOTE WELL: This Specification is provided on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. ##

Limitation of Liability

In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall the XMPP Standards Foundation or any author of this Specification be liable for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising from, out of, or in connection with the Specification or the implementation, deployment, or other use of the Specification (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if the XMPP Standards Foundation or such author has been advised of the possibility of such damages.

IPR Conformance

This XMPP Extension Protocol has been contributed in full conformance with the XSF's Intellectual Property Rights Policy (a copy of which can be found at <https://xmpp.org/about/xsf/ipr-policy> or obtained by writing to XMPP Standards Foundation, P.O. Box 787, Parker, CO 80134 USA).

Visual Presentation

The HTML representation (you are looking at) is maintained by the XSF. It is based on the YAML CSS Framework, which is licensed under the terms of the CC-BY-SA 2.0 license.

Appendix D: Relation to XMPP

The Extensible Messaging and Presence Protocol (XMPP) is defined in the XMPP Core (RFC 6120) and XMPP IM (RFC 6121) specifications contributed by the XMPP Standards Foundation to the Internet Standards Process, which is managed by the Internet Engineering Task Force in accordance with RFC 2026. Any protocol defined in this document has been developed outside the Internet Standards Process and is to be understood as an extension to XMPP rather than as an evolution, development, or modification of XMPP itself.

Appendix E: Discussion Venue

The primary venue for discussion of XMPP Extension Protocols is the <standards@xmpp.org> discussion list.

Discussion on other xmpp.org discussion lists might also be appropriate; see <http://xmpp.org/about/discuss.shtml> for a complete list.

Errata can be sent to <editor@xmpp.org>.

Appendix F: Requirements Conformance

The following requirements keywords as used in this document are to be interpreted as described in RFC 2119: "MUST", "SHALL", "REQUIRED"; "MUST NOT", "SHALL NOT"; "SHOULD", "RECOMMENDED"; "SHOULD NOT", "NOT RECOMMENDED"; "MAY", "OPTIONAL".

Appendix G: Notes

1. XEP-0030: Service Discovery <https://xmpp.org/extensions/xep-0030.html>.

2. XEP-0049: Private XML Storage <https://xmpp.org/extensions/xep-0049.html>.

3. XEP-0101: HTTP Authentication using Jabber Tickets <https://xmpp.org/extensions/xep-0101.html>.

4. The XMPP Registrar maintains a list of reserved protocol namespaces as well as registries of parameters used in the context of XMPP extension protocols approved by the XMPP Standards Foundation. For further information, see <https://xmpp.org/registrar/>.

Appendix H: Revision History

Note: Older versions of this specification might be available at http://xmpp.org/extensions/attic/

  1. Version 0.4 (2004-03-14)
    Added Terminology section and associated alterations and added clarification about what the webtabs are.
    red
  2. Version 0.3 (2003-09-30)
    Moved service discovery to top of use cases, added option for separate webtab provider and added reference to XEP-0101.
    red
  3. Version 0.2 (2003-05-16)
    Clean ups.
    red
  4. Version 0.1 (2003-03-02)
    Initial version.
    red

END