Update file README.md and add fresh project files from The Republic of Ireland.

This commit is contained in:
Schimon Jehudah, Adv. 2024-08-22 17:09:04 +03:00
parent ecb3e18f3c
commit 3024f57466
37 changed files with 12090 additions and 2 deletions

View file

@ -1,3 +1,77 @@
# Blasta
# Blasta - The agreeable and cordial civic bookmarking system.
A federated PubSub bookmarking system for XMPP.
Blasta is a collaborative bookmarks manager for organizing online content. It
allows you to add links to your personal collection of links, to categorize them
with keywords, and to share your collection not only among your own software,
devices and machines, but also with others.
What makes Blasta a collaborative system is its ability to display to you the
links that other people have collected, as well as showing you who else has
bookmarked a specific link. You can also view the links collected by others, and
subscribe to the links of people whose lists you deem to be interesting.
Blasta does not limit you to save links of certain types; you can save links of
types adc, dweb, ed2k, feed, ftp, gemini, geo, gopher, http, ipfs, irc, magnet,
mailto, monero, mms, news, sip, udp, xmpp and any scheme and type that you
desire.
# Technicalities
Blasta is a federated bookmarking system which is based on XMPP and stores
bookmarks on your own XMPP account; to achieve this task, Blasta utilizes the
following XMPP specifications:
- [XEP-0163: Personal Eventing Protocol](https://xmpp.org/extensions/xep-0163.html)
- [XEP-0060: Publish-Subscribe](https://xmpp.org/extensions/xep-0060.html)
Blasta operates as an XMPP client, and therefore, does not have a bookmarks
system nor an account system, of its own.
Blasta has a database which is compiled by aggregating the bookmarks of people
who are participating in the Blasta system, and that database is utilized to
relate accounts and shared links.
The connection to the Blasta system is made with XMPP accounts.
## Features
- Private bookmarks;
- Public bookmarks;
- Read list;
- Search;
- Syndication;
- Tags.
## Future features
- ActivityPub;
- Atom Syndication Format;
- Federation;
- Filters;
- Pin directory;
- Publish-Subscribe.
## Requirements
* Python >= 3.5
* fastapi
* lxml
* slixmpp
* tomllib (Python <= 3.10)
* uvicorn
## Instructions
Use the following commands to start Blasta.
```shell
$ git clone https://git.xmpp-it.net/sch/Blasta
$ cd Blasta/
python -m uvicorn blasta:app --reload
```
Open URL http://localhost:8000/ and connect with your Jabber ID.
## License
AGPL-3.0 only.

5051
blasta.py Normal file

File diff suppressed because it is too large Load diff

61
configuration.toml Normal file
View file

@ -0,0 +1,61 @@
# Contact
[contacts]
email = ""
xmpp = ""
mix = ""
muc = ""
irc_channel = "#blasta"
irc_server = ""
# Settings
[settings]
journal = ""
pubsub = ""
# Bibliography
node_id = "urn:xmpp:bibliography:0"
node_title = "Blasta"
node_subtitle = "Bibliography"
# Private bibliography
node_id_private = "xmpp:bibliography:private:0"
node_title_private = "Blasta (Private)"
node_subtitle_private = "Private bibliography"
# Reading list
node_id_read = "xmpp:bibliography:read:0"
node_title_read = "Blasta (Read)"
node_subtitle_read = "Reading list"
# Settings node
node_settings = "xmpp:blasta:settings:0"
# Acceptable protocol types that would be aggregated to the Blasta database
schemes = [
"adc",
"bitcoin",
"dweb",
"ed2k",
"ethereum",
"feed",
"ftp",
"ftps",
"gemini",
"geo",
"gopher",
"http",
"https",
"ipfs",
"ipns",
"irc",
"litecoin",
"magnet",
"mailto",
"monero",
"mms",
"news",
"sip",
"sms",
"tel",
"udp",
"xmpp"]

1
data/README.txt Normal file
View file

@ -0,0 +1 @@
This directory is meant to store hashes and tags per JID as TOML.

1
export/README.txt Normal file
View file

@ -0,0 +1 @@
This directory is contains exported nodes.

6
graphic/blasta.svg Normal file
View file

@ -0,0 +1,6 @@
<svg width="50" height="50" xmlns="http://www.w3.org/2000/svg">
<rect x="0" y="0" width="25" height="25" fill="#fff" />
<rect x="25" y="0" width="25" height="25" fill="#d9541e" />
<rect x="0" y="25" width="25" height="25" fill="#439639" />
<rect x="25" y="25" width="25" height="25" fill="#d3d2d2" />
</svg>

After

Width:  |  Height:  |  Size: 316 B

18
graphic/syndicate.svg Normal file
View file

@ -0,0 +1,18 @@
<?xml version="1.0"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="128px" height="128px" id="RSSicon" viewBox="0 0 256 256">
<defs>
<linearGradient x1="0.085" y1="0.085" x2="0.915" y2="0.915" id="RSSg">
<stop offset="0.0" stop-color="#E3702D"/><stop offset="0.1071" stop-color="#EA7D31"/>
<stop offset="0.3503" stop-color="#F69537"/><stop offset="0.5" stop-color="#FB9E3A"/>
<stop offset="0.7016" stop-color="#EA7C31"/><stop offset="0.8866" stop-color="#DE642B"/>
<stop offset="1.0" stop-color="#D95B29"/>
</linearGradient>
</defs>
<rect width="256" height="256" rx="55" ry="55" x="0" y="0" fill="#CC5D15"/>
<rect width="246" height="246" rx="50" ry="50" x="5" y="5" fill="#F49C52"/>
<rect width="236" height="236" rx="47" ry="47" x="10" y="10" fill="url(#RSSg)"/>
<circle cx="68" cy="189" r="24" fill="#FFF"/>
<path d="M160 213h-34a82 82 0 0 0 -82 -82v-34a116 116 0 0 1 116 116z" fill="#FFF"/>
<path d="M184 213A140 140 0 0 0 44 73 V 38a175 175 0 0 1 175 175z" fill="#FFF"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

26
graphic/xmpp.svg Normal file
View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" xml:space="preserve" viewBox="0 0 200 200" width="200px" height="200px" x="0px" y="0px" enable-background="new 0 0 200 200">
<linearGradient id="SVGID_right_" y2="1.279e-13" gradientUnits="userSpaceOnUse" x2="-1073.2" gradientTransform="translate(1196.604,37.368977)" y1="126.85" x1="-1073.2">
<stop stop-color="#1b3967" offset=".011" />
<stop stop-color="#13b5ea" offset=".467" />
<stop stop-color="#002b5c" offset=".9945" />
</linearGradient>
<linearGradient id="SVGID_left_" y2="1.279e-13" gradientUnits="userSpaceOnUse" x2="-1073.2" gradientTransform="matrix(-1,0,0,1,-994.78801,37.367977)" y1="126.85" x1="-1073.2">
<stop stop-color="#1b3967" offset=".011" />
<stop stop-color="#13b5ea" offset=".467" />
<stop stop-color="#002b5c" offset=".9945" />
</linearGradient>
<path d="m 151.80512,51.557978 c 0.077,1.313 -1.787,0.968 -1.787,2.293 0,38.551002 -46.558,97.366012 -91.687985,108.730012 v 1.639 C 118.28313,158.69999 186.89012,96.41998 188.40012,37.369977 l -36.599,14.189001 z" style="fill:url(#SVGID_right_)" />
<path d="m 133.67312,56.300978 c 0.076,1.313 0.12,2.63 0.12,3.957 0,38.551002 -30.69898,90.497012 -75.826985,101.860012 v 1.639 c 59.044005,-2.79 105.809995,-63.02401 105.809995,-109.200012 0,-2.375 -0.128,-4.729 -0.371,-7.056 l -29.73,8.798 z" style="fill:#e96d1f" />
<path d="m 163.69112,46.951978 -7.61699,2.722 c 0.041,0.962 0.066,2.254 0.066,3.225 0,41.219002 -37.271,98.204012 -87.271995,107.120012 -3.24501,1.088 -7.53801,2.077 -10.932,2.931 v 1.638 C 123.19013,159.02799 169.03613,92.72198 163.69612,46.947978 Z" style="fill:#d9541e" />
<path d="m 50.011,51.556978 c -0.077,1.313 1.787,0.968 1.787,2.293 0,38.551002 46.558007,97.366012 91.68799,108.730012 v 1.639 C 83.533,158.69899 14.926,96.41898 13.416,37.368977 l 36.599,14.189001 z" style="fill:url(#SVGID_left_)" />
<path d="m 68.143,56.299978 c -0.076,1.313 -0.12,2.63 -0.12,3.957 0,38.551002 30.698995,90.497012 75.82699,101.860012 v 1.639 C 84.806,160.96599 38.04,100.73198 38.04,54.555978 c 0,-2.375 0.128,-4.729 0.371,-7.056 l 29.73,8.798 z" style="fill:#a0ce67" />
<path d="m 38.125,46.950978 7.617,2.722 c -0.041,0.962 -0.066,2.254 -0.066,3.225 0,41.219002 37.271,98.204012 87.27199,107.120012 3.245,1.088 7.538,2.077 10.932,2.931 v 1.638 C 78.626,159.02699 32.78,92.72098 38.12,46.946978 Z" style="fill:#439639" />
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

1
items/README.txt Normal file
View file

@ -0,0 +1 @@
This directory is meant to cache nodes per JID as TOML.

462
stylesheet/stylesheet.css Normal file
View file

@ -0,0 +1,462 @@
a {
color: #439639;
text-decoration: none;
}
a:visited {
color: #d9541e;
}
a:hover {
text-decoration: underline
}
body {
background-color:#f5f5f5;
}
a, div, h1, h2, h3, h4, h5, p, span {
font-family: system-ui;
}
body, h1, h2, html,
#footer dd,
#footer dl,
#posts > dd,
#navigation dd,
dl#navigation,
#related-tags dd {
margin: 0;
padding: 0
}
body, html {
height: 100%;
}
dl, form, p, .details {
line-height: 150%;
margin: 8px;
margin-left: 8px;
}
input.submit {
margin-top: 1em;
}
h1 {
display: inline-block;
font-size: 150%;
font-weight: bolder;
margin:0;
padding:0 0 0 4px;
}
h2 {
background-color: #eee;
font-size: initial;
font-weight: normal;
padding: 0.5ex 0.5em 0.5pc 0.5em;
}
h3, h4, h5 {
margin: 1em;
margin-block-end: 1em;
margin-left: 8px;
}
#container {
display: flex;
flex-flow: column;
height: 100%;
}
#container #header.row {
flex: 0 1 auto;
/* The above is shorthand for:
flex-grow: 0,
flex-shrink: 1,
flex-basis: auto
*/
}
#container #main.row {
flex: 1 1 auto;
}
#container #footer.row {
flex: 0 1 20px;
}
#header {
background-color: #ddd;
padding: 0.5ex 0 0.5pc 0.5em;
}
#header h1 {
margin-bottom: 0.5em;
}
#header dl {
float: right;
}
#header dd:last-child {
border-right: unset;
}
#profile-link {
color: unset;
}
#header dd {
border-right: 1px solid #444;
display: inline;
padding: 0 0.4em;
}
.title:first-child {
margin-block-start: 2.22em;
}
.title {
margin-block-start: 1.33em;
}
.title > h4 {
display: inline;
}
/*
form > * {
line-height: 120%;
margin: 2px;
}
*/
#main {
display: flex;
/* justify-content: space-between; */
}
#related-tags {
background-color: #eee;
min-width: 200px;
padding: 0 0.5em 1em 1em;
height: 90vh;
width: 15%;
/* float: right; */
/* width: 200px; */
overflow-wrap: break-word;
}
#content {
/* min-width: 85%; */
/* display: inline-block; */
flex-grow: 1;
}
/*
#posts {
line-height: 120%;
margin: 8px;
}
#posts h4 {
margin-bottom: 1px;
}
*/
form#editor tr > td:first-child {
text-align: right;
padding: 1em;
}
form#editor th {
text-align: right;
padding: 1em;
}
/*
form#editor th,
form#editor td {
vertical-align: top;
}
*/
form#editor #description,
form#editor #title,
form#editor #summary,
form#editor #tags,
form#editor #url {
width: 150%;
}
form#editor input[type="radio"]:checked:disabled + label {
/* font-weight: bold; */
text-decoration: underline;
}
/*
input[type="radio"]:disabled:not(:checked),
input[type="radio"]:disabled:not(:checked) + label {
display: none;
}
*/
pre {
white-space: pre-wrap;
}
p.summary {
white-space: break-spaces;
}
table.pattern,
table#software,
table.atom-over-xmpp {
margin: 8px;
}
table.pattern th,
table#software th {
padding-top: 22px;
text-align: left;
}
table.pattern td,
table#software td {
line-height: 120%;
overflow-wrap: anywhere;
padding: 8px;
vertical-align: text-top;
}
#bookmarklet {
background: #eee;
border: 1px solid #bbb;
padding-left: 3px;
padding-right: 3px;
}
#subscribe {
/* font-size: 75%; */
padding-top: 1em;
/* text-align: center; */
}
#footer {
border-top: 1px solid #eee;
font-size: 80%;
margin-top: 3em;
/* text-align: center; end left start */
}
#tags-sized {
line-height: 2em;
margin: 1em;
text-align: justify;
}
.tag-degree-first {
font-size: 100%;
font-weight: 300;
margin: 1em;
}
.tag-degree-first:first-child {
margin: unset;
}
.tag-degree-second {
font-size: 125%;
font-weight: 400;
margin: 1.25em;
}
.tag-degree-second:first-child {
margin: unset;
}
.tag-degree-third {
font-size: 150%;
font-weight: 500;
margin: 1.5em;
}
.tag-degree-third:first-child {
margin: unset;
}
.tag-degree-fourth {
font-size: 175%;
font-weight: 600;
margin: 1.75em;
}
.tag-degree-fourth:first-child {
margin: unset;
}
.tag-degree-fifth {
font-size: 200%;
font-weight: 700;
margin: 2em;
}
.tag-degree-fifth:first-child {
margin: unset;
}
.instances-degree-first {
color: unset;
background: #cbecef;
}
.instances-degree-second {
color: unset;
background: #b6ffd6; /* #b6ffeb */
}
.instances-degree-third {
color: unset;
background: #ebefcb;
}
.instances-degree-fourth {
color: unset;
background: #f4fbb8;
}
.instances-degree-fifth {
color: unset;
background: #efd8cb;
}
.quote {
font-family: serif;
font-style: italic;
line-height: 2.5em;
margin-left: 1.5em;
width: 50%;
}
.warning {
color: #822493;
font-weight: bold;
}
.bottom {
font-size: 80%;
}
#navigate-top {
margin: 8px;
float: inline-end;
}
#navigate-bottom {
margin: 8px;
padding-top: 2em;
/* text-align: center; */
}
.inactive {
color: #818181;
}
#footer :first-child {
border-left: unset;
}
#footer dd {
display: inline;
border-left: 1px solid #444;
padding: 0 0.5em;
}
div#table {
display: flex;
}
.enlarge {
font-size: 24px;
}
#navigation dd:first-child {
display: none;
}
#header img {
height: 20px;
width: 20px;
}
#bookmarklet img {
height: 12px;
width: 12px;
}
#footer img {
height: 10px;
width: 10px;
}
#navigation img {
height: 18px;
width: 18px;
}
@media (max-width: 1150px) {
#header > h1 {
font-size: 100%;
}
#header img {
height: 16px;
width: 16px;
}
}
@media (max-width: 1000px) {
#related-tags,
#header > h1 {
display: none;
}
#header dl {
float: none;
}
#navigation {
text-align: center;
}
#navigation dd:first-child {
display: unset;
}
}
@media (max-width: 725px) {
#profile-link > b {
display: none;
}
#profile-link:before {
content: 'Home';
}
}
/* <hr class="strip"/>
.strip {
background: #c4e17f;
border-radius: 5px;
border-top: 0;
display: block;
height: 3px;
max-width: 220px;
background-image: linear-gradient(to right, #c4e17f, #c4e17f 12.5%, #f7fdca 12.5%, #f7fdca 25%, #fecf71 25%, #fecf71 37.5%, #f0776c 37.5%, #f0776c 50%, #db9dbe 50%, #db9dbe 62.5%, #c49cde 62.5%, #c49cde 75%, #669ae1 75%, #669ae1 87.5%, #62c2e4 87.5%, #62c2e4);
background-image: linear-gradient(to right, #fff 25%, #d9541e 25%, #439639 25%, #d3d2d2 25%);
background-image: linear-gradient(to right, #fff, #d9541e, #439639, #d3d2d2);
background-image: linear-gradient(to right, #439639, #439639 25%, #fff 25%, #fff 75%, #d9541e 75%, #d9541e);
background-image: linear-gradient(to right, #fff, #fff 25%, #d9541e 25%, #d9541e 50%, #439639 50%, #439639 75%, #d3d2d2 75%, #d3d2d2);
}
*/

