diff --git a/v3/all_tags.html b/v3/all_tags.html new file mode 100644 index 0000000..f90dfe2 --- /dev/null +++ b/v3/all_tags.html @@ -0,0 +1,48 @@ + + + + + + + + + + + + +All tags - GNU social V3 + +
+
+ GNU social + +
+
+
+
+
+
+
+

GNU social V3

+
Development blog where we announce our progress.
+
+
+

All tags

+
    +
+ +
+
+
+ +
+ diff --git a/v3/feed.rss b/v3/feed.rss new file mode 100644 index 0000000..5950905 --- /dev/null +++ b/v3/feed.rss @@ -0,0 +1,189 @@ + + +GNU social V3https://gnusocial.rocks/v3/index.html +Development blog where we announce our progress.en +Tue, 17 Aug 2021 00:59:41 +0100 +Tue, 17 Aug 2021 00:59:41 +0100 + + +Updates: Implement StoreRemoteMedia for v3 and port Embed +GNU social comes with two plugins that add important media functionality.

+ +

Not talking neither about ImageEncoder nor VideoEncoder this time, but rather +about StoreRemoteMedia and Embed.

+ +

StoreRemoteMedia +fetches remote files when they are Linked in a note. I.e., when the major mimetype isn't text. +It usually fetches and attempts to generate a thumb, if there are no encoders, it drops.

+ +

Embed +attempts to generate a page preview from opengraph and oembed. I.e., acts when the major mimetype is text.

+ +

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.

+ + + + + +]]>
https://gnusocial.rocks/v3/updates-implement-storeremotemedia-for-v3-and-port-embed.html +https://gnusocial.rocks/v3/./updates-implement-storeremotemedia-for-v3-and-port-embed.html +GNU social development team +Fri, 13 Aug 2021 13:37:42 +0100
+ +Updates: Improve the Attachments system +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.

+ +

It's always important to start with the original code as that allows us +to review past decisions and understand all the corner cases.

+ +

Sadly, what motivated us to re-design the attachment system was the +non-considered corner cases.

+ +

Key commits:

+ + + +

The reasoning leading to these entities and structure is detailed in our +wiki.

+ +

Some relevant observations:

+ +
    +
  • Link is now part of GNU social Data Representation terms. It represents +any remote URL being shared in a note.
  • +
  • There's only one fixed directory for GSFiles.
  • +
+ + + + +]]>
https://gnusocial.rocks/v3/updates-improve-the-attachments-system.html +https://gnusocial.rocks/v3/./updates-improve-the-attachments-system.html +GNU social development team +Thu, 05 Aug 2021 13:37:42 +0100
+ +Updates: Finish the Avatar component +Avatar Component source.

+ +

Its controller handles upload, update and removal.

+ +

Important change from v2: Avatars are now regular attachments.

+ + + + + +]]>
https://gnusocial.rocks/v3/updates-finish-the-avatar-component.html +https://gnusocial.rocks/v3/./updates-finish-the-avatar-component.html +GNU social development team +Wed, 04 Aug 2021 13:42:37 +0100
+ +Milestone: Documentation and Tests Infrastructure +WIKI Milestone entry

+ +

GNU social now has its documentation available in +https://docs.gnusocial.rocks/. It features four +different books. It is automatically generated from the source using mdBook.

+ +

Only the development book is in an elaborated state, the other books are +holding for more ready code.

+ +

Two of them are updates from existing documentation:

+ + + +

And two of them are new:

+ +
    +
  • The Developer is both intended to guide third-party plugin developers and to make it easier of contributing to the code.
  • +
  • The Designer 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.
  • +
+ +

Together with the documentation we've introduced a +wiki. 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.

+ +

Finally, when the documentation doesn't explain, and to ensure the whole code +is properly tested, we have the +tests. And the coverage is available here.

+ + + + + +]]>
https://gnusocial.rocks/v3/milestone-documentation-and-tests-infrastructure.html +https://gnusocial.rocks/v3/./milestone-documentation-and-tests-infrastructure.html +GNU social development team +Wed, 04 Aug 2021 13:37:42 +0100
+ +Milestone: Port Media handling from v2 +WIKI Milestone entry

