<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="color-scheme" content="dark light" />
    <title>Blasta / pubsub</title>
    <link rel="shortcut icon" href="/graphic/blasta.svg"/>
    <link rel='icon' type='image/svg+xml' href='/graphic/blasta.svg'/>
    <link rel='stylesheet' type='text/css' media='screen' href='/stylesheet/stylesheet.css'/>
</head>
<body>
    <div id="container">
        <div id="header" class="row">
            <h1>
                <img src="/graphic/blasta.svg"/>
                <a href="/">Blasta</a> / <a href="/help">help</a> / <a href="/help/about">about</a> / <a href="/help/about/xmpp">xmpp</a> / pubsub
            </h1>
            <dl id="navigation">
                <dd>
                    <img src="/graphic/blasta.svg"/>
                </dd>
                {% if jabber_id %}
                    <dd>
                        <a href="/jid">Public</a>
                    </dd>
                    <dd>
                        <a href="/private">Private</a>
                    </dd>
                    <dd>
                        <a href="/read">Read</a>
                    </dd>
                {% endif %}
                <dd>
                    <a href="/search{% if jabber_id %}/jid/{{jabber_id}}{% endif %}">Search</a>
                </dd>
                <dd>
                    <a href="/popular">Popular</a>
                </dd>
                <dd>
                    <a href="/recent">Recent</a>
                </dd>
                <dd>
                    {% if jabber_id %}
                        <a href="/disconnect">Disconnect</a>
                    {% else %}
                        <a href="/connect">Connect</a>
                    {% endif %}
                </dd>
            </dl>
        </div>
        <div id="main" class="row">
            <div id="content">
                <h2>&nbsp; PubSub Bookmarks</h2>
                <p>» This is a help guide for XMPP PubSub of Blasta.</p>
                <h3>PubSub</h3>
                <p>
                    Blasta manages and posts information on PubSub nodes of your
                    own XMPP account.
                </p>
                <h4>Synopsis</h4>
                <p>
                    The technologies (i.e. standards and specifications) that
                    are being served for this task are Atom Syndication Format
                    (ASF) and Publish-Subscribe.
                </p>
                
                <h4>Atom Syndication Format (RFC 4287)</h4>
                <p>
                    The Atom Syndication Format or ASF is a standard for
                    syndication which was yielded from RSS. The ASF was
                    approved by the Internet Engineering Task Force (IETF)
                    as <a href="https://www.rfc-editor.org/rfc/rfc4287">
                    RFC 4287</a> in december 2005.
                </p>
                <p>
                    This standard is an XML-based document format that describes
                    lists of related information known as "feeds".  Feeds are
                    composed of a number of items, known as "entries", each with
                    an extensible set of attached metadata.  For example, each
                    entry has a title.
                </p>
                <p>
                    The primary use case that Atom addresses is the syndication
                    of content such as journals and news headlines to sites as
                    well as directly to user agents.
                </p>
                <h4>Publish-Subscribe (XEP-0060)</h4>
                <p>
                    Publish-Subscribe or PubSub is an XEP specification for
                    XMPP which was approved by the XMPP Standard Foundation (XSF)
                    as <a href="https://xmpp.org/extensions/xep-0060.html">
                    XEP-0060</a> in november 2002.
                </p>
                <p>
                    This specification defines an XMPP protocol extension for
                    generic publish-subscribe functionality. The protocol
                    enables XMPP entities to create nodes (topics) at a pubsub
                    service and publish information at those nodes; an event
                    notification (with or without payload) is then broadcasted
                    to all entities that have subscribed to the node. Pubsub
                    therefore adheres to the classic Observer design pattern and
                    can serve as the foundation for a wide variety of applications,
                    including news feeds, content syndication, rich presence,
                    geolocation, workflow systems, network management systems,
                    and any other application that requires event notifications.
                </p>
                <h4>Atomsub</h4>
                <p>
                    Atomsub, or Atom Over XMPP, is the combination of PubSub and
                    Atom. <a href="/help/about/xmpp/atomsub">Learn more</a>.
                </p>
                <h4>Technicalities</h4>
                <p>
                    The location at which Blasta stores your information is inside
                    node <code>urn:xmpp:bibliography:0</code> of
                    <code>{% if jabber_id %}{{jabber_id}}{% else %}your@jabber.id{% endif %}</code>
                    which interpretes to <a href="
                    xmpp:{% if jabber_id %}{{jabber_id}}{% else %}your@jabber.id{% endif %}?;node=urn:xmpp:bibliography:0">
                    xmpp:{% if jabber_id %}{{jabber_id}}{% else %}your@jabber.id{% endif %}?;node=urn:xmpp:bibliography:0</a>
                    and is where you can find all of your information, even if
                    this Blasta instance be offline.
                </p>
                <h4>PubSub</h4>
                <p>
                    This is an illustrated example of a node item which stores
                    as an Atom entry.
                </p>
                <pre>
    JID  : {% if jabber_id %}{{jabber_id}}{% else %}your@jabber.id{% endif %}
    Node : urn:xmpp:bibliography:0
    Item : 3d0db4c019a01ebbbab1cf0723ed7ddd
                </pre>
                <p>
                    The item ID is a an MD5 string which was yielded by a URL
                    which was hashed by the MD5 algorithm, and is used as a
                    representation of a URL ID for referential purposes in the
                    Blasta system.
                </p>
                <h4>Atom</h4>
                <p>
                    This is an illustrated example of an Atom Syndication Format
                    entry which is stored in item
                    <code>3d0db4c019a01ebbbab1cf0723ed7ddd</code>.
                </p>
                <pre>
    Title     : The Pirate Bay - The most resilient BitTorrent site
    Summary   : Download music, movies, games, software!
    Category  : brand:the-pirate-bay
    Category  : directory:torrent
    Category  : service:search
    Link      : https://tpb.party/
    Published : {{date_now_iso}}
    Updated   : {{date_now_iso}}
                </pre>
                <p>This is the data as retrieved by an XMPP IQ Stanza.</p>
                <pre>
    &lt;item xmlns="http://jabber.org/protocol/pubsub" id="3d0db4c019a01ebbbab1cf0723ed7ddd"&gt;
        &lt;entry xmlns="http://www.w3.org/2005/Atom"&gt;
            &lt;title type="text">The Pirate Bay - The most resilient BitTorrent site&lt;/title&gt;
            &lt;summary type="text">Download music, movies, games, software!&lt;/summary&gt;
            &lt;category term="brand:the-pirate-bay" /&gt;
            &lt;category term="directory:torrent" /&gt;
            &lt;category term="service:search" /&gt;
            &lt;link href="https://tpb.party/" /&gt;
            &lt;published&gt;{{date_now_iso}}&lt;/published&gt;
            &lt;updated&gt;{{date_now_iso}}&lt;/updated&gt;
        &lt;/entry&gt;
    &lt;/item&gt;
                </pre>
                <p>
                    Which be realized in Blasta as follows.
                </p>
                <h4>
                    <a href="https://tpb.party/">
                        The Pirate Bay - The most resilient BitTorrent site
                    </a>
                </h4>
                <p class="summary">Download music, movies, games, software!</p>
                <div class="details">
                    to
                    <a href="/?tags=brand:the-pirate-bay">
                        brand:the-pirate-bay
                    </a>
                    &#8203;&#8202;
                    <a href="/?tags=directory:torrent">
                        directory:torrent
                    </a>
                    &#8203;&#8202;
                    <a href="/?tags=service:search">
                        service:search
                    </a>
                    &#8203;&#8202;
                    by
                    <a href="/jid/fionn@jabber.i2p">Fionn</a>
                    …
                    <a href="/url/3d0db4c019a01ebbbab1cf0723ed7ddd">
                        <span class="instances-degree-fourth">and 57,293 other people</span>
                    </a>
                    &#8203;&#8202;
                    at
                    <span class="date">{{date_now_readable}}</span>
                </div>
                <h4>Conclusion</h4>
                <p>
                    This was an illustrative representation of how your data is
                    stored by Blasta as Atom feed entries on Publish-Subscribe
                    node <code>urn:xmpp:bibliography:0</code> of your XMPP
                    account.
                </p>
                <h4>Resources</h4>
                <ul>
                    <li>
                        <a href="https://wiki.xmpp.org/web/PubSub_message_types">
                            PubSub message types
                        </a>
                        &#8203;&#8202;
                        (wiki.xmpp.org)
                    </li>
                    <li>
                        <a href="https://wiki.xmpp.org/web/Tech_pages/PubSub">
                            Tech pages/PubSub
                        </a>
                        &#8203;&#8202;
                        (wiki.xmpp.org)
                    </li>
                </ul>
                <br/>
                <p class="quote bottom"
                   title="Arthur Schopenhauer speaks about Bob Wyman, Jérôme Poisson, Joe Hildebrand, Peter Saint-Andre, and Timothée Jaussoin.">
                    “Talent hits a target no one else can hit.
                    Genius hits a target no one else can see.”
                    ― Arthur Schopenhauer
                </p>
            </div>
        </div>
        <div id="footer" class="row">
            <dl>
                <dd>
                    <img src="/graphic/blasta.svg" alt="logo"/>
                    <a href="/">blasta</a>
                </dd>
                <dd>
                    <a href="/help/about">about</a>
                </dd>
                <dd>
                    <a href="/help/about/xmpp">xmpp</a>
                </dd>
                <dd>
                    <a href="/help/about/xmpp/pubsub">pubsub</a>
                </dd>
                <dd>
                    <a href="{{journal}}">journal</a>
                </dd>
                <dd>
                    <a href="/help">help</a>
                </dd>
                <dd>
                    <a href="/help/policy">policy</a>
                </dd>
                <dd>
                    <a href="/help/feeds">rss</a>
                </dd>
                <dd>
                    <a href="/contact">contact</a>
                </dd>
            </dl>
        </div>
    </div>
</body>
</html>