417 lines
15 KiB
XML
417 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, 13 Sep 2021 17:36:14 +0100</lastBuildDate>
|
|
<pubDate>Mon, 13 Sep 2021 17:36:14 +0100</pubDate>
|
|
<atom:link href="https://gnusocial.rocks/v3/feed.rss" rel="self" type="application/rss+xml" />
|
|
<item><title>
|
|
Updates: Interface and accessibility
|
|
</title><description><![CDATA[
|
|
|
|
<p>Hello everyone! Throughout the past year there has been a lot of work in creating a polished, modern looking UI.
|
|
This update has been in the works for a long time... Many considerations had to be done, and given the current state of
|
|
modern browsers (and their over-reliance in JS) many more surfaced, leading to further testing and fixes. </p>
|
|
|
|
<p>We hope you like it!</p>
|
|
|
|
<h3>The prime directive</h3>
|
|
|
|
<blockquote>
|
|
<p>Modern looking, consistent and accessible UI across all browsers.
|
|
Non-JS version as the primary focus, <strong>JS is optional</strong> and should be regarded as such.</p>
|
|
</blockquote>
|
|
|
|
<p>The Web is 95% typography, the art and technique of arranging type to make text more readable and pleasing.
|
|
To achieve this, a textual hierarchy is fundamental, text should present a clear, readable structure to the reader.
|
|
In much of the same fashion, the way we perceive Web pages relies upon the same fundamentals. As such, by focusing on the
|
|
markup, we hope to achieve an accessible, fast and polished structure by which any browser and screen reader relies upon.</p>
|
|
|
|
<h3>Features</h3>
|
|
|
|
<ul>
|
|
<li>Accessible
|
|
<ul>
|
|
<li>Easy to use keyboard only navigation</li>
|
|
<li>Feedback on focused elements</li>
|
|
<li>Keyboard shortcuts to access main regions</li>
|
|
<li>Vi-like shortcuts</li>
|
|
<li>Screen reader tested</li>
|
|
<li>Notifies the user when focusing on key elements, such as the feed, notes and actions</li>
|
|
<li>Brief description of navigation links</li>
|
|
<li>Using semantic HTML whenever possible</li>
|
|
<li>Special care given for styling solutions that could break accessibility</li>
|
|
<li>Colors and type sizes in accordance to W3C contrast guidelines</li>
|
|
<li>Chosen specifically blue-ish and grey-ish hues for faster page loading perception</li>
|
|
</ul></li>
|
|
<li>Fast, the content provided to the user really is just markup and some CSS rules
|
|
<ul>
|
|
<li>Optionally there will be some small use cases where JS makes sense (it's the only thing modern browsers understand e.e)</li>
|
|
<li>For example, cropping your avatar before uploading a new one.</li>
|
|
<li>This is the only example until now.</li>
|
|
</ul></li>
|
|
<li>Dark and light default themes available (according to your system theme)</li>
|
|
<li>Graceful degradation for unsupported HTML elements</li>
|
|
<li>Achieving modern user interface patterns without JS</li>
|
|
<li>Various layout engines tested and work as they should
|
|
<ul>
|
|
<li>Qt WebEngine (Qutebrowser, Falkon, Otter Browser, etc...)</li>
|
|
<li>WebkitGTK (Epiphany, Midori, etc...)</li>
|
|
<li>Gecko (Firefox and derivatives)</li>
|
|
<li>Goanna (Palemoon, Basilisk, etc...)</li>
|
|
<li>Internet Explorer</li>
|
|
</ul></li>
|
|
</ul>
|
|
|
|
<h3>Video</h3>
|
|
|
|
<h4>Keyboard tests</h4>
|
|
|
|
<iframe width="560" height="315" sandbox="allow-same-origin allow-scripts allow-popups" title="GNU social v3 Accessibility: Orca reading the Public feed" src="https://tube.tchncs.de/videos/embed/9a16e84c-4150-4849-ac63-019c9a3782d9" frameborder="0" allowfullscreen></iframe>
|
|
|
|
<hr>
|
|
]]></description><link>https://gnusocial.rocks/v3/updates-interface-and-accessibility.html</link>
|
|
<guid>https://gnusocial.rocks/v3/./updates-interface-and-accessibility.html</guid>
|
|
<dc:creator>GNU social development team</dc:creator>
|
|
<pubDate>Mon, 13 Sep 2021 17:32:55 +0100</pubDate></item>
|
|
<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">git
|
|
history</a> is clear (we believe), 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 13:37:42 +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 relevant media functionality.
|
|
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 <code>Linked</code> to in a note. I.e., when the major mime type isn't <code>text</code>. It triggers thumbnail generation.</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 open graph and oembed. I.e., acts when the major mime type 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 complete rewrite. Both plugins became smaller and easier to understand 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 <a href="https://www.gnusocial.rocks/v3/milestone-port-media-handling-from-v2.html">Port Media system from
|
|
v2</a> 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 previously
|
|
considered.</p>
|
|
|
|
<p>Sadly, what motivated us to re-design the attachment system were the
|
|
non-considered corner cases. In particular:</p>
|
|
|
|
<ul>
|
|
<li>Remove <code>title</code> from attachment, as it's part of the relation between attachment and note.</li>
|
|
<li>Remove <code>actor</code> from attachment, many actors may publish the same attachment.</li>
|
|
<li>Remove <code>is_local</code> from attachment, as it's part of the relation between attachment and note.</li>
|
|
<li>Remove <code>remote_url</code> from attachment, different urls can return the same attachment.</li>
|
|
<li>Attachment now has a reference counter </li>
|
|
<li>Add entity GSActorToAttachment</li>
|
|
<li>Add entity GSActorToRemoteURL</li>
|
|
<li>Add entity RemoteURL</li>
|
|
<li>Add entity RemoteURLToNote</li>
|
|
<li>Add entity RemoteURLToAttachment</li>
|
|
<li>AttachmentToNote now has a title attribute</li>
|
|
</ul>
|
|
|
|
<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 structural changes and how it compares to v2 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. These are 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>
|
|
|
|
<blockquote>
|
|
<p>Only the development book is in an elaborated state, the other books are
|
|
holding for more ready code.</p>
|
|
</blockquote>
|
|
|
|
<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>And 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>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 development 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>. At the time of writing the coverage has 98.76% code lines tested.</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 if an
|
|
EncoderPlugin that supports the mime type is available.</p>
|
|
|
|
<p>There are two EncoderPlugins implemented:</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 rescale gifs using FFMpeg.</li>
|
|
</ul>
|
|
|
|
<p>Another helpful plugin is <a href="https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/FileQuota">FileQuota</a> which ensures a user stays under the file quota.</p>
|
|
|
|
<h2>How is the code organised?</h2>
|
|
|
|
<p>There are various entities related to attachment and thumbnail handling.
|
|
The key 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/storage.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>
|