231
xhtml/about.xhtml Normal file
View file

@ -0,0 +1,231 @@
<?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</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> / about
</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>
» Information and resources about Blasta, collaborative
bookmarks with an Irish manner.
</p>
<h3>About Blasta</h3>
<p>
Blasta is a collaborative bookmarks manager for organizing
online content. It allows you to add links to your personal
collection of links, to categorize them with keywords, and
to share your collection not only among your own software,
devices and machines, but also with others.
</p>
<p>
Once you are connected to the service, you add a simple
<a href="/help/utilities#buttons">bookmarklet</a> to your
browser. When you find a page of your interest, you can
use the Blasta bookmarklet, and enter information about the
given page. You can add descriptive terms, group similar
links together and add notes for yourself or for others.
</p>
<p>
You can access your list of links from any browser. Your
links are shown to you with those you have added most
recently at the top. In addition to viewing by date, you can
also view all links with a specific keyword you define, or
search your links for potential keywords.
</p>
<p>
What makes Blasta a collaborative system is its ability to
display to you the links that other people have collected,
as well as showing you who else has bookmarked a specific
link. You can also view the links collected by others, and
subscribe to the links of people whose lists you deem to be
interesting.
</p>
<p>
Blasta does not limit you to save links of certain types;
you can save links of types adc, dweb, ed2k, feed, ftp,
gemini, geo, gopher, http, ipfs, irc, magnet, mailto,
monero, mms, news, sip, udp, xmpp and any scheme and type
that you desire.
</p>
<h4>Why Blasta?</h4>
<p>
Corporate search engines are archaic and outdated, and often
prioritize their own interests, leading to censorship and
distortion of important and vital information. This results
in unproductive and low-quality search outcomes.
</p>
<p>
With the collaborative indexing system which Blasta offers,
you can be rest assured that you will find the references
and resources that you need in order to be productive and
get that you need.
</p>
<h4>The things that you can do with Blasta are endless</h4>
<p>
Blasta is an open-ended indexing system, and, as such, it
provides a versatile platform with which you have the
ability to tailor its usage according to your desired
preferences. <a href="/help/about/ideas">Learn more</a>.
</p>
<h4>The difference from other services</h4>
<p>
Unlike some so called "social" bookmarking systems, Blasta
does not own your information; your bookmarks are
categorically owned and controlled by you; your bookmarks
are stored as <a href="/help/about/xmpp/pubsub">PubSub</a>
items within your own XMPP account; <u>you are the soveriegn
of your information</u>, and it is always under your
<a href="/help/about/philosophy#control">control</a>.
</p>
<p>
This means, that if Blasta be offline tomorrow, your
personal bookmarks, private and public, remain intact inside
your personal XMPP account under PubSub node
<code>urn:xmpp:bibliography:0</code>.
</p>
<h4>Information that is stored by Blasta</h4>
<p>
In order for Blasta to facilitate sharing of information and
accessibility to information, Blasta aggregates your own
public bookmarks and the public bookmarks of other people,
in order to create a database of its own, with which Blasta
manages and rates references to build recommendations and
gather statistics of resources that are both valid and
bookmarked more often than other resources.
</p>
<p>
Blasta does not store links of bookmarks that are marked by
all of their owners as private and no one else has stored
them in a public fashion (i.e. not classified private).
</p>
<h4>Blasta source code</h4>
<p>
The source code of Blasta is available under the terms of
the license <a href="/license/agpl-3.0.txt">AGPL-3.0</a> at
<a href="https://git.xmpp-it.net/sch/Blasta">
git.xmpp-it.net</a>.
</p>
<h4>Our motives</h4>
<p>
We are adopting the attitude towards life and towards death,
which was implicit in the old Vikings' and in Schopenhauer's
statements: <a href="/help/questions#perspective">
Living for the sake of eternity</a>.
Living with eternity always in mind, instead of living only
for the moment.
The attitude that the individual is not an in and of
himself, but lives for and through something greater, in
particular for and through his racial community, which is
eternal.
</p>
<h4>About us</h4>
<p>
Blasta was proudly made in the Republic of Ireland, by a
group of bible loving, religious, and stylish Irish men, who
have met each other, for the first time, at the Irish Red
Head Convention, and who dearly enjoy tea, and who love
their wives, children and their ancestors.
</p>
<p>
It is important to mention that we have met Mr. Schimon
Zachary, at the consequent Irish Red Head Convention of the
proceeding year, and he was the one who has initiated the
idea of XMPP PubSub bookmarks.
</p>
<h4>Conclusion</h4>
<p>
Blasta is for you to enjoy, excite, instigate, investigate,
learn and research.
</p>
<p>We hope you would have productive outcomes with Blasta.</p>
<br/>
<p class="quote bottom">
“All you can take with you; is that which you have given
away.”
― It's a Wonderful Life (1946)
</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>

148
xhtml/ask.xhtml Normal file
View file

@ -0,0 +1,148 @@
<?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</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> / {{path}}
</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>
» {{message}}
</p>
<h3>
{{description}}
</h3>
<h4>
Send a message to {{name}}
</h4>
<form action="/message"
id="message"
method="post">
<input id="jid"
type="hidden"
name="jid"
value="{{jid}}" />
<textarea cols="70"
id="body"
name="body"
placeholder="Enter a message (required)."
rows="15">Greetings, {{name}}!
{% if ask %}
Please send to me your authorization to view your bookmarks.
{% elif invite %}
I want to invite you to join to Blasta, a social bookmarks service for XMPP.
You can use your own XMPP account to connect, and you can also run your own Blasta instance.
Source code: https://git.xmpp-it.net/sch/Blasta
Visit {{origin}}{% endif %}
Kind regards,
{{alias}}</textarea>
<br/>
<input type="submit" value="Send"/>
</form>
<p>
You can also communicate with {{name}}, directly from your
desktop or mobile client, by clicking on the Jabber ID
({{jid}}) of {{name}}.
</p>
<p>
Click the Jabber ID of {{name}} to
{% if ask %}
ask
<a href="xmpp:{{jid}}?message;subject=This is a request for authorization;body=Greetings, {{name}}!%0D%0A%0D%0APlease send to me your authorization to view your bookmarks.">
{{jid}}</a>
to view this directory.
{% elif invite %}
invite
<a href="xmpp:{{jid}}?message;subject=This is an invitation to Blasta;body=Greetings, {{name}}!%0D%0A%0D%0AI want to invite you to join to Blasta, a social bookmarks service for XMPP.%0D%0A%0D%0AYou can use your own XMPP account to connect, and you can also run your own Blasta instance.%0D%0A%0D%0ASource code: https://git.xmpp-it.net/sch/Blasta%0D%0A%0D%0AVisit {{origin}}%0D%0A%0D%0AKind regards,%0D%0A{{alias}}">
{{jid}}</a>
to Blasta.
{% endif %}
</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>

213
xhtml/atomsub.xhtml Normal file
View file

@ -0,0 +1,213 @@
<?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</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> / atomsub
</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>» The master standard for HTML.</p>
<h3>Atomsub</h3>
<p>
Atomsub, or Atom Over XMPP, is a simple and yet ingenious
idea which was realized by the gentlemen: Peter Saint-Andre;
Joe Hildebrand; and Bob Wyman.
</p>
<p>
A memo which was published on May 7, 2008 and is titled
"Atomsub: Transporting Atom Notifications over the
Publish-Subscribe Extension to the Extensible Messaging and
Presence Protocol (XMPP)"
(codename: draft-saintandre-atompub-notify-07) describes a
method for notifying interested parties about changes in
syndicated information encapsulated in the Atom feed format,
where such notifications are delivered via an extension to
the Extensible Messaging and Presence Protocol (XMPP) for
publish-subscribe functionality.
</p>
<h4>References</h4>
<p>Herein resources concerning to Atomsub.</p>
<ul>
<li>
<h4>Atom Over XMPP: Presentation</h4>
<p>Peter Saint-Andre - Jabber Software Foundation - IETF 66</p>
<p><code>draft-saintandre-atompub-notify</code></p>
<p>
<a href="https://datatracker.ietf.org/meeting/66/materials/slides-66-atompub-1.pdf">
datatracker.ietf.org
</a> (PDF)
</p>
</li>
<li>
<h4>Atomsub</h4>
<p>
Transporting Atom Notifications over the
Publish-Subscribe Extension to the Extensible
Messaging and Presence Protocol (XMPP)
</p>
<p><code>draft-saintandre-atompub-notify-07</code></p>
<p>
<a href="https://datatracker.ietf.org/doc/draft-saintandre-atompub-notify/">
datatracker.ietf.org
</a>
<!-- a href="http://www.xmpp.org/internet-drafts/draft-saintandre-atompub-notify-07.html">
xmpp.org
</a -->
</p>
</li>
<li>
<h4>ATOM over XMPP: PubSub message types</h4>
<p>One of different PubSub message types.</p>
<p>
<a href="https://wiki.xmpp.org/web/PubSub_message_types#ATOM_over_XMPP">
wiki.xmpp.org
</a>
</p>
</li>
<li>
<h4>XEP-0060: Publish-Subscribe</h4>
<p>This is the general specification for PubSub.</p>
<p>
<a href="https://xmpp.org/extensions/xep-0060.html">
xmpp.org
</a>
</p>
</li>
<li>
<h4>XEP-0277: Microblogging over XMPP</h4>
<p>
This specification defines a method for
microblogging over XMPP.
</p>
<p>
This specification is utilized by the publishing
platform Libervia.
</p>
<p>
<a href="https://xmpp.org/extensions/xep-0277.html">
xmpp.org
</a>
<a href="https://libervia.org/">
libervia.org
</a>
</p>
</li>
<li>
<h4>XEP-0472: Pubsub Social Feed</h4>
<p>
This specification defines a way of publishing
social content over XMPP.
</p>
<p>
This specification is utilized by the publishing
platform Movim.
</p>
<p>
<a href="https://xmpp.org/extensions/xep-0472.html">
xmpp.org
</a>
<a href="https://movim.eu/">
movim.eu
</a>
</p>
</li>
</ul>
<h4>Of note</h4>
<p>
These type of technologies are public information for over
a couple of decades (i.e. more than 20 years); and people
from corporations and governments with special interests,
and who think that they have nothing better to do with their
lives, have been attempting to suppress these technologies,
and doing so is absolutely against your best interest.
</p>
<br/>
<p class="quote bottom">
“People demand freedom of speech as a compensation for the
freedom of thought which they seldom use.”
― Sören Kierkegaard
</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>

