* play around with docs

* add example images

* try some image fiddling

* images

* more detail

* little tweaks

* add licenses
This commit is contained in:
Tobi Smethurst 2021-07-09 13:14:34 +02:00 committed by GitHub
parent 606ee5c615
commit c5180b3860
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 97 additions and 49 deletions

134
README.md
View File

@ -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) ![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) <p align="middle">
<img src="./docs/assets/sloth.png" width="300"/>
</p>
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). With GoToSocial, you can keep in touch with your friends, post, read, and share images and articles, without being tracked or advertised to.
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.
## Features ## Features
A grab-bag of things that are already included or will be included in the first release(s) of the project: ### Federation
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:
* 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. * Local-only posts.
* Rebloggable/boostable toggle. * Rebloggable/boostable toggle.
* 'Likeable' toggle. * 'Likeable' toggle.
* 'Replyable' toggle. * 'Replyable' toggle.
* Easy customizability for admins, without messing around in the source code:
#### Easy customizability for admins
* Adjustable post length. * Adjustable post length.
* Media upload size settings. * 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). ### Convenient
* Subscribeable and shareable allow/denylists for federation.
* Strict privacy enforcement for posts and strict blocking logic. #### LetsEncrypt
* 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. 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 ### Wishlist
These cool things will be implemented if time allows (because we really want them): 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. * Reputation-based 'slow' federation.
* User-selectable custom templates for rendering public posts: * User-selectable custom templates for rendering public posts:
* Twitter-style * Twitter-style
@ -50,6 +88,14 @@ These cool things will be implemented if time allows (because we really want the
* Gallery * Gallery
* Etc. * 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 ## Status
Work began on the project around February 2021, and the project is still in prerelease. 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 💕 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. * [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. * [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. * [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. * [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. * [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. * [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. * [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. * [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. * [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. * [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. * [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. * [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. * [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. * [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. * [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. * [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. * [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. * [wagslane/go-password-validator](https://github.com/wagslane/go-password-validator); password strength validation. [MIT License](https://spdx.org/licenses/MIT.html).
## Sponsorship + Funding ## Sponsorship + Funding
@ -101,8 +147,10 @@ If you want to sponsor this project, you can do so [here](https://liberapay.com/
### Image Attribution ### 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 ### 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.

BIN
docs/assets/pinafore.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 633 KiB

BIN
docs/assets/sloth.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
docs/assets/tusky.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 624 KiB