+ +

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.

+ +

When a user shares a Link that uses OpenGraph tags or has an OEmbed provider, +the Embed plugin generates a preview for it that may contain a thumbnail.

+ +

When a user shares a Link to an image, the StoreRemoteMedia plugin can fetch the +file and make it available as an attachment, and will generate a thumbnail.

+ +

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.

+ +

There are three relevant plugins for attachment handling:

+ +
    +
  • ImageEncoder: Allows to compress, validate, rescale, and sanitize images using VIPS.
  • +
  • VideoEncoder: Allows to compress, validate, rescale, and sanitize videos using FFMpeg.
  • +
  • FileQuota: Ensures a user stays under the file quota.
  • +
+ +

How is the code organised?

+ +

There are various entities related to attachment, and thumbnail handling. +The main ones are:

+ + + +

The plugins are able to act by means of the Events system, as elaborated in the +documentation.

+ + + + + + +]]>
https://gnusocial.rocks/v3/milestone-port-media-handling-from-v2.html +https://gnusocial.rocks/v3/./milestone-port-media-handling-from-v2.html +GNU social development team +Mon, 03 May 2021 13:37:42 +0100
+
diff --git a/v3/index.html b/v3/index.html new file mode 100644 index 0000000..c557bd4 --- /dev/null +++ b/v3/index.html @@ -0,0 +1,87 @@ + + + + + + + + + + + + +Blog - GNU social V3 + +
+
+ GNU social + +
+
+
+
+

Version 3

+

Abstract

+ GNU social is the eldest free social networking platform for public and private communications used in federated social networks. It's versatile, extensible and privacy focused. We've been modernizing the existing codebase, ensuring inter-operationality as defined by the IndieWeb and we're developing a modern frontend. This makes GNU social accessible: easy to install and use, and follows AnyBrowser and A11Y guidelines. + + Our objective is to further differentiate GNU social from the alternative software available, either FOSS or Proprietary/Centralized while setting an example of how a secure, performant and plug-and-play software should be in modern day's web. + +

We are being supported by NLnet.

+
+
+
+

GNU social V3

+
Development blog where we announce our progress.
+
+
+

Milestones