265
xhtml/browse.xhtml Normal file
View file

@ -0,0 +1,265 @@
<?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</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" />
<link rel="alternate" type="application/atom+xml"
title="Follow updates on /{{syndicate}}{% if param_tags %} for Tag: #{{param_tags}}{% endif %}{% if param_url %} for URL: {{param_url}}{% endif %}{% if param_hash %} for hash: {{param_hash}}{% endif %}"
href="/{{syndicate}}?mode=feed{% if param_tags %}&amp;tags={{param_tags}}{% endif %}{% if param_url %}&amp;url={{param_url}}{% endif %}{% if param_hash %}&amp;hash={{param_hash}}{% endif %}" />
<link rel="alternate" type="application/atom+xml"
title="Subscribe to PubSub /{{syndicate}}{% if param_tags %} for Tag: #{{param_tags}}{% endif %}{% if param_url %} for URL: {{param_url}}{% endif %}{% if param_hash %} for hash: {{param_hash}}{% endif %}"
href="xmpp:{{pubsub_jid}}?pubsub;action=subscribe;node={{node_id}}" />
</head>
<body>
<div id="container">
<div id="header" class="row">
<h1>
<img src="/graphic/blasta.svg"/>
<a href="/">Blasta</a> / {{path}}{% if jid and jid != jabber_id %} / <a href="/jid/{{jid}}">{{jid}}</a>{% endif %}
</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 jid %}/jid/{{jid}}{% 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>
{% if pager %}
{% if page_next or page_prev %}
<div id="navigate-top">
{% if page_prev %}
«
<a href="?page={{page_prev}}{% if param_tags %}&amp;tags={{param_tags}}{% endif %}{% if param_query %}&amp;q={{param_query}}{% endif %}">
<b>retract</b></a>
{% else %}
<span class="inactive">« retract</span>
{% endif %}
or
{% if page_next %}
<a href="?page={{page_next}}{% if param_tags %}&amp;tags={{param_tags}}{% endif %}{% if param_query %}&amp;q={{param_query}}{% endif %}">
<b>proceed</b></a>
»
{% else %}
<span class="inactive">proceed »</span>
{% endif %}
</div>
{% endif %}
{% endif %}
{% if message %}
<p>
» {{message}}
{% if message_link %}
<a href="{{message_link['href']}}">
{{message_link['text']}}</a>.
{% endif %}
</p>
{% endif %}
<h3>{{description}}</h3>
{% if start %}
<p>
<a href="/save">Start</a>
your PubSub bookmarks directory with Blasta!
</p>
{% endif %}
<dl id="posts">
{% if entries %}
{% for entry in entries %}
<dd>
<article class="h-entry title">
<h4>
<a class="p-name"
href="{{entry['link']}}">
{{entry['title']}}</a>
</h4>
<!-- TODO Edit to be possible if entry is present -->
<!-- {% if jabber_id and entry['present'] %}{% endif %} -->
{% if jabber_id %}
{% if restore %}
<a href="{{link_save}}">restore</a>
{% elif delete %}
<a href="/url/{{entry['url_hash']}}/delete"
id="confirm">confirm deletion</a>
{% elif jabber_id == jid or exist or path in ('private', 'read') %}
<a href="/url/{{entry['url_hash']}}/edit">
edit</a>
/
<a href="/url/{{entry['url_hash']}}/confirm">
delete</a>
{% else %}
<a href="/url/{{entry['url_hash']}}/edit">
add</a>
{% endif %}
{% endif %}
<p class="p-summary summary">{{entry['summary']}}</p>
<div class="details">
{% if entry['tags'] | length > 0 %}
to
{% for tag in entry['tags'] %}
<a class="p-category"
href="{% if jid %}/jid/{{jid}}{% elif path in ('query', 'url') %}/{% endif %}?tags={{tag}}">
{{tag}}
</a>
{% endfor %}
{% endif %}
by
{% if jid %}
<a class="p-author" href="/jid/{{jid}}">{{jid}}</a>
{% else %}
<a class="p-author" href="/jid/{{entry['jid']}}">{{entry['name']}}</a>
{% endif %}
<a class="u-uid u-url" href="/url/{{entry['url_hash']}}">
{% if entry['instances'] and entry['instances'] != 1 %}
{% if entry['instances'] > 5000 %}
<span class="instances-degree-fifth">
{% elif entry['instances'] > 500 %}
<span class="instances-degree-fourth">
{% elif entry['instances'] > 50 %}
<span class="instances-degree-third">
{% elif entry['instances'] > 5 %}
<span class="instances-degree-second">
{% else %}
<span class="instances-degree-first">
{% endif %}
{% if entry['instances'] == 2 %}
and another one
{% else %}
and {{entry['instances']}} others
{% endif %}</span>
{% else %}
<span>details</span>
{% endif %}
</a>
at
<span class="dt-published date"
datetime="{{entry['published']}}">
{{entry['published_mod']}}
</span>
</div>
</article>
</dd>
{% endfor %}
{% endif %}
</dl>
</div>
<div id="related-tags">
<h3>Related tags</h3>
<dl>
{% for tag in tags %}
<dd>
<a href="{% if jid %}/jid/{{jid}}{% elif path in ('query', 'url') %}/{% endif %}?tags={{tag}}">
{{tag}}
</a>
({{tags[tag]}})
</dd>
{% endfor %}
<dd>
»
<a href="/tag/{% if jid %}{{jid}}{% endif %}">see more tags</a>
</dd>
</dl>
</div>
</div>
{% if pager %}
{% if page_next or page_prev %}
<div id="navigate-bottom" class="row">
{% if page_prev %}
« <a href="?page={{page_prev}}{% if param_tags %}&amp;tags={{param_tags}}{% endif %}{% if param_query %}&amp;q={{param_query}}{% endif %}"><b>retract</b></a>
{% else %}
<span class="inactive">« retract</span>
{% endif %}
or
{% if page_next %}
<a href="?page={{page_next}}{% if param_tags %}&amp;tags={{param_tags}}{% endif %}{% if param_query %}&amp;q={{param_query}}{% endif %}"><b>proceed</b></a> »
{% else %}
<span class="inactive">proceed »</span>
{% endif %}
</div>
{% endif %}
{% endif %}
<div id="subscribe" class="row">
<p>
<a href="xmpp:{{pubsub_jid}}?pubsub;action=subscribe;node={{node_id}}">
<img src="/graphic/xmpp.svg" width="16" height="16"/>
PubSub
</a>
and
<a href="/{{syndicate}}?mode=feed{% if param_tags %}&amp;tags={{param_tags}}{% endif %}{% if param_url %}&amp;url={{param_url}}{% endif %}{% if param_hash %}&amp;hash={{param_hash}}{% endif %}">
<img src="/graphic/syndicate.svg" width="16" height="16"/>
RSS
<!-- img src="/graphic/atom.svg" width="36" height="14" alt="Atom"/ -->
</a>
feeds for this page are available.
</p>
</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>

95
xhtml/connect.xhtml Normal file
View file

@ -0,0 +1,95 @@
<?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</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> / connect
</h1>
<dl id="navigation">
<dd>
<img src="/graphic/blasta.svg"/>
</dd>
<dd>
<a href="/search">Search</a>
</dd>
<dd>
<a href="/popular">Popular</a>
</dd>
<dd>
<a href="/recent">Recent</a>
</dd>
<dd>
<a href="/connect">Connect</a>
</dd>
</dl>
</div>
<div id="main" class="row">
<div id="content">
<h2>&nbsp; PubSub Bookmarks</h2>
<p>» Connecting with XMPP.</p>
<h3>Connect to XMPP</h3>
<form method="post" action="/">
<label for="jabber_id">Jabber ID:</label>
<input type="email" id="jabber_id" name="jabber_id"
placeholder="Enter your Jabber ID." autofocus=""
required="" />
<label for="password">Password:</label>
<input type="password" id="password" name="password"
placeholder="Enter your password." required="" />
<input class="submit" type="submit" value="Connect"/>
<!-- input type="checkbox" id="remember" name="remember" checked="checked"/>
<label for="remember">Remember</label -->
</form>
<p>
Log in to Blasta with your XMPP account or
<a href="/register">register</a> for an account.
</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>

168
xhtml/contact.xhtml Normal file
View file

@ -0,0 +1,168 @@
<?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</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> / contact
</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>
» Herein contant information.
</p>
<h3 id="contact">
Contact
</h3>
<p>
You can reach us by the following means.
</p>
{% if contact_mix or contact_muc %}
<dl class="h-card">
<h4 class="p-name"
id="mix">
Blasta Community
</h4>
{% if contact_mix %}
<dd>
MIX Groupchat
<br/>
<a class="u-xmpp-mix"
href="xmpp:{{contact_mix}}?join">
{{contact_mix}}</a>
</dd>
{% endif %}
{% if contact_muc %}
<dd>
MUC Groupchat
<br/>
<a class="u-xmpp-muc"
href="xmpp:{{contact_muc}}?join">
{{contact_muc}}</a>
</dd>
{% endif %}
{% if contact_irc_channel and contact_irc_server %}
<dd>
IRC Channel
<br/>
<a class="u-irc"
href="irc://{{contact_irc_server}}/{{contact_irc_channel}}">
{{contact_irc_channel}}</a>
at {{contact_irc_server}}
</dd>
{% endif %}
</dl>
{% endif %}
{% if contact_xmpp or contact_email %}
<dl class="h-card">
<h4 class="p-name"
id="jabber">
Blasta Contact
</h4>
{% if contact_xmpp %}
<dd>
Send a Jabber message
<br/>
<a class="u-xmpp"
href="xmpp:{{contact_xmpp}}?message">
{{contact_xmpp}}</a>
</dd>
{% endif %}
{% if contact_email %}
<dd>
Send an Email message
<br/>
<a class="u-email"
href="mailto:{{contact_email}}?subject=Blasta">
{{contact_email}}</a>
</dd>
{% endif %}
</dl>
{% endif %}
<br/>
<p class="quote bottom">
“Be seeing you.”
― Blasta
</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>

274
xhtml/edit.xhtml Normal file
View file

@ -0,0 +1,274 @@
<?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</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> / {{path}}
</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>
» Bookmark a link to your personal PubSub node.
</p>
<h3>
{{description}}
</h3>
<!-- You might not want to do it.
Try to bookmark psi-plus.com with a bookmarklet;
Replace URL by XMPP URI of groupchat Psi+;
Problem: The URL MD5 checksum is different than the expected one; and
that would result in an error; and
consequently a malformed operation! -->
<form id="editor" method="post"
action="{% if url_hash %}/url/{{url_hash}}{% else %}/save{% endif %}">
<table>
<tr>
<th>
<label for="url">URL *</label>
</th>
<td>
{% if confirm or edit %}
<input id="url"
name="url"
required=""
type="hidden"
value="{{url}}" />
<p>{{url}}</p>
{% else %}
<input id="url"
name="url"
placeholder="Enter a URL (required)."
required=""
type="url"
value="{{url}}" />
{% endif %}
</td>
</tr>
<tr>
<th>
<label for="title">Title *</label>
</th>
<td>
{% if confirm %}
<input id="title"
name="title"
required=""
type="hidden"
value="{{title}}" />
<p>{{title}}</p>
{% else %}
<input id="title"
placeholder="Enter a title (required)."
required=""
type="text" name="title"
value="{{title}}" />
{% endif %}
</td>
</tr>
<tr>
<th>
<label for="summary">Summary</label>
</th>
<td>
{% if confirm %}
<textarea hidden=""
id="summary"
name="summary">
{{summary}}</textarea>
<p class="summary">{{summary}}</p>
{% else %}
<textarea cols="40"
id="summary"
name="summary"
placeholder="Enter a summary (recommended)."
rows="5">{{summary}}</textarea>
{% endif %}
</td>
</tr>
<tr>
<th>
<label for="tags">Tags</label>
</th>
<td>
{% if confirm %}
<input type="hidden" id="tags" name="tags"
value="{{tags}}"/>
<p>{{tags}}</p>
{% else %}
<input type="text" id="tags" name="tags"
placeholder="Enter tags (comma
separated). Example: culture, family, leisure, salt lake city (or city:salt-lake)."
value="{{tags}}" autofocus=""/>
{% endif %}
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>
{% if confirm %}
<input type="submit" value="Save"/>
{% else %}
<input type="submit" value="Proceed"/>
{% endif %}
{% if confirm %}
<input type="hidden" id="node" name="node"
value="{{node}}"/>
<span>[ {{node}} ]</span>
{% else %}
<input {% if routine == 'private' or node == 'private' %}checked=""{% endif %}
id="private"
name="node"
required=""
type="radio"
value="private" />
<label for="private"
title="Keep link private (whitelist).">
Private
</label>
<input {% if routine == 'public' or (node and node not in ('private', 'read')) %}checked=""{% endif %}
id="public"
name="node"
type="radio"
value="public"/>
<label for="public"
title="Share link (open).">
Public
</label>
<input {% if routine == 'read' or node == 'read' %}checked=""{% endif %}
id="read"
name="node"
type="radio"
value="read"/>
<label for="read"
title="Keep link private and save it
to reading list (whitelist).">
Read
</label>
(<abbr title="Blasta manages your bookmarks
within three PubSub nodes: Public, Private and Read. Move your cursor on a label
to view details.">
?
</abbr>)
{% endif %}
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>
<p>
<i>
Fields that are marked with an asterisk
(*) are required.
</i>
</p>
<p>
<i>
Press key F5 or reload page to reset
form values.
<!-- input type="reset" value="Reset"/ -->
</i>
</p>
</td>
</tr>
</table>
{% if published %}
<input id="published"
name="published"
required=""
type="hidden"
value="{{published}}"/>
{% endif %}
<!-- Use this hidden form to indicate that a database update is required -->
<input id="update"
name="update"
required=""
type="hidden"
value="yes"/>
<input id="tags_old"
name="tags_old"
type="hidden"
value="{{tags}}"/>
</form>
</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>

