481 lines
15 KiB
XML
481 lines
15 KiB
XML
<?xml version="1.0" encoding="UTF-8" ?>
|
|
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
|
|
<channel><title>GNU social V3</title><link>https://gnusocial.rocks/v3/index.html</link>
|
|
<description>Development blog where we announce our progress.</description><language>en</language>
|
|
<lastBuildDate>Mon, 25 Jul 2022 16:07:14 +0100</lastBuildDate>
|
|
<pubDate>Mon, 25 Jul 2022 16:07:14 +0100</pubDate>
|
|
<atom:link href="https://gnusocial.rocks/v3/feed.rss" rel="self" type="application/rss+xml" />
|
|
<item><title>
|
|
Milestone: Pinboard API
|
|
</title><description><![CDATA[
|
|
|
|
<p>This builds on top of GNU social bookmarks functionality.</p>
|
|
|
|
<p><img src="assets/bookmarks/pinboard/pinboard-settings.png" alt="" title="" /></p>
|
|
|
|
<p><a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/Pinboard/Pinboard.php#L45">Most endpoints of Pinboard v1 API were implemented</a>. We've left out some such as tag delete (as one can't really delete one in GNU social), among others that don't really fit. We have tested our implementation against <a href="https://github.com/fibelatti/pinboard-kotlin">Pinkt</a> and we will soon be contacting the maintainer so the functionality of using a different <code>API_TARGET</code> is included with this app (as it was all we had to change to have this working).</p>
|
|
|
|
<p>Discussion regarding <a href="https://socialhub.activitypub.rocks/t/explicitly-attached-links/2357/16">how bookmarks are better expressed in terms of ActivityStreams 2.0</a> is also developing in SocialHub.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- text end -->
|
|
]]></description><link>https://gnusocial.rocks/v3/milestone-pinboard-api.html</link>
|
|
<guid>https://gnusocial.rocks/v3/./milestone-pinboard-api.html</guid>
|
|
<dc:creator>GNU social development team</dc:creator>
|
|
<pubDate>Fri, 01 Apr 2022 11:35:04 +0100</pubDate></item>
|
|
<item><title>
|
|
Milestone: Unbound Group
|
|
</title><description><![CDATA[
|
|
|
|
<p>This was quite a long milestone that builds on top of everything we've been
|
|
working on. From the <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/components/Notification">Notification</a> and <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/components/FreeNetwork">FreeNetwork</a> components to the <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/ActivityPub">ActivityPub</a> plugin.</p>
|
|
|
|
<p>We have started with
|
|
<a href="https://codeberg.org/GNUsocial/fep/src/branch/fep-8485-bkp/feps/fep-8485.md">FEP-8485 Unbound Actor</a>, aiming at a ValueFlows based relationship between any kind of actors.</p>
|
|
|
|
<p>And this was discussed, re-thought, re-designed, and went through various
|
|
iterations on <a href="https://socialhub.activitypub.rocks/t/decentralised-group/2200">SocialHub Thread Decentralised Group</a>.</p>
|
|
|
|
<p>It wasn't until we had finished implementing the federation of Groups,
|
|
polishing our Notification system, and defined how we wanted to represent all of
|
|
this internally for GNU social v3, that we fresh started with all these ideas in
|
|
mind and came with the simpler <a href="https://codeberg.org/GNUsocial/fep/src/branch/fep-8485/feps/fep-2100.md">FEP-2100 Unbound Group and Organization</a>.</p>
|
|
|
|
<p>Which instead builds on top of the already existing logic for Following. Of
|
|
course, this FEP assumes how GNU social (and Lemmy, Friendrica, and Lotide)
|
|
understands groups (and organisations). But we believe that, now that
|
|
implementations are using these ideas and strategies, after a few more testing
|
|
time, everything should become reasonably specified and formalized. Being this
|
|
FEP already a step and contribution in that direction.</p>
|
|
|
|
<p>This FEP was implemented in GS <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/UnboundGroup">via a plugin</a>.</p>
|
|
|
|
<p><img src="assets/unbound/settings_link.png" alt="" title="" />
|
|
<img src="assets/unbound/example_linked_note.png" alt="" title="" /></p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- text end -->
|
|
]]></description><link>https://gnusocial.rocks/v3/milestone-unbound-group.html</link>
|
|
<guid>https://gnusocial.rocks/v3/./milestone-unbound-group.html</guid>
|
|
<dc:creator>GNU social development team</dc:creator>
|
|
<pubDate>Mon, 28 Mar 2022 23:55:02 +0100</pubDate></item>
|
|
<item><title>
|
|
Milestone: Webhooks
|
|
</title><description><![CDATA[
|
|
|
|
<p>GNU social has <a href="https://web.archive.org/web/20190320033635/https://chromic.org/blog/lifestream-architecture/">always been a project dear to hackers</a>.</p>
|
|
|
|
<p>And it's because we love the project history and nature of being easily
|
|
extensible and capable of communicating with the most diverse platforms that we
|
|
insist on implementing robust and expressive specifications.</p>
|
|
|
|
<p>Want the notes mentioning you showing up on your toasts, then just code a quick
|
|
script and GNU social will definitely not be the one holding you back. We can
|
|
think of this <a href="https://notabug.org/HackersAtPorto/gs-arduino">old GNU social <-> Arduino bridge</a>.</p>
|
|
|
|
<p>Webhooks is thus one more natural step on this direction.</p>
|
|
|
|
<p><img src="assets/webhooks/settings.png" alt="" title="" />
|
|
<img src="assets/webhooks/example.png" alt="" title="" /></p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- text end -->
|
|
]]></description><link>https://gnusocial.rocks/v3/milestone-webhooks.html</link>
|
|
<guid>https://gnusocial.rocks/v3/./milestone-webhooks.html</guid>
|
|
<dc:creator>GNU social development team</dc:creator>
|
|
<pubDate>Mon, 28 Mar 2022 17:42:36 +0100</pubDate></item>
|
|
<item><title>
|
|
Milestone: Blog plugin and Notes of type Article and Page
|
|
</title><description><![CDATA[
|
|
|
|
<p>We have implemented group federation, and <a href="https://github.com/LemmyNet/lemmy/pull/2100/">ensured compatibility with Lemmy (MR #2100)</a>.</p>
|
|
|
|
<p>This was achieved by strategically introducing the <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/Blog">Blog Plugin</a>.</p>
|
|
|
|
<p><img src="assets/blog/create_article.png" alt="" title="" /></p>
|
|
|
|
<p>Related discussion concerning compatibility with Friendica:
|
|
<a href="https://github.com/LemmyNet/lemmy/issues/2144">Lemmy issue #2144</a>.</p>
|
|
|
|
<p>Both GNU social and Lemmy have created test fixtures and the respective tests to
|
|
ensure that this now existing compatibility isn't loss. More fixtures are in the
|
|
plans.</p>
|
|
|
|
<p>Various improvements and changes in our Notification component derived from this
|
|
development. GNU social and Lemmy have also agreed on expressing and
|
|
understanding unlisted Likes in a manner analogous to how we handle Notes. But
|
|
GNU social still has to implement support for that form of Like.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- text end -->
|
|
]]></description><link>https://gnusocial.rocks/v3/milestone-blog-plugin-and-notes-of-type-article-and-page.html</link>
|
|
<guid>https://gnusocial.rocks/v3/./milestone-blog-plugin-and-notes-of-type-article-and-page.html</guid>
|
|
<dc:creator>GNU social development team</dc:creator>
|
|
<pubDate>Mon, 28 Mar 2022 17:14:29 +0100</pubDate></item>
|
|
<item><title>
|
|
Milestone: Organisations and Group Tags
|
|
</title><description><![CDATA[
|
|
|
|
<p>This milestone elaborates on the <a href="https://www.gnusocial.rocks/v3/updates-local-groups.html">Local Groups update</a>. We have decided that internally a organisation would be a specialization of the Group Actor. The same way we handle happenings, polls, articles, and pages as specializations of notes.</p>
|
|
|
|
<p>It is already possible to create organization actors,
|
|
<img src="assets/groups/create_org.png" alt="" title="" /></p>
|
|
|
|
<p>and too have self tags on groups, which then aid on discoverability.
|
|
<img src="assets/groups/set_tags.png" alt="" title="" /></p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- text end -->
|
|
]]></description><link>https://gnusocial.rocks/v3/milestone-organisations-and-group-tags.html</link>
|
|
<guid>https://gnusocial.rocks/v3/./milestone-organisations-and-group-tags.html</guid>
|
|
<dc:creator>GNU social development team</dc:creator>
|
|
<pubDate>Mon, 28 Mar 2022 16:46:10 +0100</pubDate></item>
|
|
<item><title>
|
|
Milestone: OAuth 2.0
|
|
</title><description><![CDATA[
|
|
|
|
<p>OAuth support is accomplished via a GNU social plugin.</p>
|
|
|
|
<p>Accompanying it came the possibility of a plugin feature a shell script for
|
|
setting pre-requirements that can be automatically executed by GNU social's
|
|
installer.</p>
|
|
|
|
<p>There was also an upgrade of the core authentication stack that made it more
|
|
simple and flexible.</p>
|
|
|
|
<p>Finally, the plugin was tested with <a href="http://andstatus.org/">AndStatus</a>, related
|
|
discussion available at: <a href="https://github.com/andstatus/andstatus/issues/549">AndStatus #549</a>.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- text end -->
|
|
]]></description><link>https://gnusocial.rocks/v3/milestone-oauth-20.html</link>
|
|
<guid>https://gnusocial.rocks/v3/./milestone-oauth-20.html</guid>
|
|
<dc:creator>GNU social development team</dc:creator>
|
|
<pubDate>Sun, 27 Mar 2022 18:01:17 +0100</pubDate></item>
|
|
<item><title>
|
|
Milestone: Web Monetization
|
|
</title><description><![CDATA[
|
|
|
|
<p><a href="https://webmonetization.org/">Web Monetization</a> is being proposed as a W3C
|
|
standard at the Web Platform Incubator Community Group.</p>
|
|
|
|
<p>GNU social now supports that initiative with the <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/WebMonetization">Web Monetization plugin</a>.</p>
|
|
|
|
<p>With this, we also introduce an ActivityPub (<a href="https://codeberg.org/fediverse/fep/pulls/1">FEP-8c3f</a>) GS extension
|
|
<code>gs:webmonetizationWallet</code>. This enables actors to support other actors with Web
|
|
Monetization in the fediverse.</p>
|
|
|
|
<p>It looks like this:</p>
|
|
|
|
<h2>Own profile</h2>
|
|
|
|
<p><img src="assets/web_monetization/address.png" alt="" title="" /></p>
|
|
|
|
<h2>In the profile of other actors</h2>
|
|
|
|
<p><img src="assets/web_monetization/donate.png" alt="" title="" /></p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- text end -->
|
|
]]></description><link>https://gnusocial.rocks/v3/milestone-web-monetization.html</link>
|
|
<guid>https://gnusocial.rocks/v3/./milestone-web-monetization.html</guid>
|
|
<dc:creator>GNU social development team</dc:creator>
|
|
<pubDate>Tue, 18 Jan 2022 14:28:36 +0000</pubDate></item>
|
|
<item><title>
|
|
Milestone: Automatic Accesibility (A11Y) testing
|
|
</title><description><![CDATA[
|
|
|
|
<p>We use <code>pa11y-ci</code> to run our accesibility testing on all GNU social
|
|
pages. The process of setting this up was a bit of a ride, but the
|
|
results are quite useful:</p>
|
|
|
|
<p><img src="assets/a11y/report.png" alt="Accesibility report generated by Pa11y" title="" /></p>
|
|
|
|
<p>We also take screenshots of all pages and compare them with the
|
|
previous, allowing us to spot (possibly) unintended changes in the UI.</p>
|
|
|
|
<p>The way we do this is by using a <code>docker</code> image derived from <code>node</code>,
|
|
with <code>pa11y-ci</code> installed, which doesn't have an entrypoint. This then
|
|
allows us to spin up a webserver, PHP and Redis containers, mimiking a
|
|
staging environment. <code>pa11y-ci</code> uses a JSON config file to tell it
|
|
what to do, and handles visiting all pages with the given resolution,
|
|
logging in and registering any accesibility violations found.</p>
|
|
|
|
<p><img src="assets/a11y/violations.png" alt="Accesibility violations found by Pa11y" title="" /></p>
|
|
|
|
<p>Note that most of these errors are actually the same.</p>
|
|
|
|
<p>The saved screenshots are then used to detect changes, with
|
|
ImageMagik's <code>compare</code>, to generate a report on visual changes.</p>
|
|
|
|
<p><img src="assets/a11y/compare.png" alt="Screenshot comparisons" title="" /></p>
|
|
|
|
<p>We were already striving for making GNU social accesible, which is
|
|
clear from the really low number of violations found, but there's
|
|
always room for improvement :)</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- text end -->
|
|
]]></description><link>https://gnusocial.rocks/v3/milestone-automatic-accesibility-a11y-testing.html</link>
|
|
<guid>https://gnusocial.rocks/v3/./milestone-automatic-accesibility-a11y-testing.html</guid>
|
|
<dc:creator>GNU social development team</dc:creator>
|
|
<pubDate>Tue, 18 Jan 2022 13:56:33 +0000</pubDate></item>
|
|
<item><title>
|
|
Milestone: Collections
|
|
</title><description><![CDATA[
|
|
|
|
<p>We have generalized collections around our search engine. For that introducing
|
|
the <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/components/Collection">Collection component</a>.</p>
|
|
|
|
<p>This structure has the following implication:</p>
|
|
|
|
<pre><code>Collection -> OrderedCollection
|
|
|-> Notes (known as Feed)
|
|
|-> Actors (known as Circle)
|
|
|-> Other Object (known as Collection of ...)
|
|
|-> Attachments: AttachmentCollection
|
|
|-> Tags: TagCollection
|
|
</code></pre>
|
|
|
|
<p>And it allow us to centralise the scope system in the core, ensuring that no
|
|
actor will have access to notes or other objects that shouldn't be able to see.</p>
|
|
|
|
<p>Finally, with this, a plugin such as <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/NoteTypeFeedFilter">Note Type Feed Filter</a> can be useful in
|
|
every note collection (feed).</p>
|
|
|
|
<p>It also allows plugins such as ActivityPub to <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/ActivityPub/Util/OrderedCollectionController.php">translate every collection
|
|
automatically</a>.</p>
|
|
|
|
<p>We also introduced the <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/components/Circle">Circle component</a>, which has a UI similar to the
|
|
<a href="https://www.gnusocial.rocks/v3/milestone-albums.html">Attachments Collections</a>,
|
|
and enables circle mentions with <code>@#circle_name</code>.</p>
|
|
|
|
<h2>Notes Filter and Sorting Options</h2>
|
|
|
|
<p><img src="assets/filters/feed.png" alt="" title="" /></p>
|
|
|
|
<h2>Actors Filter and Sorting Options</h2>
|
|
|
|
<p><img src="assets/filters/circle.png" alt="" title="" /></p>
|
|
|
|
<h2>The Search Component</h2>
|
|
|
|
<h3>Results</h3>
|
|
|
|
<p><img src="assets/search/results.png" alt="" title="" /></p>
|
|
|
|
<h3>Note Options</h3>
|
|
|
|
<p><img src="assets/search/note_options.png" alt="" title="" /></p>
|
|
|
|
<h3>Actor Options</h3>
|
|
|
|
<p><img src="assets/search/actor_options.png" alt="" title="" /></p>
|
|
|
|
<h2>ActivityPub Examples</h2>
|
|
|
|
<p><img src="assets/activitypub/collection/circle.jpg" alt="" title="" />
|
|
<img src="assets/activitypub/collection/favourites.jpg" alt="" title="" />
|
|
<img src="assets/activitypub/collection/outbox.jpg" alt="" title="" /></p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- text end -->
|
|
]]></description><link>https://gnusocial.rocks/v3/milestone-collections.html</link>
|
|
<guid>https://gnusocial.rocks/v3/./milestone-collections.html</guid>
|
|
<dc:creator>GNU social development team</dc:creator>
|
|
<pubDate>Tue, 18 Jan 2022 13:56:12 +0000</pubDate></item>
|
|
<item><title>
|
|
Updates: Local Groups
|
|
</title><description><![CDATA[
|
|
|
|
<p><img src="assets/groups/profile.png" alt="" title="" /></p>
|
|
|
|
<p>We haven't implemented federation of Groups yet, but group tags and <a href="https://socialhub.activitypub.rocks/t/decentralised-group/2200/17?u=diogo">discussion
|
|
on how unbounded groups can be federated via ActivityPub</a> has already started.</p>
|
|
|
|
<p>Concerning federation of traditional groups, we will port our logic from v2 and
|
|
translate following the same rules as AndStatus <a href="https://github.com/andstatus/andstatus/issues/248#issuecomment-558703558">because they work</a>, as yvolk beautifully stated :)</p>
|
|
|
|
<p>Finally, also note that the group actors now have "self-tags", as the other actors, which was a milestone.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- text end -->
|
|
]]></description><link>https://gnusocial.rocks/v3/updates-local-groups.html</link>
|
|
<guid>https://gnusocial.rocks/v3/./updates-local-groups.html</guid>
|
|
<dc:creator>GNU social development team</dc:creator>
|
|
<pubDate>Tue, 18 Jan 2022 13:13:38 +0000</pubDate></item>
|
|
</channel></rss>
|