+ + +
+
+ +
+ diff --git a/v3/main.css b/v3/main.css new file mode 100644 index 0000000..63670fe --- /dev/null +++ b/v3/main.css @@ -0,0 +1,16 @@ +body{font-family:Georgia,"Times New Roman",Times,serif;margin:0;padding:0;background-color:#F3F3F3;} + #divbodyholder{padding:5px;background-color:#DDD;width:100%;max-width:874px;margin:24px auto;} + #divbody{border:solid 1px #ccc;background-color:#fff;padding:0px 48px 24px 48px;top:0;} + .headerholder{background-color:#f9f9f9;border-top:solid 1px #ccc;border-left:solid 1px #ccc;border-right:solid 1px #ccc;} + .header{width:100%;max-width:800px;margin:0px auto;padding-top:24px;padding-bottom:8px;} + .content{margin-bottom:5%;} + .nomargin{margin:0;} + .description{margin-top:10px;border-top:solid 1px #666;padding:10px 0;} + h3{font-size:20pt;width:100%;font-weight:bold;margin-top:32px;margin-bottom:0;} + .clear{clear:both;} + #footer{padding-top:10px;border-top:solid 1px #666;color:#333333;text-align:center;font-size:small;font-family:"Courier New","Courier",monospace;} + a{text-decoration:none;color:#003366 !important;} + a:visited{text-decoration:none;color:#336699 !important;} + blockquote{background-color:#f9f9f9;border-left:solid 4px #e9e9e9;margin-left:12px;padding:12px 12px 12px 24px;} + blockquote img{margin:12px 0px;} + blockquote iframe{margin:12px 0px;} diff --git a/v3/milestone-documentation-and-tests-infrastructure.html b/v3/milestone-documentation-and-tests-infrastructure.html new file mode 100644 index 0000000..6b64b9d --- /dev/null +++ b/v3/milestone-documentation-and-tests-infrastructure.html @@ -0,0 +1,93 @@ + + + + + + + + + + + + +Milestone: Documentation and Tests Infrastructure - GNU social V3 + +
+
+ GNU social + +
+
+
+
+
+
+
+

GNU social V3

+
Development blog where we announce our progress.
+
+
+ +

+Milestone: Documentation and Tests Infrastructure +

+ +
August 04, 2021 — +GNU social development team +
+ + +

WIKI Milestone entry

+ +

GNU social now has its documentation available in +https://docs.gnusocial.rocks/. It features four +different books. It is automatically generated from the source using mdBook.

+ +

Only the development book is in an elaborated state, the other books are +holding for more ready code.

+ +

Two of them are updates from existing documentation:

+ + + +

And two of them are new:

+ +
    +
  • The Developer is both intended to guide third-party plugin developers and to make it easier of contributing to the code.
  • +
  • The Designer 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.
  • +
+ +

Together with the documentation we've introduced a +wiki. 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.

+ +

Finally, when the documentation doesn't explain, and to ensure the whole code +is properly tested, we have the +tests. And the coverage is available here.

+ + + + + + +
+
+
+ +
+ diff --git a/v3/milestone-documentation-and-tests-infrastructure.md b/v3/milestone-documentation-and-tests-infrastructure.md new file mode 100644 index 0000000..7d5c687 --- /dev/null +++ b/v3/milestone-documentation-and-tests-infrastructure.md @@ -0,0 +1,31 @@ +Milestone: Documentation and Tests Infrastructure + +**[WIKI Milestone entry](https://agile.gnusocial.rocks/doku.php?id=milestones:initial_test_documentation_infrastructure)** + +GNU social now has its documentation available in +[https://docs.gnusocial.rocks/](https://docs.gnusocial.rocks/). It features four +different books. It is automatically generated from the [source](https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/docs) using [mdBook](https://rust-lang.github.io/mdBook/). + +Only the development book is in an elaborated state, the other books are +holding for more ready code. + +Two of them are updates from existing documentation: + +* The [User](https://docs.gnusocial.rocks/user) one is adapted +from the existing GNU social documentation for users that was provided in v2. +* The [Administrator](https://docs.gnusocial.rocks/administrator) one is adapted +from the "Unofficial GNU social docs" by Thomask who [asked us to make it official](https://notabug.org/diogo/gnu-social/issues/246). + +And two of them are new: + +* The [Developer](https://docs.gnusocial.rocks/developer) is both intended to guide third-party plugin developers and to make it easier of contributing to the code. +* The [Designer](https://docs.gnusocial.rocks/designer) 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. + +Together with the documentation we've introduced a +[wiki](https://agile.gnusocial.rocks/). 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. + +Finally, when the documentation doesn't explain, and to ensure the whole code +is properly tested, we have the +[tests](https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/tests). And the coverage is available [here](https://coverage.gnusocial.rocks/). diff --git a/v3/milestone-port-media-handling-from-v2.html b/v3/milestone-port-media-handling-from-v2.html new file mode 100644 index 0000000..7f51f6b --- /dev/null +++ b/v3/milestone-port-media-handling-from-v2.html @@ -0,0 +1,97 @@ + + + + + + + + + + + + +Milestone: Port Media handling from v2 - GNU social V3 + +
+
+ GNU social + +
+
+
+
+
+
+
+

GNU social V3

+
Development blog where we announce our progress.
+
+
+ +

+Milestone: Port Media handling from v2 +

+ +
May 03, 2021 — +GNU social development team +
+ + +

WIKI Milestone entry

+ +

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.

+ +

When a user shares a Link that uses OpenGraph tags or has an OEmbed provider, +the Embed plugin generates a preview for it that may contain a thumbnail.

+ +

When a user shares a Link to an image, the StoreRemoteMedia plugin can fetch the +file and make it available as an attachment, and will generate a thumbnail.

+ +

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.

+ +

There are three relevant plugins for attachment handling:

+ +
    +
  • ImageEncoder: Allows to compress, validate, rescale, and sanitize images using VIPS.
  • +
  • VideoEncoder: Allows to compress, validate, rescale, and sanitize videos using FFMpeg.
  • +
  • FileQuota: Ensures a user stays under the file quota.
  • +
+ +

How is the code organised?

+ +

There are various entities related to attachment, and thumbnail handling. +The main ones are:

+ + + +

The plugins are able to act by means of the Events system, as elaborated in the +documentation.

+ + + + + + + +
+
+
+ +
+ diff --git a/v3/milestone-port-media-handling-from-v2.md b/v3/milestone-port-media-handling-from-v2.md new file mode 100644 index 0000000..97aa083 --- /dev/null +++ b/v3/milestone-port-media-handling-from-v2.md @@ -0,0 +1,34 @@ +Milestone: Port Media handling from v2 + +**[WIKI Milestone entry](https://agile.gnusocial.rocks/doku.php?id=milestones:attachment_media_embed_handling)** + +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. + +When a user shares a Link that uses OpenGraph tags or has an OEmbed provider, +the [Embed plugin](https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/Embed) generates a preview for it that may contain a thumbnail. + +When a user shares a Link to an image, the [StoreRemoteMedia plugin](https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/StoreRemoteMedia) can fetch the +file and make it available as an attachment, and will generate a thumbnail. + +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. + +There are three relevant plugins for attachment handling: + +* [ImageEncoder](https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/ImageEncoder): Allows to compress, validate, rescale, and sanitize images using VIPS. +* [VideoEncoder](https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/VideoEncoder): Allows to compress, validate, rescale, and sanitize videos using FFMpeg. +* [FileQuota](https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/FileQuota): Ensures a user stays under the file quota. + +## How is the code organised? + +There are various entities related to attachment, and thumbnail handling. +The main ones are: + +* [Attachment](https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/src/Entity/Attachment.php) +* [AttachmentThumbnail](https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/src/Entity/AttachmentThumbnail.php) + +The plugins are able to act by means of the Events system, as elaborated in the +[documentation](https://docs.gnusocial.rocks/developer/attachments.html). diff --git a/v3/updates-finish-the-avatar-component.html b/v3/updates-finish-the-avatar-component.html new file mode 100644 index 0000000..46170f4 --- /dev/null +++ b/v3/updates-finish-the-avatar-component.html @@ -0,0 +1,65 @@ + + + + + + + + + + + + +Updates: Finish the Avatar component - GNU social V3 + +
+
+ GNU social + +
+
+
+
+
+
+
+

GNU social V3

+
Development blog where we announce our progress.
+
+
+ +

+Updates: Finish the Avatar component +

+ +
August 04, 2021 — +GNU social development team +
+ + +

Avatar Component source.

+ +

Its controller handles upload, update and removal.

+ +

Important change from v2: Avatars are now regular attachments.

+ + + + + + +
+
+
+ +
+ diff --git a/v3/updates-finish-the-avatar-component.md b/v3/updates-finish-the-avatar-component.md new file mode 100644 index 0000000..5810843 --- /dev/null +++ b/v3/updates-finish-the-avatar-component.md @@ -0,0 +1,7 @@ +Updates: Finish the Avatar component + +[Avatar Component source](https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/components/Avatar). + +Its controller handles upload, update and removal. + +Important change from v2: Avatars are now regular attachments. diff --git a/v3/updates-implement-storeremotemedia-for-v3-and-port-embed.html b/v3/updates-implement-storeremotemedia-for-v3-and-port-embed.html new file mode 100644 index 0000000..bdf1d36 --- /dev/null +++ b/v3/updates-implement-storeremotemedia-for-v3-and-port-embed.html @@ -0,0 +1,76 @@ + + + + + + + + + + + + +Updates: Implement StoreRemoteMedia for v3 and port Embed - GNU social V3 + +
+
+ GNU social + +
+
+
+
+
+
+
+

GNU social V3

+
Development blog where we announce our progress.
+
+
+ +

+Updates: Implement StoreRemoteMedia for v3 and port Embed +

+ +
August 13, 2021 — +GNU social development team +
+ + +

GNU social comes with two plugins that add important media functionality.

+ +

Not talking neither about ImageEncoder nor VideoEncoder this time, but rather +about StoreRemoteMedia and Embed.

+ +

StoreRemoteMedia +fetches remote files when they are Linked in a note. I.e., when the major mimetype isn't text. +It usually fetches and attempts to generate a thumb, if there are no encoders, it drops.

+ +

Embed +attempts to generate a page preview from opengraph and oembed. I.e., acts when the major mimetype is text.

+ +

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.

+ + + + + + +
+
+
+ +
+ diff --git a/v3/updates-implement-storeremotemedia-for-v3-and-port-embed.md b/v3/updates-implement-storeremotemedia-for-v3-and-port-embed.md new file mode 100644 index 0000000..06d1a21 --- /dev/null +++ b/v3/updates-implement-storeremotemedia-for-v3-and-port-embed.md @@ -0,0 +1,18 @@ +Updates: Implement StoreRemoteMedia for v3 and port Embed + +GNU social comes with two plugins that add important media functionality. + +Not talking neither about ImageEncoder nor VideoEncoder this time, but rather +about StoreRemoteMedia and Embed. + +[StoreRemoteMedia](https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/StoreRemoteMedia) +fetches remote files when they are Linked in a note. I.e., when the major mimetype isn't `text`. +It usually fetches and attempts to generate a thumb, if there are no encoders, it drops. + +[Embed](https://code.undefinedhackers.net/GNUsocial/gnu-social/src/branch/v3/plugins/Embed) +attempts to generate a page preview from opengraph and oembed. I.e., acts when the major mimetype is `text`. + +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. diff --git a/v3/updates-improve-the-attachments-system.html b/v3/updates-improve-the-attachments-system.html new file mode 100644 index 0000000..a1571fc --- /dev/null +++ b/v3/updates-improve-the-attachments-system.html @@ -0,0 +1,85 @@ + + + + + + + + + + + + +Updates: Improve the Attachments system - GNU social V3 + +
+
+ GNU social + +
+
+
+
+
+
+
+

GNU social V3

+
Development blog where we announce our progress.
+
+
+ +

+Updates: Improve the Attachments system +

+ +
August 05, 2021 — +GNU social development team +
+ + +

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.

+ +

It's always important to start with the original code as that allows us +to review past decisions and understand all the corner cases.

+ +

Sadly, what motivated us to re-design the attachment system was the +non-considered corner cases.

+ +

Key commits:

+ + + +

The reasoning leading to these entities and structure is detailed in our +wiki.

+ +

Some relevant observations:

+ +
    +
  • Link is now part of GNU social Data Representation terms. It represents +any remote URL being shared in a note.
  • +
  • There's only one fixed directory for GSFiles.
  • +
+ + + + + +
+
+
+ +
+ diff --git a/v3/updates-improve-the-attachments-system.md b/v3/updates-improve-the-attachments-system.md new file mode 100644 index 0000000..11c436c --- /dev/null +++ b/v3/updates-improve-the-attachments-system.md @@ -0,0 +1,24 @@ +Updates: Improve the Attachments system + +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. + +It's always important to start with the original code as that allows us +to review past decisions and understand all the corner cases. + +Sadly, what motivated us to re-design the attachment system was the +non-considered corner cases. + +Key commits: + +* [32ad5dbd74 - [ENTITY] Split Attachment in various new entities](https://code.undefinedhackers.net/GNUsocial/gnu-social/commit/32ad5dbd74ebb369c4b3ed688e1fb78464fabe49) +* [c381e58d33 - [ENTITY] Refactor RemoteURL entities to Link](https://code.undefinedhackers.net/GNUsocial/gnu-social/commit/c381e58d3307e7dd07abeb9cf5b3998e34f5bd48) + +The reasoning leading to these entities and structure is detailed in our +[wiki](http://agile.gnusocial.rocks/doku.php?id=attachment). + +Some relevant observations: + +- `Link` is now part of GNU social Data Representation terms. It represents +any remote URL being shared in a note. +- There's only one fixed directory for GSFiles.