185
xhtml/feeds.xhtml Normal file
View file

@ -0,0 +1,185 @@
<?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</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> / feeds
</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 feeds of Blasta.</p>
<h3 id="introduction">An introduction to feeds</h3>
<p>
A feed, or "Atom", or "Syndication", or "RSS" (Really Simple
Syndication or Rich Site Summary) is a mean that allows you
to receive news articles and other updates from sites
quickly and conveniently through the installation of a Feed
Reader (also News Reader or RSS Reader) similar to e-mail.
</p>
<p>
Through RSS, you can easily receive news updates on your PC,
mobile and tablet without visiting the site yourself, which
spares the need for you to manually check the site for new
content.
</p>
<h4 id="atom-over-http">Atom Over HTTP</h4>
<p>
Blasta offers Atom feeds for you to subscribe with your News
Reader.
</p>
<p>
The subscriptions to Atom Syndication Feeds are centralized
to the Blasta server.
</p>
<p>
If you do not have a News Reader yet, please refer to our
<a href="/help/syndication#software">
selection of News Readers</a>.
</p>
<h4 id="atom-over-xmpp">Atom Over XMPP</h4>
<p>
Since Blasta is based upon XMPP, Blasta offers
<a href="/help/about/xmpp/pubsub">PubSub</a> feeds for you
to subscribe with XMPP clients such as
<a href="https://leechcraft.org">LeechCraft</a>,
<a href="https://libervia.org">Libervia</a>,
<a href="https://movim.eu">Movim</a> and
<a href="https://github.com/SeveFP/Reeder">Reeder</a>.
</p>
<p>
Generally, there are two types of PubSub subscriptions:
<ol>
<li>
Peer to peer subscription which allows you to
subscribe directly to a Blasta node of a contact.
</li>
<li>
Peer to server subscription that is exclusive to
Blasta which offers its special nodes, such as
"popular", "recent", "tag" and "url" variants.
</li>
</ol>
</p>
<p>
Technically, both PubSub subscriptions are the same, yet the
"peer to peer" type of subscription is entirely independent
from Blasta.
</p>
<h4 id="http-xmpp">Which is better, HTTP or XMPP?</h4>
<p>It depends on your use case.</p>
<p>
If you want to receive immediate updates and save bandwidth
then XMPP would be a good choice for you.
</p>
<p>
If you rather want to be anonymous to the Blasta system or
to a peer, and you do not care so much for bandwidth and,
perhaps, you also want to be behind a mixnet or proxy such
as I2P or Tor, then HTTP would be a good choice for you.
</p>
<p>
Please note, that most of the XMPP desktop clients do not
yet provide graphical interfaces for PubSub, so you might
have to resort to the HTTP method, until XMPP desktop
clients would provide graphical interfaces for PubSub.
</p>
<p>
For more information about Blasta feeds, please refer to the
feeds <a href="/help/syndication#patterns">legend</a>.
</p>
<h4 id="conclusion">Conclusion</h4>
<p>
The syndication feeds of Blasta are available in two forms
(HTTP and XMPP) and can be utilized via any mean you think
is fit to you, be it a Feed Reader or an XMPP Client. You
can decide by your own personal preference.
</p>
<br/>
<p class="quote bottom">
“Syndication is, in fact, the technology that the
Fortune 500, so called, do not want you to know about”
― Alex James Anderson
</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>

148
xhtml/help.xhtml Normal file
View file

@ -0,0 +1,148 @@
<?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</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> / help
</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 of Blasta.</p>
<h3>Contents</h3>
<p>
The following references provide references to features that
are available on XMPP and to features are offered by Blasta,
and also disclose the mechanisms which Blasta utilizes.
</p>
<div id="table">
<div>
<h4>About</h4>
<p><a href="/help/about">Blasta</a></p>
<p><a href="/help/about/ideas">Ideas</a></p>
<p><a href="/help/about/philosophy">Philosophy</a></p>
<p><a href="/help/about/projects">Projects</a></p>
<p><a href="/help/about/software">Software</a></p>
<p><a href="/help/about/thanks">Thanks</a></p>
</div>
<div>
<h4>Help</h4>
<p><a href="/help/feeds">Feeds</a></p>
<p><a href="/help/questions">Questions</a></p>
<p><a href="/help/syndication">Syndication</a></p>
<p><a href="/help/utilities">Utilities</a></p>
</div>
<div>
<h4>Personal</h4>
<p><a href="/contact">Contact</a></p>
<p><a href="/now">Now</a></p>
</div>
<div>
<h4>Policy</h4>
<p><a href="/help/policy/copy">Copy</a></p>
<p><a href="/help/policy/privacy">Privacy</a></p>
<p><a href="/help/policy/terms">Terms</a></p>
</div>
{% if jabber_id %}
<div>
<h4>Profile</h4>
<p><a href="/profile">About</a></p>
<p><a href="/profile#enrollment">Enrollment</a></p>
<p><a href="/profile#export">Export</a></p>
<p><a href="/profile#import">Import</a></p>
<p><a href="/profile#permissions">Permissions</a></p>
<p><a href="/profile#routine">Routine</a></p>
<p><a href="/profile#termination">Termination</a></p>
</div>
{% endif %}
<div>
<h4>XMPP</h4>
<p><a href="/help/about/xmpp/atomsub">Atomsub</a></p>
<p><a href="/help/about/xmpp/libervia">Libervia</a></p>
<p><a href="/help/about/xmpp/movim">Movim</a></p>
<p><a href="/help/about/xmpp/pubsub">PubSub</a></p>
<p><a href="/help/about/xmpp">XMPP</a></p>
</div>
</div>
</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>

227
xhtml/ideas.xhtml Normal file
View file

@ -0,0 +1,227 @@
<?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</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> / ideas
</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>» Some ideas which illustrate potential uses for Blasta.</p>
<h3>The things that you can do with Blasta are endless</h3>
<p>
Blasta is an open-ended indexing system, and, as such, it
provides a versatile platform with which you have the
ability to tailor its usage according to your desired
preferences. Here are some illustrative scenarios:
</p>
<h4>Research</h4>
<p>
Whether you are composing an article, delving into an
industry, or diligently working on your dissertation,
leverage Blasta to organize and store your online source
materials and insights.
</p>
<h4>Podcast</h4>
<p>
Explore a plethora of captivating podcasts by visiting
<a href="{{origin}}/tag/podcast?filetype=spx">
/tag/podcast?filetype=spx
</a> or
<a href="{{origin}}/tag/podcast?filetype=ogg">
/tag/podcast?filetype=ogg
</a> and enjoy enriching content.
</p>
<p>
Additionally, Blasta offers
<a href="/help/syndication#patterns">Atom and PubSub
feeds</a> that seamlessly integrate with
<a href="/help/syndication#software">Feed Readers</a>. If
you are a podcaster, upload your spx, ogg or mp3 files to
Blasta to generate a dedicated feed for your audience.
</p>
<h4>News</h4>
<p>
If you are intending to start a site of news flash, then
Blasta can be an adequate solution for you.
</p>
<p>
Additionally, you can also use Blasta to manage your notes.
</p>
<h4>Travel</h4>
<p>
Facilitate trip planning by saving links related to
accommodations, activities, and transportation on Blasta
using tags such as "leisure", "travel", "vacation", and
"tovisit" (to visit). Engage in collaborative trip planning
with friends and family members by utilizing the tag
"for:{% if jabber_id %}{{jabber_id}}{% else %}jid{% endif %}".
</p>
<h4>Employment</h4>
<p>
Stay updated on job openings and industry trends by
following specific tags related to your field of interest on
Blasta. For instance, you can subscribe to tags like
"directory:job", "directory:vacancy", "news:career", or
"news:industry" to access relevant articles and resources.
</p>
<p>
Additionally, use Blasta to bookmark useful resources for
resume building, interview tips, and
professional development.
</p>
<h4>File sharing</h4>
<p>
Share you favourite contents that you share via BitTorrent,
eD2k or IPFS, whether publicly by
<a href="{{origin}}/tag/?filetype=torrent">
/tag/?filetype=torrent
</a> and
<a href="{{origin}}/tag/?protocol=magnet">
/tag/?protocol=magnet
</a> or whether privately by utilizing the tag
"for:{% if jabber_id %}{{jabber_id}}{% else %}jid{% endif %}".
</p>
<p>
Additionally, you might also want to research for new
content on the BitTorrent network by following tags
"brand:milw0rm", "brand:roflcopter2110", "brand:redice", or
"brand:red-ice"; or any other brand which is associated with
contents that you desire.
</p>
<h4>Tracker</h4>
<p>
You can run your own instance of Blatsa and determine to
index only magnet links, be it of BitTorrent or eD2k links.
And with the correct set of plugins you can even turn it
into a BitTorrent tracker.
</p>
<h4>Sell</h4>
<p>
If you are selling items online, you can use Blasta to
create a categorized list of your products for easy sharing
with potential buyers. Tag your items with descriptive
keywords such as "sale:furniture", "sale:electronics", or
"sale:vintage" and "sale:clothing" to attract the right
audience. You can also share your Blasta profile link on
other sites or in online marketplaces to showcase your
items.
</p>
<h4>Trade</h4>
<p>
Engage in trading communities by tagging items you are
willing to trade with specific tags such as "trading",
"barter", or "swap". You can also join trading groups on
Blasta to connect with like-minded individuals interested in
exchanging goods or services.
</p>
<p>
Additionally, use Blasta to bookmark resources related to
trading strategies, bartering tips, and best practices for
successful exchanges.
</p>
<h4>Wishlist</h4>
<p>
While browsing through various of online shopping platforms,
bookmark items that you are interested at and categorize
them under "wishlist". Share your curated list with others
by directing them to
{% if jabber_id %}
<a href="{{origin}}/{{jabber_id}}/wishlist">
/{{jabber_id}}/wishlist
</a>
{% else %}
{{origin}}/YOUR_JID/wishlist
{% endif %}
</p>
<h4>More ideas</h4>
<p>
Codex, Contacts, Geographic Location, Notes manager, and even more.
</p>
<br/>
<p class="quote bottom">
“Think, while it is still legal.”
</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>

368
xhtml/libervia.xhtml Normal file
View file

