(streams): Difference between revisions

Marked this version for translation
m (Another two link fixes)
(Marked this version for translation)
Line 1: Line 1:
<languages/>
<languages/>
<translate>
<translate>
<!--T:1-->
<!--Infobox deliberately left out because it messes with the categories-->
<!--Infobox deliberately left out because it messes with the categories-->
The Streams repository contains the latest generation of free, open-source, decentralised, [[Special:MyLanguage/Nomadic Identity|nomadic]] [[Special:MyLanguage/What is the Fediverse?|Fediverse]] server software. It was created in October of 2021 as a fork of [[Special:MyLanguage/The Zotlabs projects#Roadhouse|Roadhouse]] which has an ancestry that leads all the way back to [[Special:MyLanguage/What is Friendica?|Friendica]] and includes [[Special:MyLanguage/What is Hubzilla?|Hubzilla]]. All were created by [[Fedizen:Mike Macgirvin|Mike Macgirvin]].
The Streams repository contains the latest generation of free, open-source, decentralised, [[Special:MyLanguage/Nomadic Identity|nomadic]] [[Special:MyLanguage/What is the Fediverse?|Fediverse]] server software. It was created in October of 2021 as a fork of [[Special:MyLanguage/The Zotlabs projects#Roadhouse|Roadhouse]] which has an ancestry that leads all the way back to [[Special:MyLanguage/What is Friendica?|Friendica]] and includes [[Special:MyLanguage/What is Hubzilla?|Hubzilla]]. All were created by [[Fedizen:Mike Macgirvin|Mike Macgirvin]].


<!--T:2-->
What is unique about this server application is that it has no name, it has no logo, it has no brand identity, it has no website, and it is not even considered a project. All code responsible for sending nodeinfo data has been removed. It is absent from all websites that list [[Special:MyLanguage/What are Fediverse projects?|Fediverse projects]] and instances. Its core is in the public domain, and contributions by various developers are under different free licenses, making it so difficult to re-license a fork of the whole of it to non-free and proprietary that it can be considered impossible.
What is unique about this server application is that it has no name, it has no logo, it has no brand identity, it has no website, and it is not even considered a project. All code responsible for sending nodeinfo data has been removed. It is absent from all websites that list [[Special:MyLanguage/What are Fediverse projects?|Fediverse projects]] and instances. Its core is in the public domain, and contributions by various developers are under different free licenses, making it so difficult to re-license a fork of the whole of it to non-free and proprietary that it can be considered impossible.


<!--T:3-->
All this is deliberate and intentional by Macgirvin's decision.<ref>[https://codeberg.org/streams/streams/src/commit/16c101693b741fdc3f1abd03df3fd0f86d4a40cc/README.md ReadMe file in the Streams repository, old version from March 27th, 2022]</ref>
All this is deliberate and intentional by Macgirvin's decision.<ref>[https://codeberg.org/streams/streams/src/commit/16c101693b741fdc3f1abd03df3fd0f86d4a40cc/README.md ReadMe file in the Streams repository, old version from March 27th, 2022]</ref>


<!--T:4-->
Technically speaking, the name "Streams" refers to the repository and not the software. In order to be able to mention the nameless software by something that resembles a name, it is colloquially being referred to as '''(streams)''', the parentheses being part of the replacement name.
Technically speaking, the name "Streams" refers to the repository and not the software. In order to be able to mention the nameless software by something that resembles a name, it is colloquially being referred to as '''(streams)''', the parentheses being part of the replacement name.


== History ==
== History == <!--T:5-->


<!--T:6-->
Around 2018, about three years after Hubzilla had been forked from the perpetual development project [[Special:MyLanguage/Red Matrix|Red Matrix]], experience with [[Special:MyLanguage/Nomadic identity|nomadic identity]] had shown that the way this feature was implemented in the [[Special:MyLanguage/Zot and Nomad|Zot]] protocol was lacking. Zot needed further development, but this couldn't be done on Hubzilla, also because advancing it meant cutting off most or all non-nomadic connections.
Around 2018, about three years after Hubzilla had been forked from the perpetual development project [[Special:MyLanguage/Red Matrix|Red Matrix]], experience with [[Special:MyLanguage/Nomadic identity|nomadic identity]] had shown that the way this feature was implemented in the [[Special:MyLanguage/Zot and Nomad|Zot]] protocol was lacking. Zot needed further development, but this couldn't be done on Hubzilla, also because advancing it meant cutting off most or all non-nomadic connections.


<!--T:7-->
So [[Special:MyLanguage/The Zotlabs projects|a whole number of new projects]] was created, all leading back to the Red Matrix and mostly past Hubzilla, and all with their set of features and external connections drastically reduced in comparison to Hubzilla or to the Red Matrix shortly before the Hubzilla fork. By and by, they led to new versions of Zot, [[Special:MyLanguage/Zot and Nomad#Zot6|Zot6]] which introduced the single-sign-on system [[Special:MyLanguage/OpenWebAuth|OpenWebAuth]] in 2018, [[Special:MyLanguage/Zot and Nomad#Zot8|Zot8]] which re-introduced an improved integration of [[Special:MyLanguage/ActivityPub|ActivityPub]] in ca. 2019 and finally Zot11, re-named [[Special:MyLanguage/Zot and Nomad#Nomad|Nomad]], in 2021. The latter was first tested on Roadhouse.
So [[Special:MyLanguage/The Zotlabs projects|a whole number of new projects]] was created, all leading back to the Red Matrix and mostly past Hubzilla, and all with their set of features and external connections drastically reduced in comparison to Hubzilla or to the Red Matrix shortly before the Hubzilla fork. By and by, they led to new versions of Zot, [[Special:MyLanguage/Zot and Nomad#Zot6|Zot6]] which introduced the single-sign-on system [[Special:MyLanguage/OpenWebAuth|OpenWebAuth]] in 2018, [[Special:MyLanguage/Zot and Nomad#Zot8|Zot8]] which re-introduced an improved integration of [[Special:MyLanguage/ActivityPub|ActivityPub]] in ca. 2019 and finally Zot11, re-named [[Special:MyLanguage/Zot and Nomad#Nomad|Nomad]], in 2021. The latter was first tested on Roadhouse.


<!--T:8-->
Shortly later, Nomad was considered ready for prime-time. So Roadhouse was forked once again into deliberately nameless code that was declared a stable release and uploaded to a repository named Streams. At the end of the same year, everything else that had come after Hubzilla was discontinued, and administrators of still existing instances were advised to do the fairly easy cross-grade to the Streams repository.
Shortly later, Nomad was considered ready for prime-time. So Roadhouse was forked once again into deliberately nameless code that was declared a stable release and uploaded to a repository named Streams. At the end of the same year, everything else that had come after Hubzilla was discontinued, and administrators of still existing instances were advised to do the fairly easy cross-grade to the Streams repository.


== Role in the Fediverse ==
== Role in the Fediverse == <!--T:9-->


<!--T:10-->
Unlike all other Fediverse projects, the code in the Streams repository is primarily not intended to be a self-contained, branded product. Instead, the repository was created for developers to fork it and create new Fediverse applications out of it with state-of-the-art features such as nomadic identity and OpenWebAuth readily available. Thus, developing such advanced software built on top of the Nomad protocol, but with ActivityPub support, could actually be easier than developing yet another project on top of ActivityPub from scratch without nomadic identity and without OpenWebAuth.
Unlike all other Fediverse projects, the code in the Streams repository is primarily not intended to be a self-contained, branded product. Instead, the repository was created for developers to fork it and create new Fediverse applications out of it with state-of-the-art features such as nomadic identity and OpenWebAuth readily available. Thus, developing such advanced software built on top of the Nomad protocol, but with ActivityPub support, could actually be easier than developing yet another project on top of ActivityPub from scratch without nomadic identity and without OpenWebAuth.


<!--T:11-->
Still, it is being increasingly deployed as-is as another decentralised social platform. After all, since its predecessors have been discontinued, it is one out of only two Fediverse projects that support nomadic identity and the only one to do so in a more lightweight and easier-to-handle way than Hubzilla and without Hubzilla's massive feature overhead.
Still, it is being increasingly deployed as-is as another decentralised social platform. After all, since its predecessors have been discontinued, it is one out of only two Fediverse projects that support nomadic identity and the only one to do so in a more lightweight and easier-to-handle way than Hubzilla and without Hubzilla's massive feature overhead.


== Features ==
== Features == <!--T:12-->


<!--T:13-->
(streams) shares a number of features with its predecessors.
(streams) shares a number of features with its predecessors.


=== Structure and connectivity ===
=== Structure and connectivity === <!--T:14-->


<!--T:15-->
Like everything from the Red Matrix on, including Hubzilla, [[Special:MyLanguage/The channel model of nomadic Fediverse projects|it replaces traditional accounts as user identities with channels]]. User accounts are only used to access these channels, of which each user account can have more than one. Channel roles are still variable and allow for everything from personal channels to private or public forums, but (streams) has no longer got Hubzilla's pre-defined channel roles.
Like everything from the Red Matrix on, including Hubzilla, [[Special:MyLanguage/The channel model of nomadic Fediverse projects|it replaces traditional accounts as user identities with channels]]. User accounts are only used to access these channels, of which each user account can have more than one. Channel roles are still variable and allow for everything from personal channels to private or public forums, but (streams) has no longer got Hubzilla's pre-defined channel roles.


<!--T:16-->
Also, like everything from the Red Matrix on with the exception of [[Special:MyLanguage/The Zotlabs projects#Osada (I)|the first Osada]], it supports nomadic identity. Hubzilla channels can be cloned to (streams) except for content and data that isn't supported by (streams). Cloning (streams) channels to Hubzilla, however, does not work due to (streams)' Nomad being too advanced in comparison to Hubzilla's Zot6.
Also, like everything from the Red Matrix on with the exception of [[Special:MyLanguage/The Zotlabs projects#Osada (I)|the first Osada]], it supports nomadic identity. Hubzilla channels can be cloned to (streams) except for content and data that isn't supported by (streams). Cloning (streams) channels to Hubzilla, however, does not work due to (streams)' Nomad being too advanced in comparison to Hubzilla's Zot6.


<!--T:17-->
(streams) supports cross-project single sign-on via OpenWebAuth which it has inherited from all the way back to [[Special:MyLanguage/The Zotlabs projects#Zap|Zap]].
(streams) supports cross-project single sign-on via OpenWebAuth which it has inherited from all the way back to [[Special:MyLanguage/The Zotlabs projects#Zap|Zap]].


<!--T:18-->
Connectivity to the outside world has been greatly reduced to only ActivityPub. On the other hand, Nomad has better ActivityPub support than the previous Zot versions.
Connectivity to the outside world has been greatly reduced to only ActivityPub. On the other hand, Nomad has better ActivityPub support than the previous Zot versions.


=== Posts ===
=== Posts === <!--T:19-->


<!--T:20-->
Many posting features even date all the way back to 2010 when Friendica was released as Mistpark. Just like on Friendica, Hubzilla and everything in-between, (streams) threads consist of only one post or direct message at the beginning plus comments rather than a loosely-tied string of single posts. The start post defines the access permissions which can't be changed for comments, and the start poster can delete comments from the thread.
Many posting features even date all the way back to 2010 when Friendica was released as Mistpark. Just like on Friendica, Hubzilla and everything in-between, (streams) threads consist of only one post or direct message at the beginning plus comments rather than a loosely-tied string of single posts. The start post defines the access permissions which can't be changed for comments, and the start poster can delete comments from the thread.


<!--T:21-->
Just like on everything created by Mike Macgirvin, there is virtually no character count limit. It is possible to write posts, comments or direct messages with tens of thousands of characters.
Just like on everything created by Mike Macgirvin, there is virtually no character count limit. It is possible to write posts, comments or direct messages with tens of thousands of characters.


<!--T:22-->
Posts and direct messages have four fields:
Posts and direct messages have four fields:


<!--T:23-->
* The first one is the title. It is not supported by typical ActivityPub-based projects.
* The first one is the title. It is not supported by typical ActivityPub-based projects.
* The second one is the summary. It uses the abstract field, the same that [[Special:MyLanguage/What is Mastodon?|Mastodon]] and others use for content warnings. A summary makes sense, considering how long posts can be.
* The second one is the summary. It uses the abstract field, the same that [[Special:MyLanguage/What is Mastodon?|Mastodon]] and others use for content warnings. A summary makes sense, considering how long posts can be.
Line 51: Line 69:
* The fourth one is the text body.
* The fourth one is the text body.


<!--T:24-->
Comments only have the text body.
Comments only have the text body.


<!--T:25-->
(streams) has extensive text formatting support. Whereas Friendica and Hubzilla only use BBcode for formatting posts, comments and direct messages, (streams) adds both Markdown and HTML.
(streams) has extensive text formatting support. Whereas Friendica and Hubzilla only use BBcode for formatting posts, comments and direct messages, (streams) adds both Markdown and HTML.


<!--T:26-->
Another typical "quirk" since Friendica is image handling: Each channel comes with its own file hosting space, complete with a file manager. Images have to be uploaded to that file space first, and then they can be linked into posts and direct messages and, with a trick, also into comments. Hotlinking images from elsewhere is technically possible, but as discouraged as elsewhere on the Web.
Another typical "quirk" since Friendica is image handling: Each channel comes with its own file hosting space, complete with a file manager. Images have to be uploaded to that file space first, and then they can be linked into posts and direct messages and, with a trick, also into comments. Hotlinking images from elsewhere is technically possible, but as discouraged as elsewhere on the Web.


<!--T:27-->
The number of images that can be added to a post is practically unlimited. The position of each image can be chosen freely; they can be embedded anywhere in the text like in a blog post. It's worth mentioning, however, that this feature is not supported by most other projects that federate with (streams).
The number of images that can be added to a post is practically unlimited. The position of each image can be chosen freely; they can be embedded anywhere in the text like in a blog post. It's worth mentioning, however, that this feature is not supported by most other projects that federate with (streams).


<!--T:28-->
Alt-text can be added by editing the markup code that places images into the text. There is no dedicated UI element for it.
Alt-text can be added by editing the markup code that places images into the text. There is no dedicated UI element for it.


<!--T:29-->
Polls have a practically unlimited number of choices again, and they support multiple selection.
Polls have a practically unlimited number of choices again, and they support multiple selection.


<!--T:30-->
Like its predecessors, and unlike Mastodon for example, (streams) doesn't need the abstract field for content warnings. It has a built-in but optional app that can automatically detect keywords or hashtags in a customisable field and hide posts, comments or direct messages behind specific content warnings. Also, images can be flagged sensitive, causing them to be blurred out until they're clicked. Neither translates to the ActivityPub-based parts of the Fediverse, though.
Like its predecessors, and unlike Mastodon for example, (streams) doesn't need the abstract field for content warnings. It has a built-in but optional app that can automatically detect keywords or hashtags in a customisable field and hide posts, comments or direct messages behind specific content warnings. Also, images can be flagged sensitive, causing them to be blurred out until they're clicked. Neither translates to the ActivityPub-based parts of the Fediverse, though.


<!--T:31-->
A few more special applications have made it from Hubzilla such as the gallery for showing images on the file space, the flash cards or one that shows the location where a post was made on OpenStreetMap.
A few more special applications have made it from Hubzilla such as the gallery for showing images on the file space, the flash cards or one that shows the location where a post was made on OpenStreetMap.


=== Removed Hubzilla features ===
=== Removed Hubzilla features === <!--T:32-->


<!--T:33-->
In general, the number of features has been greatly reduced in comparison with Hubzilla, most of which were already cut from the first Osada. For example, both calendars are gone. The traditional public calendar à la Friendica has been replaced with an events app for the time being. The CalDAV server is still there, as is the CardDAV server, but both don't have a UI anymore.
In general, the number of features has been greatly reduced in comparison with Hubzilla, most of which were already cut from the first Osada. For example, both calendars are gone. The traditional public calendar à la Friendica has been replaced with an events app for the time being. The CalDAV server is still there, as is the CardDAV server, but both don't have a UI anymore.


<!--T:34-->
Some more apps that are exclusive to Hubzilla now are webpages, wikis and articles. Technically speaking, since regular posts have had their features extended on (streams), they can do everything that articles can do on Hubzilla, but articles still have one or two advantages over posts.
Some more apps that are exclusive to Hubzilla now are webpages, wikis and articles. Technically speaking, since regular posts have had their features extended on (streams), they can do everything that articles can do on Hubzilla, but articles still have one or two advantages over posts.


<!--T:35-->
Except for Pubcrawl, the optional ActivityPub connector, all federation with non-Zot projects and platforms has been removed, mostly when the first incarnation of Osada was created already. While (streams) cannot subscribe to RSS or Atom feeds anymore, channels still generate feeds.
Except for Pubcrawl, the optional ActivityPub connector, all federation with non-Zot projects and platforms has been removed, mostly when the first incarnation of Osada was created already. While (streams) cannot subscribe to RSS or Atom feeds anymore, channels still generate feeds.


== External links ==
== External links == <!--T:36-->


<!--T:37-->
* [https://codeberg.org/streams/streams Streams Git repository]
* [https://codeberg.org/streams/streams Streams Git repository]
* [https://codeberg.org/streams/streams-addons Streams add-ons Git repository]
* [https://codeberg.org/streams/streams-addons Streams add-ons Git repository]
Line 84: Line 114:
* [https://web.archive.org/web/20211130084941/https://zotlabs.com/streams/ Non-descript Streams page on Zotlabs.com], archived copy on the Wayback Machine
* [https://web.archive.org/web/20211130084941/https://zotlabs.com/streams/ Non-descript Streams page on Zotlabs.com], archived copy on the Wayback Machine


== References ==
== References == <!--T:38-->


<!--T:39-->
<references />
<references />