573 lines
11 KiB
XML
573 lines
11 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>Wed, 18 Aug 2021 19:26:51 +0100</lastBuildDate>
|
|
<pubDate>Wed, 18 Aug 2021 19:26:51 +0100</pubDate>
|
|
<atom:link href="https://gnusocial.rocks/v3/feed.rss" rel="self" type="application/rss+xml" />
|
|
<item><title>
|
|
Updates: V3 blog
|
|
</title><description><![CDATA[
|
|
|
|
<p>We initially thought that the milestones list would be enough to
|
|
announce the development progress. But it's a little too vague
|
|
and doesn't really let us express all the on going changes and efforts.</p>
|
|
|
|
<p>The <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/commits/branch/v3( is clear (we believe">git
|
|
history</a>, but it can be challenging and obscure to outsiders and non-technical people.</p>
|
|
|
|
<p>With the introduction of this blog made with
|
|
<a href="https://github.com/cfenollosa/bashblog">bashblog</a>, we hope to make all the progress more visible and easier of following :)</p>
|
|
|
|
<p>It has a <a href="https://www.gnusocial.rocks/v3/feed.rss">RSS feed</a> so, don't
|
|
forget to subscribe!</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- text end -->
|
|
]]></description><link>https://gnusocial.rocks/v3/updates-v3-blog.html</link>
|
|
<guid>https://gnusocial.rocks/v3/./updates-v3-blog.html</guid>
|
|
<dc:creator>GNU social development team</dc:creator>
|
|
<pubDate>Mon, 16 Aug 2021 21:51:32 +0100</pubDate></item>
|
|
<item><title>
|
|
Updates: Implement StoreRemoteMedia for v3 and port Embed
|
|
</title><description><![CDATA[
|
|
|
|
<p>GNU social comes with two plugins that add important media functionality.</p>
|
|
|
|
<p>Not talking neither about ImageEncoder nor VideoEncoder this time, but rather
|
|
about StoreRemoteMedia and Embed.</p>
|
|
|
|
<p><a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/StoreRemoteMedia">StoreRemoteMedia</a>
|
|
fetches remote files when they are Linked in a note. I.e., when the major mimetype isn't <code>text</code>.
|
|
It usually fetches and attempts to generate a thumb, if there are no encoders, it drops.</p>
|
|
|
|
<p><a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/Embed">Embed</a>
|
|
attempts to generate a page preview from opengraph and oembed. I.e., acts when the major mimetype is <code>text</code>.</p>
|
|
|
|
<p>We've changed so much with GNU social v3 that, regarding SRM there was
|
|
no possible port, just a full rewrite. The code of both plugins became
|
|
much easier of understanding and compact, while promoting the same
|
|
functionality with more stability.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- text end -->
|
|
]]></description><link>https://gnusocial.rocks/v3/updates-implement-storeremotemedia-for-v3-and-port-embed.html</link>
|
|
<guid>https://gnusocial.rocks/v3/./updates-implement-storeremotemedia-for-v3-and-port-embed.html</guid>
|
|
<dc:creator>GNU social development team</dc:creator>
|
|
<pubDate>Fri, 13 Aug 2021 13:37:42 +0100</pubDate></item>
|
|
<item><title>
|
|
Updates: Improve the Attachments system
|
|
</title><description><![CDATA[
|
|
|
|
<p>With the milestone "Port Media system from v2" we had ported the existing
|
|
attachment system. The fact is that this system wasn't good enough.</p>
|
|
|
|
<p>It's always important to start with the original code as that allows us
|
|
to review past decisions and understand all the corner cases.</p>
|
|
|
|
<p>Sadly, what motivated us to re-design the attachment system was the
|
|
non-considered corner cases.</p>
|
|
|
|
<p>Key commits:</p>
|
|
|
|
<ul>
|
|
<li><a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/commit/32ad5dbd74ebb369c4b3ed688e1fb78464fabe49">32ad5dbd74 - [ENTITY] Split Attachment in various new entities</a></li>
|
|
<li><a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/commit/c381e58d3307e7dd07abeb9cf5b3998e34f5bd48">c381e58d33 - [ENTITY] Refactor RemoteURL entities to Link</a></li>
|
|
</ul>
|
|
|
|
<p>The reasoning leading to these entities and structure is detailed in our
|
|
<a href="http://agile.gnusocial.rocks/doku.php?id=attachment">wiki</a>.</p>
|
|
|
|
<p>Some relevant observations:</p>
|
|
|
|
<ul>
|
|
<li><code>Link</code> is now part of GNU social Data Representation terms. It represents
|
|
any remote URL being shared in a note.</li>
|
|
<li>There's only one fixed directory for GSFiles.</li>
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- text end -->
|
|
]]></description><link>https://gnusocial.rocks/v3/updates-improve-the-attachments-system.html</link>
|
|
<guid>https://gnusocial.rocks/v3/./updates-improve-the-attachments-system.html</guid>
|
|
<dc:creator>GNU social development team</dc:creator>
|
|
<pubDate>Thu, 05 Aug 2021 13:37:42 +0100</pubDate></item>
|
|
<item><title>
|
|
Updates: Finish the Avatar component
|
|
</title><description><![CDATA[
|
|
|
|
<p><a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/components/Avatar">Avatar Component source</a>.</p>
|
|
|
|
<p>Its controller handles upload, update and removal.</p>
|
|
|
|
<p>Important change from v2: Avatars are now regular attachments.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- text end -->
|
|
]]></description><link>https://gnusocial.rocks/v3/updates-finish-the-avatar-component.html</link>
|
|
<guid>https://gnusocial.rocks/v3/./updates-finish-the-avatar-component.html</guid>
|
|
<dc:creator>GNU social development team</dc:creator>
|
|
<pubDate>Wed, 04 Aug 2021 13:42:37 +0100</pubDate></item>
|
|
<item><title>
|
|
Milestone: Documentation and Tests Infrastructure
|
|
</title><description><![CDATA[
|
|
|
|
<p><strong><a href="https://agile.gnusocial.rocks/doku.php?id=milestones:initial_test_documentation_infrastructure">WIKI Milestone entry</a></strong></p>
|
|
|
|
<p>GNU social now has its documentation available in
|
|
<a href="https://docs.gnusocial.rocks/">https://docs.gnusocial.rocks/</a>. It features four
|
|
different books. It is automatically generated from the <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/docs">source</a> using <a href="https://rust-lang.github.io/mdBook/">mdBook</a>.</p>
|
|
|
|
<p>Only the development book is in an elaborated state, the other books are
|
|
holding for more ready code.</p>
|
|
|
|
<p>Two of them are updates from existing documentation:</p>
|
|
|
|
<ul>
|
|
<li>The <a href="https://docs.gnusocial.rocks/user">User</a> one is adapted
|
|
from the existing GNU social documentation for users that was provided in v2.</li>
|
|
<li>The <a href="https://docs.gnusocial.rocks/administrator">Administrator</a> one is adapted
|
|
from the "Unofficial GNU social docs" by Thomask who <a href="https://notabug.org/diogo/gnu-social/issues/246">asked us to make it official</a>.</li>
|
|
</ul>
|
|
|
|
<p>And two of them are new:</p>
|
|
|
|
<ul>
|
|
<li>The <a href="https://docs.gnusocial.rocks/developer">Developer</a> is both intended to guide third-party plugin developers and to make it easier of contributing to the code.</li>
|
|
<li>The <a href="https://docs.gnusocial.rocks/designer">Designer</a> is the most recent of the four and came from a necessity of keeping some standardization between templates and ensuring the same principles are kept in mind when designing new themes.</li>
|
|
</ul>
|
|
|
|
<p>Together with the documentation we've introduced a
|
|
<a href="https://agile.gnusocial.rocks/">wiki</a>. Its purpose is to walk-through decisions,
|
|
convention, terminology. It's where we document the reasoning the dev team went
|
|
through before implementing more sophisticated functionalities.</p>
|
|
|
|
<p>Finally, when the documentation doesn't explain, and to ensure the whole code
|
|
is properly tested, we have the
|
|
<a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/tests">tests</a>. And the coverage is available <a href="https://coverage.gnusocial.rocks/">here</a>.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- text end -->
|
|
]]></description><link>https://gnusocial.rocks/v3/milestone-documentation-and-tests-infrastructure.html</link>
|
|
<guid>https://gnusocial.rocks/v3/./milestone-documentation-and-tests-infrastructure.html</guid>
|
|
<dc:creator>GNU social development team</dc:creator>
|
|
<pubDate>Wed, 04 Aug 2021 13:37:42 +0100</pubDate></item>
|
|
<item><title>
|
|
Milestone: Port Media handling from v2
|
|
</title><description><![CDATA[
|
|
|
|
<p><strong><a href="https://agile.gnusocial.rocks/doku.php?id=milestones:attachment_media_embed_handling">WIKI Milestone entry</a></strong></p>
|
|
|
|
<p>File Storage in GNU social is used for avatars, for notes containing
|
|
attachments, and for notes containing links (in which case is an Embed preview).
|
|
Notes can be created by local users or fetched from remote actors. Filehash is
|
|
used to reduce file duplication.</p>
|
|
|
|
<p>When a user shares a Link that uses OpenGraph tags or has an OEmbed provider,
|
|
the <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/Embed">Embed plugin</a> generates a preview for it that may contain a thumbnail.</p>
|
|
|
|
<p>When a user shares a Link to an image, the <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/StoreRemoteMedia">StoreRemoteMedia plugin</a> can fetch the
|
|
file and make it available as an attachment, and will generate a thumbnail.</p>
|
|
|
|
<p>When an image, video, or other file type is uploaded or retrieved, an Attachment
|
|
entity is created. When a thumbnail is requested, one is generated.</p>
|
|
|
|
<p>There are three relevant plugins for attachment handling:</p>
|
|
|
|
<ul>
|
|
<li><a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/ImageEncoder">ImageEncoder</a>: Allows to compress, validate, rescale, and sanitize images using VIPS.</li>
|
|
<li><a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/VideoEncoder">VideoEncoder</a>: Allows to compress, validate, rescale, and sanitize videos using FFMpeg.</li>
|
|
<li><a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/FileQuota">FileQuota</a>: Ensures a user stays under the file quota.</li>
|
|
</ul>
|
|
|
|
<h2>How is the code organised?</h2>
|
|
|
|
<p>There are various entities related to attachment, and thumbnail handling.
|
|
The main ones are:</p>
|
|
|
|
<ul>
|
|
<li><a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/src/Entity/Attachment.php">Attachment</a></li>
|
|
<li><a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/src/Entity/AttachmentThumbnail.php">AttachmentThumbnail</a></li>
|
|
</ul>
|
|
|
|
<p>The plugins are able to act by means of the Events system, as elaborated in the
|
|
<a href="https://docs.gnusocial.rocks/developer/attachments.html">documentation</a>.</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- text end -->
|
|
]]></description><link>https://gnusocial.rocks/v3/milestone-port-media-handling-from-v2.html</link>
|
|
<guid>https://gnusocial.rocks/v3/./milestone-port-media-handling-from-v2.html</guid>
|
|
<dc:creator>GNU social development team</dc:creator>
|
|
<pubDate>Mon, 03 May 2021 13:37:42 +0100</pubDate></item>
|
|
</channel></rss>
|