@ -0,0 +1,368 @@
<?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</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> / libervia
</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>
» The Universal Communication Ecosystem.
</p>
<h3>About Libervia</h3>
<p>
Libervia is a all-in-one tool to manage all your
communications needs: instant messaging, (micro)blogging,
file sharing, photo albums, events, forums, tasks, etc.
</p>
<h4>What is Libervia?</h4>
<p>
Libervia (formerly "Salut à Toi") is a Libre communication
ecosystem based on XMPP standard. It allows you to do many
things such as:
<ul>
<li>instant messaging;</li>
<li>(micro)blogging;</li>
<li>file sharing;</li>
<li>managing photo albums;</li>
<li>organizing/managing events;</li>
<li>handling tasks;</li>
<li>etc.</li>
</ul>
It features many interfaces (desktop, mobile, web, command
line, console), and is multi-platforms.
</p>
<h4>Motives</h4>
<p>
The project "Libervia" was born from a need to protect our
liberties, our privacy and our independence. It is intended
to protect the rights and liberties people have regarding
their own private and numeric data, their acquaintance's,
and the data they handle; it is also intended to be a human
contact point, not substituting itself to physical
encounters, but rather facilitating them. Libervia will
always fight against all forms of technology control by
private interests. The network must belong to everybody, and
be a force of expression and freedom for all Humanity.
</p>
<h4>Social Contract</h4>
<p>
Towards this end, "Libervia" and those who participate in
the project operate on a Social Contract, a commitment to
those who use it. This Contract involves the following
points:
<ul>
<li>
We put the freedom at the top of our priorities:
freedom of the people, freedom with her data. To
achieve this, "Libervia" is a Libre Software - an
essential condition - and its infrastructure also
relies on Libre Software, meaning softwares that
respect the 4 fundamental rules :
<ol>
<li>
The freedom to run the program for any
purpose.
</li>
<li>
The freedom to study how the program works,
and change it to make it do what you wish.
</li>
<li>
The freedom to redistribute copies so you
can help your neighbor.
</li>
<li>
The freedom to improve the program, and
release your improvements (and modified
versions in general) to the public, so that
the whole community benefits. You have the
full possibility to install your own version
of "Libervia" on your own machine, to verify
- and understand - how it works, adapt it to
your needs, and share the knowledge with
your friends.
</li>
</ol>
</li>
<li>
The information regarding the people belong to them,
and we will never have the pretention - and
indecency ! - to consider the content that they
produce or relay via "Libervia" as our property. As
well, we commit ourselves to never make profit from
selling any of her personal information.
</li>
<li>
We greatly encourage a general decentralisation.
"Libervia" being based on a decentralised protocol
(XMPP), it is by nature decentralised. This is
essential for a better protection of your
information, a better resistance to censorship and
hardware or software failures, and to alleviate
authoritarian tendencies.
</li>
<li>
By fighting against the attempts at private control
and commercial abuses of the network, and trying to
remain independent, we are absolutely opposed to any
form of advertisement: you will never see any
advertisement coming from us
</li>
<li>
The people Equality is essential for us, we refuse
any kind of discrimination, being based on
geographical location, population category, or any
other ground.
</li>
<li>
We will do whatever is possible to fight against any
kind of censorship including protecting the speech
of victims of harassment, hate speech, threats,
humiliation and anything that could lead to self
censorship. The network must be a means of
expression for everyone.
</li>
<li>
We refuse the mere idea of an absolute authority
regarding the decisions taken for "Libervia" and how
it works, and the choice of decentralisation and the
use of Libre Software allows to reject all hierarchy.
</li>
<li>
The idea of Fraternity is essential. This is why:
<ol>
<li>
we will help the people, whatever their
computer literacy is, to the extent of what we can
</li>
<li>
we will as well commit ourselves to help the
accessibility to "Libervia" for all
</li>
<li>
"Libervia" , XMPP, and the technologies used
help facilitate the electronic exchanges,
but we strive to focus on real and human
exchanges : we will always favor Real on
Virtual.
</li>
</ol>
</li>
</ul>
</p>
<h4>Features</h4>
<p>
<ul>
<li>
Chat with your friends, family or coworkers;
</li>
<li>
Encrypt conversations to protect your privacy;
</li>
<li>
Blog publicly or only with a group of contacts;
</li>
<li>
Share files directly (peer to peer) or store them on
your server and access them from anywhere;
</li>
<li>
Share private photos albums with your family;
</li>
<li>
Create and manage events;
</li>
<li>
Organise your day to day life or work with lists.
</li>
</ul>
</p>
<h4>Interfaces</h4>
<p>
<ul>
<li>
Works natively on desktop;
</li>
<li>
Works on the web;
</li>
<li>
Works natively on mobile devices;
</li>
<li>
Cross-platform;
</li>
<li>
Powerful command-line interface;
</li>
<li>
Highly modular and customisable;
</li>
<li>
Lot of powerful tools and features accompany the
project, please check the
<a href="https://libervia.org/documentation">
documentation</a>.
</li>
</ul>
</p>
<p>
With its easy invitation system, you can smoothly meet your
family or friends. It is a perfect fit to share with your
loved ones.
</p>
<p>
Libervia is a Libre software, based on well established
standards (XMPP), decentralised and federating. It is
developed around strong ethical values. Check our
<a href="https://libervia.org/social_contract">social
contract</a>.
</p>
<h4>Press</h4>
<p>
<ul>
<li>
<a href="http://andre-ani.fr/news/profil-libriste-goffi/">
Profil de libriste : Goffi
</a>
(andre-ani.fr)
</li>
<li>
<a href="https://framablog.org/2015/11/02/salut-a-toi-couteau-suisse-des-reseaux-sociaux-libres/">
Salut à toi, couteau suisse des réseaux sociaux libres
</a>
(framablog.org)
</li>
<li>
<a href="https://libervia.org/press">
Libervia Press
</a>
(libervia.org)
</li>
<li>
<a href="https://www.linux-magazin.de/news/salut-a-toi-verbesserter-xmpp-client/">
Salut à Toi; Verbesserter XMPP-Client
</a>
(linux-magazin.de)
</li>
<li>
<a href="https://linuxfr.org/tags/s%C3%A0t/public">
Tous les contenus étiquetés avec « sàt » - LinuxFr.org
</a>
(linuxfr.org)
</li>
<li>
<a href="https://reflets.info/articles/sat-le-couteau-suisse-libre-et-open-source-de-la-communication">
SàT : le couteau suisse Libre et open source de la communication
</a>
(reflets.info)
</li>
</ul>
</p>
<h4>Resources</h4>
<p>
<ul>
<li>
<a href="https://libervia.org">
Official Site
</a>
(libervia.org)
</li>
<li>
<a href="xmpp:libervia@chat.jabberfr.org?join">
Official Group Chat
</a>
(chat.jabberfr.org)
</li>
</ul>
</p>
<br/>
<p class="quote bottom">
"Salut a Toi" is the name of the association which manages
Libervia.
</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>

219
xhtml/movim.xhtml Normal file
View file

@ -0,0 +1,219 @@
<?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</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> / movim
</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>
» The social platform shaped for your community.
</p>
<h3>About Movim</h3>
<p>
Movim is an abbreviation of "My Open Virtual Identity
Manager" and is a distributed social network which, just
like Blasta, is built on top of XMPP.
</p>
<p>
Movim allows people to communicate easily with their
friends, family, and work colleagues using chatroom, video
conferences, and private messaging. Movim works as a
front-end for XMPP network.
</p>
<p>
Movim can act as your decentralized messaging app or a
full-fledged social media platform giving you an all-in-one
experience without relying on a centralized network.
</p>
<p>
Movim addresses the privacy concerns related to centralized
social networks by allowing people to set up their own
server (or "pod") to host content; pods can then interact to
share status updates, photographs, and other social data.
</p>
<p>
People can export their data to other pods or offline
allowing for greater flexibility.
</p>
<p>
Movim allows to host data with a traditional internet host,
a VPS-based host, an ISP, or a friend.
</p>
<p>
The framework, which is built upon PHP, is a free software
and can be experimented with by external developers.
</p>
<h4>What is Movim?</h4>
<p>
Movim is a social and chat platform that acts as a frontend
for the XMPP network.
</p>
<p>
Once deployed Movim offers a complete social and chat
experience for the decentralized XMPP network. It can easily
connect to several XMPP servers at the same time.
</p>
<p>
With a simple configuration it can also be restricted to one
XMPP server and will then act as a powerful frontend for it.
Movim is fully compatible with the most used XMPP servers
such as ejabberd or Prosody.
</p>
<h4>Blogs &amp; Communities</h4>
<p>
Movim simplifies the management of your publications and
news articles. So forget the ads, forget the superfluous. We
designed an interface that really focuses on your content.
</p>
<p>
In Communities you can publish and subscribe to various
nodes on different topics. Just click on the Communities
link in your menu and start exploring!
</p>
<h4>Chats &amp; Chatrooms</h4>
<p>
Start a conversation with a friend or join a multi-user
chatroom in one click.
</p>
<p>
Movim chats are coming with many features to give you the
best chat experience across all your devices
</p>
<h4>Let's get started!</h4>
<p>
<a href="https://join.movim.eu/register">
Create an XMPP account</a>
and join one of our public instances on
<a href="https://join.movim.eu">
join.movim.eu</a>
(If you already have a XMPP account, you can directly join).
</p>
<h4>Press</h4>
<p>
<ul>
<li>
<a href="https://itsfoss.com/movim/">
Movim: An Open-Source Decentralized Social Platform Based on XMPP Network
</a>
(itsfoss.com)
</li>
<li>
<a href="https://medevel.com/movim/">
Movim: a decentralized open-source XMPP-based messaging and social platform
</a>
(medevel.com)
</li>
<li>
<a href="https://www.zdnet.fr/actualites/reseaux-sociaux-decentralises-movim-peut-il-reussir-la-ou-diaspora-a-echoue-39791588.htm">
Réseaux sociaux décentralisés : Movim peut-il réussir là où Diaspora a échoué
</a>
(zdnet.fr)
</li>
</ul>
</p>
<h4>Resources</h4>
<p>
<ul>
<li>
<a href="https://movim.eu">
Official Site
</a>
(movim.eu)
</li>
<li>
<a href="xmpp:movim@conference.movim.eu?join">
Official Group Chat
</a>
(conference.movim.eu)
</li>
</ul>
</p>
<br/>
<p class="quote bottom">
Blasta was inspired by Movim and Rivista.
</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>

147
xhtml/now.xhtml Normal file
View file

@ -0,0 +1,147 @@
<?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</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> / now
</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>» The /now page movement.</p>
<h3>Now page</h3>
<p>This is the <b>/now page</b> of Blasta.</p>
<p>
Blasta is dancing happily and is also recommending you to do
the same, especially when you wake up after a good night ;-)
</p>
<p>
And in case you want to know what Blasta is doing today,
please read this list.
</p>
<h4>Eternity</h4>
<p>
Blasta is adopting the attitude of "living for the sake of
eternity", the attitude of living with eternity always in
mind, instead of living only for the moment.
</p>
<h4>Empowerment</h4>
<p>
Blasta is empowering people by making the access to
information open, impartial and unbiased.
</p>
<h4>Sovereignty</h4>
<p>
Blasta is respecting the privacy of people and consequently
preserving their sovereignty and their precious information.
</p>
<h4>Knowledge</h4>
<p>
Blasta is intending to enhance the access to valuable
knowledge and information.
</p>
<h4>Features</h4>
<p>
Blasta is working on new enhancements and features, namely
to make its database federated and shared between multiple
instances, by adding support for the protocol DHT, either by
BitTorrent or IPFS or even both; and
</p>
<p>
Blasta is also working on adding support for Gemini and
Gopher; and
</p>
<p>
Blasta is further working on new extensions and userscripts.
</p>
<h4>Dance</h4>
<p>
Blasta just loves to dance and be happy!
</p>
<br/>
<p class="quote bottom">
Visit <a href="https://nownownow.com">nownownow.com</a>,
for more /now pages.
</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>

165
xhtml/philosophy.xhtml Normal file
View file

@ -0,0 +1,165 @@
<?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</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> / philosophy
</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>» The principles of Blasta.</p>
<h3>Philosophy</h3>
<p>
This document explains the fundamental principles of Blasta
and sharing of referential resources (also known as
"bookmarks").
</p>
<p>
Some ideas that are conveyed in this article were taken
from the video
<a href="magnet:?xt=urn:btih:7ea94c240691311dc0916a2a91eb7c3db2c6f3e4&amp;dn=trusted-computing">
Trusted Computing</a>.
</p>
<p> Visit <a href="http://againsttcpa.com">AgainstTCPA.com</a>
to learn more about the subject of computing and trust.
</p>
<h4 id="control">Control</h4>
<p>
You can control your bookmarks <u>by your own personal
conviction</u> (minute 00:01:30 to the video), and the most
that Blasta can ever do, is to not accept links into its
system, and that is it. Blasta will never be able to remove
information from your system without you doing so by
yourself.
</p>
<h4 id="think">Think</h4>
<p>
The Blasta system is constructed and designed in a fashion
which would encourage, inspire and exert your mind to incite
yourself to research, investigate, discover, and, most
importantly, to own and to think.
</p>
<h4 id="trust">Trust</h4>
<p>
TRUST | confidence.
</p>
<p class="quote">
Trust is the personal believe in correctness of something.
</p>
<p class="quote">
It is the deep conviction of truth and rightness, and can
not be enforced.
</p>
<p class="quote">
If you gain someone's trust, you have established an
interpersonal relationship, based on communication, shared
values and experiences.
</p>
<p class="quote">
TRUST always depends on mutuality.
</p>
<h4 id="conclusion">Conclusion</h4>
<p>
Blasta is designed for organizing, sharing and spreading of
information in a collaborative fashion, be it in an
exclusive manner, by the use of selective authorizations or
inclusive manner, or both.
</p>
<p>
Blasta is designed for people to control their information,
or more precisely, not to disrupt nor sabotage freedoms.
</p>
<p>
By these, to a great degree, you are able to make use of
Blasta in any shape that you desire, and consequently form
your bookmarks in your own image.
</p>
<br/>
<p class="quote bottom">
So God created man in his own image, in the image of God
created he him; male and female created he them.
― Genesis 1:27 (KJV)
</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>

