From c5180b386009d3e986b13a858e77af0aa6e29ec3 Mon Sep 17 00:00:00 2001 From: Tobi Smethurst <31960611+tsmethurst@users.noreply.github.com> Date: Fri, 9 Jul 2021 13:14:34 +0200 Subject: [PATCH] Docs (#94) * play around with docs * add example images * try some image fiddling * images * more detail * little tweaks * add licenses --- README.md | 146 ++++++++++++++++++++++++++------------- docs/assets/pinafore.png | Bin 0 -> 648582 bytes docs/assets/sloth.png | Bin 0 -> 33677 bytes docs/assets/tusky.png | Bin 0 -> 639334 bytes 4 files changed, 97 insertions(+), 49 deletions(-) create mode 100644 docs/assets/pinafore.png create mode 100644 docs/assets/sloth.png create mode 100644 docs/assets/tusky.png diff --git a/README.md b/README.md index c4ef71545..e971c12db 100644 --- a/README.md +++ b/README.md @@ -2,47 +2,85 @@ ![patrons](https://img.shields.io/liberapay/patrons/dumpsterqueer.svg?logo=liberapay) ![receives](https://img.shields.io/liberapay/receives/dumpsterqueer.svg?logo=liberapay) -Federated social media software. +GoToSocial is an [ActivityPub](https://activitypub.rocks/) social network server, written in Golang. -![Sloth logo made by Freepik from www.flaticon.com](./web/assets/sloth.png) +
+ +
-GoToSocial is a Fediverse server project, written in Golang. It provides a lightweight, customizable, and safety-focused alternative to existing projects such as [Mastodon](https://joinmastodon.org/), [Pleroma](https://pleroma.social/), [Friendica](https://friendica.net), [PixelFed](https://pixelfed.org/) etc. +GoToSocial provides a lightweight, customizable, and safety-focused entryway into the [Fediverse](https://en.wikipedia.org/wiki/Fediverse), and is comparable to (but distinct from) existing projects such as [Mastodon](https://joinmastodon.org/), [Pleroma](https://pleroma.social/), [Friendica](https://friendica.net), and [PixelFed](https://pixelfed.org/). -One of the key differences between GoToSocial and those other projects is that GoToSocial doesn't include an integrated client front-end (ie., a webapp). - -Instead, like the Matrix.org's [Synapse](https://github.com/matrix-org/synapse) project, it provides only a server implementation, some static pages, and a well-documented API. On top of this API, developers are free to build any front-end implementation or mobile application that they wish. - -Because the server implementation is as generic and flexible/configurable as possible, GoToSocial provides the basis for many different types of social media experience, whether Tumblr-like, Facebook-like, or Twitter-like. +With GoToSocial, you can keep in touch with your friends, post, read, and share images and articles, without being tracked or advertised to. ## Features -A grab-bag of things that are already included or will be included in the first release(s) of the project: +### Federation -* Mastodon API compatible, which means full support for apps you already know and love like [Tusky](https://tusky.app/) and [Pinafore](https://pinafore.social/). -* Various federation modes: - * 'Normal' federation - * Allowlist-only federation - * Zero federation. -* Granular post settings: - * Local-only posts. - * Rebloggable/boostable toggle. - * 'Likeable' toggle. - * 'Replyable' toggle. -* Easy customizability for admins, without messing around in the source code: - * Adjustable post length. - * Media upload size settings. -* Built-in, automatic LetsEncrypt support (no messing around with Nginx or Certbot). -* Good performance on lower-powered machines like Raspberry Pi, old laptops and tiny VPSes (the test VPS has 1gb of ram and 1 cpu core). -* Subscribeable and shareable allow/denylists for federation. -* Strict privacy enforcement for posts and strict blocking logic. -* HTTP signature authentication by default (equivalent to Mastodon's [Secure Mode](https://docs.joinmastodon.org/spec/security/#http) being always-on). -* No external dependencies apart from a database. Binary + static assets only. +Because GoToSocial uses the [ActivityPub](https://activitypub.rocks/) protocol, you can Keep in touch not only with people on your home server, but with people all over the [Fediverse](https://en.wikipedia.org/wiki/Fediverse), seamlessly! + +### Mastodon API compatible + +Full support for modern, elegant apps like [Tusky](https://tusky.app/) and [Pinafore](https://pinafore.social/). + +Tusky | Pinafore +:-----------------------------------------------------------:|:------------------------------------------------------------------: +![An image of GoToSocial in Tusky](./docs/assets/tusky.png) | ![An image of GoToSocial in Pinafore](./docs/assets/pinafore.png) + +### Customizable + +#### Granular post settings + +You should be able to choose how your posts can be interacted with: + +* Local-only posts. +* Rebloggable/boostable toggle. +* 'Likeable' toggle. +* 'Replyable' toggle. + +#### Easy customizability for admins + +* Adjustable post length. +* Media upload size settings. + +### Convenient + +#### LetsEncrypt + + Built-in, automatic support for secure HTTPS with [LetsEncrypt](https://letsencrypt.org/). + +#### Light footprint and good performance + +Plays nice with lower-powered machines like Raspberry Pi, old laptops and tiny VPSes. + +#### Easy to deploy + +No external dependencies apart from a database. Just download the binary + assets (or Docker container), and run. + +### Secure + +#### HTTP signature authentication + +Protect your data. + +#### User Safety + +Strict privacy enforcement for posts and strict blocking logic. + +#### Subscribeable and shareable allow/denylists for federation + +Import and export allowlists and denylists. Subscribe to community-created blocklists (think Adblocker, but for federation!). + +#### Various federation modes + +* 'Normal' federation; discover new servers. +* Allowlist-only federation; choose which servers you talk to. +* Zero federation; keep your server private. ### Wishlist These cool things will be implemented if time allows (because we really want them): -* Groups and group posting! +* **Groups** and group posting! * Reputation-based 'slow' federation. * User-selectable custom templates for rendering public posts: * Twitter-style @@ -50,6 +88,14 @@ These cool things will be implemented if time allows (because we really want the * Gallery * Etc. +## Design Ethos + +One of the key differences between GoToSocial and other federated server projects is that GoToSocial doesn't include an integrated client front-end (ie., a webapp). + +Instead, like the Matrix.org's [Synapse](https://github.com/matrix-org/synapse) project, it provides only a server implementation, some static pages, and a well-documented API. On top of this API, developers are free to build any front-end implementation or mobile application that they wish. + +Because the server implementation is as generic and flexible/configurable as possible, GoToSocial provides the basis for many different types of social media experience, whether Tumblr-like, Facebook-like, or Twitter-like. + ## Status Work began on the project around February 2021, and the project is still in prerelease. @@ -74,24 +120,24 @@ For bugs and feature requests, please check to see if there's [already an issue] The following libraries and frameworks are used by GoToSocial, with gratitude 💕 -* [buckket/go-blurhash](https://github.com/buckket/go-blurhash); used for generating image blurhashes. -* [gin-gonic/gin](https://github.com/gin-gonic/gin); speedy router engine. - * [gin-contrib/cors](https://github.com/gin-contrib/cors); Gin CORS middleware. - * [gin-contrib/sessions](https://github.com/gin-contrib/sessions); Gin sessions middleware. - * [gin-contrib/static](https://github.com/gin-contrib/static); Gin static page middleware. -* [go-fed/activity](https://github.com/go-fed/activity); Golang ActivityPub/ActivityStreams library. -* [go-fed/httpsig](https://github.com/go-fed/httpsig); secure HTTP signature library. -* [go-pg/pg](https://github.com/go-pg/pg); Postgres ORM library. -* [google/uuid](https://github.com/google/uuid); UUID generation. -* [gorilla/websocket](https://github.com/gorilla/websocket); Websocket connectivity. -* [h2non/filetype](https://github.com/h2non/filetype); filetype checking. -* [oklog/ulid](https://github.com/oklog/ulid); sequential, database-friendly ID generation. -* [sirupsen/logrus](https://github.com/sirupsen/logrus); logging. -* [stretchr/testify](https://github.com/stretchr/testify); test framework. -* [superseriousbusiness/exifremove](https://github.com/superseriousbusiness/exifremove) forked from [scottleedavis/go-exif-remove](https://github.com/scottleedavis/go-exif-remove); EXIF data removal. -* [superseriousbusiness/oauth2](https://github.com/superseriousbusiness/oauth2) forked from [go-oauth2/oauth2](https://github.com/go-oauth2/oauth2); oauth server framework and token handling. -* [urfave/cli](https://github.com/urfave/cli); command-line interface framework. -* [wagslane/go-password-validator](https://github.com/wagslane/go-password-validator); password strength validation. +* [buckket/go-blurhash](https://github.com/buckket/go-blurhash); used for generating image blurhashes. [GPL-3.0 License](https://spdx.org/licenses/GPL-3.0-only.html). +* [gin-gonic/gin](https://github.com/gin-gonic/gin); speedy router engine. [MIT License](https://spdx.org/licenses/MIT.html). + * [gin-contrib/cors](https://github.com/gin-contrib/cors); Gin CORS middleware. [MIT License](https://spdx.org/licenses/MIT.html). + * [gin-contrib/sessions](https://github.com/gin-contrib/sessions); Gin sessions middleware. [MIT License](https://spdx.org/licenses/MIT.html) + * [gin-contrib/static](https://github.com/gin-contrib/static); Gin static page middleware. [MIT License](https://spdx.org/licenses/MIT.html) +* [go-fed/activity](https://github.com/go-fed/activity); Golang ActivityPub/ActivityStreams library. [BSD-3-Clause License](https://spdx.org/licenses/BSD-3-Clause.html). +* [go-fed/httpsig](https://github.com/go-fed/httpsig); secure HTTP signature library. [BSD-3-Clause License](https://spdx.org/licenses/BSD-3-Clause.html). +* [go-pg/pg](https://github.com/go-pg/pg); Postgres ORM library. [BSD-2-Clause License](https://spdx.org/licenses/BSD-2-Clause.html). +* [google/uuid](https://github.com/google/uuid); UUID generation. [BSD-3-Clause License](https://spdx.org/licenses/BSD-3-Clause.html) +* [gorilla/websocket](https://github.com/gorilla/websocket); Websocket connectivity. [BSD-2-Clause License](https://spdx.org/licenses/BSD-2-Clause.html). +* [h2non/filetype](https://github.com/h2non/filetype); filetype checking. [MIT License](https://spdx.org/licenses/MIT.html). +* [oklog/ulid](https://github.com/oklog/ulid); sequential, database-friendly ID generation. [Apache-2.0 License](https://spdx.org/licenses/Apache-2.0.html). +* [sirupsen/logrus](https://github.com/sirupsen/logrus); logging. [MIT License](https://spdx.org/licenses/MIT.html). +* [stretchr/testify](https://github.com/stretchr/testify); test framework. [MIT License](https://spdx.org/licenses/MIT.html). +* [superseriousbusiness/exifremove](https://github.com/superseriousbusiness/exifremove) forked from [scottleedavis/go-exif-remove](https://github.com/scottleedavis/go-exif-remove); EXIF data removal. [MIT License](https://spdx.org/licenses/MIT.html). +* [superseriousbusiness/oauth2](https://github.com/superseriousbusiness/oauth2) forked from [go-oauth2/oauth2](https://github.com/go-oauth2/oauth2); oauth server framework and token handling. [MIT License](https://spdx.org/licenses/MIT.html). +* [urfave/cli](https://github.com/urfave/cli); command-line interface framework. [MIT License](https://spdx.org/licenses/MIT.html). +* [wagslane/go-password-validator](https://github.com/wagslane/go-password-validator); password strength validation. [MIT License](https://spdx.org/licenses/MIT.html). ## Sponsorship + Funding @@ -101,8 +147,10 @@ If you want to sponsor this project, you can do so [here](https://liberapay.com/ ### Image Attribution -Logo made by [Freepik](https://www.freepik.com) from [www.flaticon.com](https://www.flaticon.com/). +Sloth logo made by [Freepik](https://www.freepik.com) from [www.flaticon.com](https://www.flaticon.com/). ### License -GoToSocial is licensed under the [GNU AGPL v3](LICENSE). +GoToSocial is licensed under the [GNU AGPL v3 LICENSE](LICENSE). + +Copyright (C) 2021 the GoToSocial Authors. diff --git a/docs/assets/pinafore.png b/docs/assets/pinafore.png new file mode 100644 index 0000000000000000000000000000000000000000..711d3a0ef65bbcf8d7935b7a64343619cbd24b26 GIT binary patch literal 648582 zcmc$`by$>d)HOOHQc?l}(jo#P-HjkE4bt7+9fN>?w19NCv~-u0Fm!i!cgMN;z3=zu z`SYCbxxB6!WO(9^z1LoA?Fo{T5ko^EK!HFYXcFSW3J?f9c#8xcz(R8&D2Ja8s-}B21`8_}_E4Z|7s7
zcDA;dAtIV2Dmh9n&dxM3y|?q3w_PyU={26RJ$1olgrsEe#ld{39QA=$;V17;-~=ea
zpL1ltr0{vfHUttzbc@N4=?-zQv61pP>mR0i8CP6GIWWP;;BiFkh^UZ=+HHxt`FQ8w
z>zAn)=NA Fn&Y)+?+a*Ealm033;5;
zqa#yu^J)pvupYzSzCQKa@p_j 8)t<;rf{W`ru7{uBoJP_P}`|QB?g=(
zRd;JEBty=WJ?YCA*iGM5b&z7-z>~3}y4u?I4Kb^ME)05+T;q2q{
z3>2meAL&RPKM;lllBmaX+Wp0pWk#|z9_vr4Ykvg+m2At|$SDY8{$xn)jFLGgXZaQS
zWt?nQ1!$$@m`K=^p_doO2ZL?Te4bHEcPqEK#Kp%mT5HA|U6p5K9Pd``GBaN|x_p$!
zadLF@)ZaGvsKReyV-rY*6bB0;CB=LF+U@R2VmF#ry|Q(
*zGU(70Aq6?
zrACvSjjmImbx=93_L4dn1s$E=?rzQDqfVpka#Wix(U2!mJ0oTE2M&%y4x2mY(~W(Q
zVWNCcmC=65