490
xhtml/profile.xhtml Normal file
View file

@ -0,0 +1,490 @@
<?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</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> / profile
</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>
<a href="/disconnect">Disconnect</a>
</dd>
</dl>
</div>
<div id="main" class="row">
<div id="content">
<h2>&nbsp; PubSub Bookmarks</h2>
<p>» Information of your Jabber ID.</p>
<h3>Your Profile</h3>
<p>
This page provides a general survey of your XMPP account and
stored bookmarks.
</p>
<!--
<h4 id="enrollment">Enrollment</h4>
<p>
Blasta does not automatically include your public bookmarks
to its database.
</p>
<p>
You have to actively accept to enroll your bookmarks to the
Blasta database.
</p>
<p>
{% if enroll == '1' %}
Click the button “Opt out”, if you want to exclude your
bookmarks in the Blasta database, and consequently not
to share your bookmarks with the public.
{% else %}
Click the button “Opt in”, if you want to include your
bookmarks in the Blasta database, and consequently share
your bookmarks with the public.
{% endif %}
</p>
<form action="/profile"
method="post">
<input id="enroll"
name="enroll"
type="hidden"
value="{% if enroll == '1' %}0{% else %}1{% endif %}"/>
<input class="submit"
type="submit"
value="{% if enroll == '1' %}Opt Out{% else %}Opt In{% endif %}"/>
<span>
You can opt {% if enroll == '1' %}in{% else %}out{% endif %}
again, at any time you want.
</span>
</form>
<p class="warning">
If you choose to cancel your enrollment (i.e. Opt out)
and a bookmark of yours is also shared by someone else,
then the bookmark be remain in the Blasta system, and
only the asociation with your <abbr title="Jabber ID">
JID</abbr> be removed.
</p>
<p class="warning">
Directories “Private” and “Read” are private and are
intended only to you.
These couple of directories are not intended to be
included in the Blasta system, and are not sharable
therefore.
</p>
-->
<h4 id="export">Export</h4>
<p>
Export bookmarks to a file.
</p>
<p>
<!-- TODO Add XBEL, XHTML and XML -->
<dl>
<dt>
<strong>Private</strong>
</dt>
<dd>
<a download="{{jabber_id}}_private.json"
href="/profile/export/private/json">
JSON</a>,
<a download="{{jabber_id}}_private.toml"
href="/profile/export/private/toml">
TOML</a>.
</dd>
<dt>
<strong>Public</strong>
</dt>
<dd>
<a download="{{jabber_id}}_public.json"
href="/profile/export/public/json">
JSON</a>,
<a download="{{jabber_id}}_public.toml"
href="/profile/export/public/toml">
TOML</a>.
</dd>
<dt>
<strong>Read</strong>
</dt>
<dd>
<a download="{{jabber_id}}_read.json"
href="/profile/export/read/json">
JSON</a>,
<a download="{{jabber_id}}_read.toml"
href="/profile/export/read/toml">
TOML</a>.
</dd>
</dl>
</p>
<h4 id="import">Import</h4>
<p>
Import bookmarks from a file, and choose a node to import
your bookmarks to.
</p>
<form action="/profile/import"
enctype="multipart/form-data"
id="import"
method="post">
<table>
<tr>
<td>
<strong>
<label for="file">File</label>
</strong>
</td>
<td>
<input id="file"
name="file"
placeholder="Select a file to import."
required=""
type="file" />
</td>
</tr>
<tr>
<td>
<strong>
<label for="node">Node</label>
</strong>
</td>
<td>
<input id="node-private"
name="node"
required=""
type="radio"
value="private"/>
<label for="node-private">Private</label>
<input id="node-public"
name="node"
type="radio"
value="public"/>
<label for="node-public">Public</label>
<input id="node-read"
name="node"
type="radio"
value="read"/>
<label for="node-read">Read</label>
</td>
</tr>
<tr>
<td>
<strong>
<label for="node">Action</label>
</strong>
</td>
<td>
<input id="merge"
disabled=""
name="merge"
type="checkbox"/>
<label for="merge"
title="Merge tags.">
Merge
</label>
<input id="override"
disabled=""
name="override"
type="checkbox"/>
<label for="override"
title="Replace properties by the
properties of the imported entries.">
Override
</label>
(<abbr title="Selecting Override &amp; Merge
will replace properties by the properties of the imported entries, and also
merge tags.">
?
</abbr>)
</td>
</tr>
</table>
<input class="submit"
type="submit"
value="Import Bookmarks"/>
</form>
<h4 id="permissions">Permissions</h4>
<p>
Choose the desired
<a href="https://xmpp.org/extensions/xep-0060.html#accessmodels">
access models</a>
of your directories.
</p>
<form action="/profile"
method="post">
<table>
<tr>
<td>
<strong>
Private
</strong>
</td>
<td>
<input id="private-authorize"
{% if access_models['private'] == 'authorize' %}checked=""{% endif %}
disabled=""
name="private"
type="radio"/>
<label for="private-authorize"
title="The node owner must approve
all subscription requests, and only subscribers may retrieve items from the
node.">
Authorize
</label>
</td>
<td>
<input id="private-whitelist"
{% if access_models['private'] == 'whitelist' %}checked=""{% endif %}
disabled=""
name="private"
type="radio"/>
<label for="private-whitelist"
title="An entity may subscribe or
retrieve items only if on a whitelist managed by the node owner.">
Whitelist
</label>
</td>
</tr>
<tr>
<td>
<strong>
Public
</strong>
</td>
<td>
<input id="public-open"
{% if access_models['public'] == 'open' %}checked=""{% endif %}
disabled=""
name="public"
type="radio"/>
<label for="public-open"
title="Any entity may subscribe to
the node (i.e., without the necessity for subscription approval) and any entity
may retrieve items from the node (i.e., without being subscribed).">
Open
</label>
</td>
<td>
<input id="public-presence"
{% if access_models['public'] == 'presence' %}checked=""{% endif %}
disabled=""
name="public"
type="radio"/>
<label for="public-presence"
title="Any entity with a subscription
of type 'from' or 'both' may subscribe to the node and retrieve items from the
node; this access model applies mainly to instant messaging systems (see RFC
3921).">
Presence
</label>
</td>
<td>
<input id="public-roster"
{% if access_models['public'] == 'roster' %}checked=""{% endif %}
disabled=""
name="public"
type="radio"/>
<label for="public-roster"
title="Any entity in the specified
roster group(s) may subscribe to the node and retrieve items from the node; this
access model applies mainly to instant messaging systems (see RFC 3921).">
Roster
</label>
</td>
</tr>
<tr>
<td>
<strong>
Read
</strong>
</td>
<td>
<input id="read-authorize"
{% if access_models['read'] == 'authorize' %}checked=""{% endif %}
disabled=""
name="read"
type="radio"/>
<label for="read-authorize"
title="The node owner must approve
all subscription requests, and only subscribers may retrieve items from the
node.">
Authorize
</label>
</td>
<td>
<input id="read-whitelist"
{% if access_models['read'] == 'whitelist' %}checked=""{% endif %}
disabled=""
name="read"
type="radio"/>
<label for="read-whitelist"
title="An entity may subscribe or
retrieve items only if on a whitelist managed by the node owner.">
Whitelist
</label>
</td>
</tr>
</table>
<input class="submit"
disabled=""
type="submit"
value="Save Permissions"/>
<input class="submit"
disabled=""
type="reset"
value="Reset Permissions"/>
</form>
<h4 id="routine">Routine</h4>
<p>
Choose a routine (i.e. default) directory (i.e. node).
</p>
<form action="/profile"
method="post">
<input id="routine-private"
{% if routine == 'private' %}checked=""{% endif %}
name="routine"
required=""
type="radio"
value="private"/>
<label for="routine-private">Private</label>
<input id="routine-public"
{% if not routine or routine == 'public' %}checked=""{% endif %}
name="routine"
type="radio"
value="public"/>
<label for="routine-public">Public</label>
<input id="routine-read"
{% if routine == 'read' %}checked=""{% endif %}
name="routine"
type="radio"
value="read"/>
<label for="routine-read">Read</label>
<br/>
<input class="submit"
type="submit"
value="Set Routine Directory"/>
</form>
<p class="warning">
Please <a href="#export">export</a> your bookmarks before
proceeding.
</p>
<hr/>
<h4 id="termination">Termination</h4>
<p>
Due to security concerns, Blasta does not have a built-in
mechanism to delete nodes.
</p>
<p class="warning">
Warning! The following actions are irreversible and are
committed at your own risk!
</p>
<p>
If you want to delete your Blasta nodes from your XMPP
account, you can execute the following commands, using the
XML Console of <a href="https://gajim.org">Gajim</a>,
<a href="https://psi-im.org">Psi</a>, or
<a href="https://psi-plus.com">Psi+</a>.
</p>
<h4>Delete your public bookmarks</h4>
<pre>
&lt;iq type='set'
from='{{jabber_id}}'
to='{{jabber_id}}'
id='delete1'&gt;
&lt;pubsub xmlns='http://jabber.org/protocol/pubsub#owner'&gt;
&lt;delete node='urn:xmpp:bibliography:0'/&gt;
&lt;/pubsub&gt;
&lt;/iq&gt;
</pre>
<h4>Delete your private bookmarks</h4>
<pre>
&lt;iq type='set'
from='{{jabber_id}}'
to='{{jabber_id}}'
id='delete2'&gt;
&lt;pubsub xmlns='http://jabber.org/protocol/pubsub#owner'&gt;
&lt;delete node='xmpp:bibliography:private:0'/&gt;
&lt;/pubsub&gt;
&lt;/iq&gt;
</pre>
<h4>Delete your reading list</h4>
<pre>
&lt;iq type='set'
from='{{jabber_id}}'
to='{{jabber_id}}'
id='delete3'&gt;
&lt;pubsub xmlns='http://jabber.org/protocol/pubsub#owner'&gt;
&lt;delete node='xmpp:bibliography:read:0'/&gt;
&lt;/pubsub&gt;
&lt;/iq&gt;
</pre>
<br/>
<p class="quote bottom">
“Blasta bookmarks are stored on your own XMPP account.”
</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>

211
xhtml/projects.xhtml Normal file
View file

@ -0,0 +1,211 @@
<?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</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> / projects
</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>» Information about projects that are similar to Blasta.</p>
<h3>Similar projects</h3>
<p>
Same as with search engines, so called, Blasta is a
referential index (or, if you would, a bibliographical
index) of any
<abbr title="Uniform Resource Identifier">URI</abbr>
sequence that you desire, from Gemini and HTTP to Geo and
XMPP, and so we deem it relevant to list projects with
similar aims and objectives, and which do not hinder your
freedom.
</p>
<h4>
<a href="https://github.com/jarun/buku">
buku - Personal mini-portal in text.
</a>
</h4>
<p>
buku is a powerful bookmark manager and a personal textual
portal.
</p>
<p>
buku can import bookmarks from browsers or fetch the
title, tags and description of a URL from a given page. Use
your favourite editor to add, compose and update bookmarks.
Search bookmarks instantly with multiple search options,
including regex and a deep scan mode (handy with URLs).
</p>
<p>
There's no tracking, hidden history, obsolete records, usage
analytics or homing.
</p>
<p>
buku is a library too! There are several related projects,
including a browser plug-in.
</p>
<h4>
<a href="https://github.com/asciimoo/omnom">
Omnom - A webpage bookmarking and snapshotting service.
</a>
</h4>
<p>
Omnom is a bookmarking and snapshotting service, and
consists of two parts; a multi-user HTML application that
accepts bookmarks and snapshots and a browser extension
responsible for bookmark and snapshot creation.
</p>
<h4>
<a href="https://shaarli.readthedocs.io">
Shaarli - The personal, minimalist, super fast,
database-free, bookmarking service.
</a>
</h4>
<p>
Do you want to share the links you discover?
</p>
<p>
Shaarli is a minimalist bookmark manager and link sharing
service that you can install on your own server. It is
designed to be personal (single-user), fast and handy.
</p>
<h4>
<a href="https://searxng.org">
SearxNG - Search without being tracked.
</a>
</h4>
<p>
A free metasearch engine which aggregates results from
search services and databases.
</p>
<p>
SearXNG is a free internet metasearch engine which
aggregates results from more than 70 search services. People
are neither tracked nor profiled. Additionally, SearXNG can
be used over I2P and Tor for online anonymity.
</p>
<h4>
<a href="https://torrents-csv.com">
Torrents-CSV - A collaborative repository of torrents.
</a>
</h4>
<p>
Torrents.csv is a collaborative repository of torrents,
consisting of a searchable torrents.csv file. It aims to be
a universal file system for popular data.
</p>
<p>
Torrents.csv is a collaborative git repository of torrents,
consisting of a single, searchable torrents.csv file. Its
initially populated with a January 2017 backup of the pirate
bay, and new torrents are periodically added from various
torrents sites. It comes with a self-hostable webserver, a
command line search, and a folder scanner to add torrents.
</p>
<h4>
<a href="https://yacy.net">
YaCy - A free software for your own search engine.
</a>
</h4>
<p>
YaCy is a distributed Search Engine, based on a peer-to-peer
network.
</p>
<p>
Imagine if, rather than relying on the proprietary software
of a large professional search engine operator, your search
engine was run across many private devices, not under the
control of any one company or individual. Well, that is what
YaCy does!
</p>
<p>
YaCy was initially started as a bookmarking system.
</p>
<br/>
<p class="quote bottom">
It Is “All Of Us For All Of Us” Or We Are On Our Own.
<a href="https://nu.federati.net/main/public">Federati Nu</a>
</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>

251
xhtml/pubsub.xhtml Normal file
View file

@ -0,0 +1,251 @@
<?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</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>
<a href="/?tags=directory:torrent">
directory:torrent
</a>
<a href="/?tags=service:search">
service:search
</a>
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>
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>
<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>

329
xhtml/questions.xhtml Normal file
View file

@ -0,0 +1,329 @@
<?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</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> / questions
</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>» Queries about Blasta.</p>
<h3>Questions</h3>
<p>
This document enumerates questions that were referred to the
project Blasta.
</p>
<h4 id="what-is-jid">What is JID and what does it mean?</h4>
<p>
JID is an abbreviation of Jabber ID.
</p>
<p>
A Jabber ID is the address of your XMPP account with which
Blasta identifies you.
</p>
<h4 id="what-is-instance-keyword">
What is the instance:keyword method?
</h4>
<p>
The method instance:keyword is a practice which improves
bookmarks organizing, archiving, filtering and searching, as
it narrows the context of a given bookmark.
</p>
<p>
Suppose you have two bookmarks; one is related to
maintenance and removal of rust, while the other is related
to the computer language which is called rust.
</p>
<p>
To make the tagging more efficient for you and others, the
bookmark which is related to maintenance be tagged with
"rust" and "tutorial:maintenance", while the bookmark which
is related to computer language rust be tagged with
"code:rust".
</p>
<h4 id="why-blasta">Why did you create Blasta?</h4>
<p>
We have created Blasta out of necessity.
</p>
<p>
We have felt that there are no viable solutions that would
provide a sensible management of URis, and also a mean to
share URIs.
</p>
<p>
We are well aware of project YaCy which indeed provides
exactly what we desire, yet, the interface that is provided
by YaCy does not fulfill the interface which we have
determined to be fit for the cause, and which would be fit
with certain functionalities that we deemed to be necessary.
</p>
<p>
We also wanted a system that would be independent and in
current sync, and we have decided that XMPP is the perfect
platform for this task.
</p>
<p>
Hence, we have created Blasta, which is a combination of
YaCy and Shaarli, and is built on top of XMPP.
</p>
<h4 id="why-free">Why do you provide Blasta for free?</h4>
<p>
While we want to make profit, and feed our wives and
children, we are aware that we must be providing the Blasta
system for free, because this is a matter of urgency; and
</p>
<p>
Because some people do bad things, such as attempting to
centralize the internet, and revoke privacy, which is
crucial; and
</p>
<p> We can not afford to have another centralized service which
later becomes clandestinely subdued to thugs from government
or intelligence, which is the worst of all circumstances.
</p>
<h4 id="perspective">What is your perspective?</h4>
<p>
Our perspective is that people should be living for the sake
of eternity, which is what we are doing by creating and
distributing Blasta.
</p>
<p>
As conveyed in verse 77 of Hávamál:
</p>
<p class="quote" title="“Deyr fé, deyja frændr, deyr sjalfr it sama, ek veit einn, at aldrei deyr: dómr um dauðan hvern.”">
“Kinsmen die, and cattle die and so must one die oneself;
<br/>
But there is one thing I know which never dies,
<br/>
and that is the fame of a dead man deeds.”
<br/>
― Hávamál: Sayings of the High One
</p>
<p>
The German philosopher Arthur Schopenhauer has expressed
since the same idea when he said:
</p>
<p class="quote">
“The most any man can hope for:
<br/>
Is a heroic passage through life.”
<br/>
― Arthur Schopenhauer
</p>
<p>
To explain it in other words:
</p>
<p>
Greatness, rather than happiness, is
<span class="instances-degree-first">
a mark of a good life</span>.
</p>
<p>
Live for the sake of eternity, for the past, and towards the
future.
</p>
<h4 id="why-xmpp">Why did you choose XMPP as a platform?</h4>
<p>
The XMPP platform (which is also known as Jabber), is a
reputable and a strong telecommunication platform which
almost every intelligence and militant agency on the world
is making use of as a premier telecommunication mean.
</p>
<p>
Because we did not want to use databases, which sometimes
are too complicated for most of the people who are
interested in sharing links publicly and privately, we have
determined that XMPP would be the best choice for this task.
</p>
<p>
XMPP was chosen as a platform, because it is a standard and
it is extensible; it has all the features that are necessary
to integrate other standardised mechanisms to store data
which does not necessarily has to require a database (e.g.
SQLite); XMPP provides exactly that, whether we want to make
use of Atom Syndication Format and even JSON, if at all
needed.
</p>
<p>
So we chose the specification XEP-0060: Publish-Subscribe
(PubSub) as a base mechanism for a data storage platform.
</p>
<p>
In addition to it, XMPP offers a robust and stable mechanism
of storing of contents, on both XMPP and HTTP, and more, or
even most, importantly, the PubSub mechanism of XMPP is
truely private and is truely owned by the account owner,
which is also a major advantage to Blasta, not only for the
sake of privacy and data integrity, but also for an
immediate recoverying of the bookmarks sharing system, if
the Blasta database would be to diappear or should be
restructured.
</p>
<p>Use XMPP. Spread XMPP. Be XMPP.</p>
<h4 id="other-platforms">What platform would you choose if not XMPP?</h4>
<p>
If we were to choose another platfom, it probably would have
been DeltaChat (SMTP and IMAP), Nostr or Session.
</p>
<h4>Why did you decide to make Blasta open source?</h4>
<p>
One of the main reasons is for freedom to thrive.
</p>
<p>
We are worried due to various of PsyOps that are conducted
by governments, military and intelligence agencies, and we
realize that most of their success relies on the
centralization of information hubs; and
</p>
<p>
We are further worried of the awful measures that are being
dictated by HTML browser vendors, who distort the original
intentions and expectations for the internet, that were
presented to the public during the 90's, and instead these
vendors are
<a href="https://openrss.org/blog/browsers-should-bring-back-the-rss-button">
conspiring</a> to make people to forget about the existance
of crucial technologies such as
<a href="https://camendesign.com/blog/rss_is_dying">
syndication</a> and XSLT, and they are also committing
crimes against people, and the worst of all crimes is of
attempting to revoke the privacy of people.
</p>
<p>
Hence, we have decided that it is crucial to make a resource
sharing platform to utilize standards that can be utilized
outside of browsers, and
</p>
<p>
We have further decided to make Blasta available in an open
source form, that would allow public examining and auditing
of the mechanism that Blasta offers, including
<a href="/help/about/philosophy#trust">gaining the trust of
people</a> by showcasing that the data is truely private,
and that the data is truely owned by the people, and that
the data is backed by true standards.
</p>
<p class="quote">
“No reason to explain this. It is absolutely insane to
use a software to browse the internet of which source
code is not publicly auditable.”
<a href="https://lukesmith.xyz/articles/every-web-browser-absolutely-sucks/#free-and-open-source-software">
Luke Smith
</a>
</p>
<h4 id="logic">
Does Blasta deploy ECMAScript (JavaScript)
</h4>
<p>
Blasta does not make any use of ECMAScript.
</p>
<p>
We have decided not to use unecessary components nor "toxic"
features that would compromise the intended experience that
Blasta attempts to offer, neither waste power resources on
your end for no just reason, nor to compromise your privacy.
</p>
<p>
To compensate this, Blasta is designed in a fashion that
would make it easier to customize appearance and
functionality with <a href="/help/utilities#greasemonkey">
userscripts and userstyles</a>.
</p>
<h4 id="conclusion">Conclusion</h4>
<p>
Please <a href="/contact">contact us</a> and ask us
anything. We will be happy to read from you!
</p>
<br/>
<p class="quote bottom">
“Trust is the basis for social value and self-organisation,
but technical assurances are what help make it trustworthy.”
<a href="https://nlnet.nl/assure/">
NGI Assure
</a>
</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>

110
xhtml/register.xhtml Normal file
View file

@ -0,0 +1,110 @@
<?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</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> / register
</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>
» Register an XMPP account. It is free of charge.
</p>
<h3>
Registering with XMPP
</h3>
<p>
As with email, you need an account with a service provider
to operate Blasta, so if you already have an XMPP account,
you can <a href="/connect">connect</a> and start to Blasta.
</p>
<p>
If you do not have an XMPP account, yet, you can use a
<a href="https://providers.xmpp.net">public provider from
the curated list of <strong>XMPP Providers</strong></a> or
be your own provider <a href="https://xmpp.org/software/">by
hosting a server yourself</a>.
</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>

106
xhtml/result.xhtml Normal file
View file

@ -0,0 +1,106 @@
<?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</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> / {{path}}
</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>
» {{message}}
</p>
<h3>
{{description}}
</h3>
<p>
You can return to the previous page or browse
{% if jabber_id %}
your <a href="/jid">bookmarks</a>.
{% else %}
the <a href="/">portal</a>.
{% endif %}
</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>

124
xhtml/search.xhtml Normal file
View file

@ -0,0 +1,124 @@
<?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</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> / search / {{path}}
</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 jid %}/jid/{{jid}}{% 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>» {{message}}</p>
<h3>{{description}}</h3>
<form method="get" action="{{form_action}}">
<label for="{{label_for}}">{{label}}:</label>
<input type="{{input_type}}" id="{{input_id}}"
name="{{input_name}}"
placeholder="{{input_placeholder}}"
autofocus=""
required="" />
<input class="submit" type="submit" value="Search"/>
</form>
{% if path == 'all' %}
<p>
Search public bookmarks. Or seek by a
<a href="/search/url">URL</a>{% if jabber_id %}, or
<a href="/search/jid/{{jabber_id}}">lookup</a> your own
bookmarks{% endif %}.
</p>
{% elif path == 'url' %}
<p>
Search a bookmark by a URL. Or seek for public
<a href="/search/all">bookmarks</a>{% if jabber_id %},
or <a href="/search/jid/{{jabber_id}}">lookup</a> your
own bookmarks{% endif %}.
</p>
{% else %}
<p>
Search bookmarks by Jabber ID. Or seek for public
<a href="/search/all">bookmarks</a>, or lookup by a
<a href="/search/url">URL</a>.
</p>
{% endif %}
</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>

194
xhtml/software.xhtml Normal file
View file

@ -0,0 +1,194 @@
<?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</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> / software
</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>» Information about projects that Blasta is based upon.</p>
<h3>Software</h3>
<p>
Blasta was made possible thanks to the following projects.
</p>
<h4>
<a href="https://fastapi.tiangolo.com">
FastAPI - An HTTP and XHTML framework.
</a>
</h4>
<p>
FastAPI is a fast (high-performance), framework for building
APIs with Python based on standard Python type hints.
</p>
<h4>
<a href="https://lxml.de">
lxml - XML and HTML with Python.
</a>
</h4>
<p>
The lxml XML toolkit is a Pythonic binding for the C
libraries libxml2 and libxslt. It is unique in that it
combines the speed and XML feature completeness of these
libraries with the simplicity of a native Python API, mostly
compatible but superior to the well-known ElementTree API.
The latest release works with all CPython versions from 3.6
to 3.12. See the introduction for more information about
background and goals of the lxml project.
</p>
<h4>
<a href="https://python.org">
Python - A computer language.
</a>
</h4>
<p>
Python is a computer language that lets you work quickly and
integrate systems more effectively.
</p>
<h4>
<a href="https://slixmpp.readthedocs.io">
Slixmpp - A modern python XMPP library using asyncio.
</a>
</h4>
<p>
Slixmpp is an MIT licensed XMPP library for Python 3.7+.
It is a fork of SleekXMPP.
Slixmpp's goal is to only rewrite the core of the library
(the low level socket handling, the timers, the events
dispatching) in order to remove all threads.
</p>
<h4>
<a href="https://sqlite.org">
SQLite - Small. Fast. Reliable.
</a>
</h4>
<p>
SQLite is a C-language library that implements a small,
fast, self-contained, high-reliability, full-featured, SQL
database engine. SQLite is the most used database engine in
the world. SQLite is built into all mobile phones and most
computers and comes bundled inside countless other
applications that people use every day.
</p>
<h4>
<a href="https://uvicorn.org">
Uvicorn - An ASGI server, for Python.
</a>
</h4>
<p>
A low-level server/application interface for async
frameworks, using the ASGI specification to make it possible
to start building a common set of tooling usable across all
async frameworks.
</p>
<h4>
<a>
XML | Extensible Markup Language.
</a>
</h4>
<p>
The Extensible Markup Language (XML) is a markup language
that provides rules to define any data. Unlike other
programming languages, XML cannot perform computing
operations by itself. Instead, any programming language or
software can be implemented for structured data management.
</p>
<h4>
<a href="https://xmpp.org">
XMPP | The universal messaging standard.
</a>
</h4>
<p>
XMPP is the Extensible Messaging and Presence Protocol, a
set of open technologies for instant messaging, presence,
multi-party chat, voice and video calls, collaboration,
lightweight middleware, content syndication, and generalized
routing of XML data.
</p>
<br/>
<p class="quote bottom">
Have you joined to XMPP, yet?
</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>

1004
xhtml/syndication.xhtml Normal file

File diff suppressed because it is too large Load diff

112
xhtml/tag.xhtml Normal file
View file

@ -0,0 +1,112 @@
<?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</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> / tag
</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 jid %}/jid/{{jid}}{% 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>» {{message}}</p>
<h3>{{description}}</h3>
<p id="tags-sized">
{% for tag, instance in tag_list %}
{% if instance > 5000 %}
<span class="tag-degree-fifth">
{% elif instance > 500 %}
<span class="tag-degree-fourth">
{% elif instance > 50 %}
<span class="tag-degree-third">
{% elif instance > 5 %}
<span class="tag-degree-second">
{% else %}
<span class="tag-degree-first">
{% endif %}
<a href="/{% if jid %}jid/{{jid}}{% endif %}?tags={{tag}}">
{{tag}}
</a></span>
{% endfor %}
</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>

192
xhtml/thanks.xhtml Normal file
View file

@ -0,0 +1,192 @@
<?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</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> / thanks
</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>
» Gratitude and appreciation from the world over.
</p>
<h3>Thanks</h3>
<p>
We would want to express our gratitude and appreciation to
special men and women from Argentina, Canada, France
Germany, Ireland, Italy, Palestine, Russia and The
Netherlands.
</p>
<h4>Mr. Damian Sartori</h4>
<p>
We would want to thank to Mr. Damian Sartori (a.k.a.:
TheCoffeMaker) from <a href="https://cyberdelia.com.ar/">
Cyberdelia</a> for providing instructions for present and
future database management.
</p>
<h4>Mr. Guus der Kinderen</h4>
<p>
We would want to thank to Mr. Guus der Kinderen of
<a href="http://igniterealtime.org">Ignite Realtime</a> who
has instantly provided us with relevant references from
<a href="https://xmpp.org/extensions/xep-0060.html">
XEP-0060: Publish-Subscribe</a> and who has generously
provided us with <a href="http://goodbytes.im">Goodbytes</a>
Openfire servers for testing Blasta and related projects.
</p>
<h4>Mr. Jérôme Poisson</h4>
<p>
We would want to thank to Mr. Jérôme Poisson of project
<a href="https://libervia.org">Libervia</a> who has
instructed us in coordinating the Blasta system with the
Libervia system.
</p>
<h4>Mrs. Laura Lapina</h4>
<p>
We would want to thank to Mrs. Laura Lapina of 404 City and
Loqi who has contributed her advises to select the proper
technologies, and plan and engineer the master database
operation workflow.
</p>
<h4>Mr. Schimon Jehudah Zachary</h4>
<p>
We would want to thank to Mr. Schimon Jehudah Zachary of
project <a href="https://git.xmpp-it.net/sch/Rivista">
Rivista</a> who has provided us with concise, yet essential
information and presentation about the value and worthiness
of making use of XMPP as a platform for sharing of
information, including elaborative SQLite queries that have
accelerated and saved us precious development time.
</p>
<h4>Mr. Simone Canaletti</h4>
<p>
We would want to thank to Mr. Simone Canaletti of project
<a href="https://woodpeckersnest.eu">WPN</a> who has helped
in deploying and testing our applications, including
benchmarking for mass deployment, in addition to providing
us with the adequate means for hosting the development
ground of the Blasta platform and related projects.
</p>
<h4>Mr. Stephen Paul Weber</h4>
<p>
We would want to thank to Mr. Stephen Paul Weber of project
<a href="https://soprani.ca">Soprani.ca</a> who has
explained to us about various of the XMPP specifications.
</p>
<h4>Mr. Timothée Jaussoin</h4>
<p>
We would want to thank to Mr. Timothée Jaussoin of project
<a href="https://movim.eu">Movim</a> who has contributed
from his own time to personally convey and explain to us the
XMPP specification
<a href="https://xmpp.org/extensions/xep-0060.html">
XEP-0060: Publish-Subscribe</a>, and he has done so on
various of occasions, including answering to questions that
were already asked and answered more than once.
</p>
<h4>XMPP Berlin in association with XMPP Italia</h4>
<p>
Finally, we would want to thank to the fine gentlemen
Lorenzo, Mario, Martin, Roberto, Schimon, Simone, and others
for their efforts of producing the premiere public
presention of the Blasta system.
</p>
<p>
<a href="https://mov.im/node/pubsub.movim.eu/berlin-xmpp-meetup">
Berlin XMPP Meetup
</a>
</p>
<p>
<a href="https://video.xmpp-it.net">XMPP-IT</a>
</p>
<br/>
<p class="quote bottom">
“Some men are heroes by nature in that they will give all
that is in them without regard to the effort or to the
personal returns.”
Carson McCullers
</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>

200
xhtml/utilities.xhtml Normal file
View file

@ -0,0 +1,200 @@
<?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</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> / utilities
</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 referential guide for features of Blasta.
</p>
<h3 id="synopsis">
Synopsis
</h3>
<p>
Blasta offers utilities such as bookmarklet buttons,
extensions and even userscripts and userstyles that would
extend it features with extra functionalities, and change
its appearance.
</p>
<h4 id="buttons">
Bookmarklet and home buttons
</h4>
<p>
Blasta offers a bookmarklet to facilitate the task of saving
HTTP links to your collection. Pin this
<span id="bookmarklet">
<img alt="Blasta"
src="/graphic/blasta.svg"/>
<a href="javascript:{{bookmarklet}}"
title="Pin this link to your bookmarks bar.">
Blastize!</a></span>
bookmarklet to your bookmarks bar, and click on it
when you want to save a link of a given page to your
collection.
</p>
<p>
You can also pin these links to your bookmarks bar, in order
to swiftly navigate to your bookmarks with a single click.
<span id="bookmarklet">
<img alt="Blasta"
src="/graphic/blasta.svg"/>
<a href="/jid"
title="Pin this link to your bookmarks bar.">
Blasta</a></span>
and
<span id="bookmarklet">
<img alt="Blasta (Private)"
src="/graphic/blasta.svg"/>
<a href="/private"
title="Pin this link to your bookmarks bar.">
Private</a></span>
and
<span id="bookmarklet">
<img alt="Blasta (Read)"
src="/graphic/blasta.svg"/>
<a href="/read"
title="Pin this link to your bookmarks bar.">
Reading List</a></span>.
</p>
<h4 id="software">
Software
</h4>
<p>
Blasta works together with other XMPP clients; currently,
there are two clients, and these are:
<a href="https://libervia.org">Libervia</a> and
<a href="https://movim.eu">Movim</a>.
</p>
<h4 id="falkon">
Falkon extension
</h4>
<p>
Blasta offers a simple extension for the
<a href="https://falkon.org">Falkon</a> browser, that would
allow you to save links from your browser, without the need
to open the page. This is useful in case you want to save a
link which is not intended to be open in a browser, for
instance: <code>irc</code>, <code>magnet</code>,
<code>mailto</code>, <code>monero</code>, <code>tel</code>,
<code>xmpp</code> etc.
</p>
<h4 id="greasemonkey">
Greasemonkey userscripts and userstyles
</h4>
<p>
Blasta offers userscripts to extend its set of features, and
userstyles to custom its appearance, layout
and its colors.
The features offered are: "favicon", "preview", "themes" to
name just a few. You are not bound to the userscripts and
userstyles that are offered by Blasta, and you are
encouraged to install, write and share your own scripts!
</p>
<h4 id="references">
References
</h4>
<p>
Herein links to repositories that offer userscripts and
userstyles.
</p>
<p>
<a href="https://greasyfork.org">
Greasy Fork
</a>
</p>
<p>
<a href="https://openuserjs.org">
OpenUserJS
</a>
</p>
<p>
<a href="http://usa.x10host.com/mybb/index.php">
UserScripts Archive
</a>
</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>

211
xhtml/xmpp.xhtml Normal file
View file

@ -0,0 +1,211 @@
<?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</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> / xmpp
</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>» The universal messaging standard; Tried and tested. Independent. Privacy-focused.</p>
<h3 id="overview">An Overview of XMPP</h3>
<p>
XMPP is the Extensible Messaging and Presence Protocol, a
set of open technologies for instant messaging, presence,
multi-party chat, voice and video calls, collaboration,
lightweight middleware, content syndication, and generalized
routing of XML data.
</p>
<p>
XMPP was originally developed in the Jabber open-source
community to provide an open, decentralized alternative to
the closed instant messaging services at that time. XMPP
offers several key advantages over such services:
</p>
<h4>Open</h4>
<p>
The XMPP protocols are free, open, public, and easily
understandable; in addition, multiple implementations exist
in the form of clients, servers, server components, and code
libraries.
</p>
<h4>Standard</h4>
<p>
The <a href="http://ietf.org">Internet Engineering Task
Force (IETF)</a> has formalized the core XML streaming
protocols as an approved instant messaging and presence
technology. The XMPP specifications were published as
<a href="https://xmpp.org/rfcs/#3920">RFC 3920</a> and
<a href="https://xmpp.org/rfcs/#3921">RFC 3921</a> in 2004,
and the XMPP Standards Foundation continues to publish many
<a href="https://xmpp.org/extensions/">XMPP Extension
Protocols</a>. In 2011 the core RFCs were revised, resulting
in the most up-to-date specifications (
<a href="https://xmpp.org/rfcs/#6120">RFC 6120</a>,
<a href="https://xmpp.org/rfcs/#6121">RFC 6121</a>, and
<a href="https://xmpp.org/rfcs/#7622">RFC 7622</a>).
</p>
<h4>Proven</h4>
<p>
The first Jabber/XMPP technologies were developed by Jeremie
Miller in 1998 and are now quite stable; hundreds of
developers are working on these technologies, there are tens
of thousands of XMPP servers running on the Internet today,
and millions of people use XMPP for instant messaging
through various public services and XMPP deployments at
organizations worldwide.
</p>
<h4>Decentralized</h4>
<p>
The architecture of the XMPP network is similar to email; as
a result, anyone can run their own XMPP server, enabling
individuals and organizations to take control of their
communications experience.
</p>
<h4>Secure</h4>
<p>
Any XMPP server may be isolated from the public network
(e.g., on a company intranet) and robust security using SASL
and TLS has been built into the core
<a href="https://xmpp.org/rfcs/">XMPP specifications</a>. In
addition, the XMPP developer community is actively working
on end-to-end encryption to raise the security bar even
further.
</p>
<h4>Extensible</h4>
<p>
Using the power of XML, anyone can build custom
functionality on top of the core protocols; to maintain
interoperability, common extensions are published in the
<a href="https://xmpp.org/extensions/">XEP series</a>, but
such publication is not required and organizations can
maintain their own private extensions if so desired.
</p>
<h4>Flexible</h4>
<p>
XMPP applications beyond IM include network management,
content syndication, collaboration tools, file sharing,
gaming, remote systems monitoring, internet services,
lightweight middleware, cloud computing, and much more.
</p>
<h4>Diverse</h4>
<p>
A wide range of companies and open-source projects use XMPP
to build and deploy real-time applications and services; you
will never get “locked in” when you use XMPP technologies.
</p>
<p>
Visit <a href="https://xmpp.org/about/technology-overview/">
this page</a> which provides an introduction to various XMPP
technologies, including links to specifications,
implementations, tutorials, and special-purpose discussion
venues.
</p>
<h4 id="conclusion">Conclusion</h4>
<p>
XMPP in general is an open and standardized protocol for
real time communication.
</p>
<p>
Anyone can host their own server and communicate freely with
each other, just like with email and just like email the
used addresses are of the form “name@domain.tld”.
</p>
<p>
People can use different apps and services, such as Monal,
from a single but also multiple accounts. This serves a
decentral and sovereign infrastructure and digital
communication on the internet but also offers many potential
for innovation.
</p>
<p>
Visit <a href="https://xmpp.org">xmpp.org</a> to learn more.
</p>
<br/>
<p class="quote bottom">
<!-- “Use XMPP, while it is still legal.” -->
“The open standard for messaging and presence.”
</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>