mirror of
1
Fork 0

readme updating (#92)

This commit is contained in:
Tobi Smethurst 2021-07-08 18:51:32 +02:00 committed by GitHub
parent 2cebac592f
commit 1dac7eb9e0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 102 additions and 43 deletions

View File

@ -1,5 +1,38 @@
# Progress # Progress
Things are moving on the project! As of July 2021 you can now:
## Admin
* Build and deploy GoToSocial as a binary, with automatic LetsEncrypt certificate support built-in.
* Create, confirm, and promote users using self-documented CLI tool.
## User
* Connect to the running instance via Tusky or Pinafore, using email address and password (stored encrypted).
* Post/delete posts.
* Reply/delete replies.
* Fave/unfave posts.
* Post images and gifs.
* Boost stuff/unboost stuff.
* Set your profile info (including header and avatar).
* Follow people/unfollow people.
* Accept follow requests from people.
* Post followers only/direct/public/unlocked.
* Customize posts with further flags: federated (y/n), replyable (y/n), likeable (y/n), boostable (y/n) -- not supported through Pinafore/Tusky yet.
* Get notifications for mentions/replies/likes/boosts.
* View local timeline.
* View and scroll home timeline (with ~10ms latency hell yeah).
* Stream new posts, notifications and deletes through a websockets connection via Pinafore.
## Federation
* Federation support and interoperability with Mastodon and others.
* Domain blocking: create, update, delete, and export domain blocks.
* Domain blocking: import lists of domain blocks -- no more blocking domains one-by-one.
## To-do list
* [ ] Client-To-Server (Client REST API) * [ ] Client-To-Server (Client REST API)
* [ ] Token and sign-in * [ ] Token and sign-in
* [x] /api/v1/apps POST (Create an application) * [x] /api/v1/apps POST (Create an application)

112
README.md
View File

@ -6,72 +6,94 @@ Federated social media software.
![Sloth logo made by Freepik from www.flaticon.com](./web/assets/sloth.png) ![Sloth logo made by Freepik from www.flaticon.com](./web/assets/sloth.png)
GoToSocial is a Fediverse server project, written in Golang. It provides an alternative to existing projects such as [Mastodon](https://joinmastodon.org/), [Pleroma](https://pleroma.social/), [Friendica](https://friendica.net), [PixelFed](https://pixelfed.org/) etc. 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.
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 web pages for profiles and posts, and a well-documented API. On this API, developers are free to build any front-end implementation or mobile application that they wish. 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. 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 Wishlist ## Features
A grab-bag of things that are already included or will be included in the project if time allows: A grab-bag of things that are already included or will be included in the first release(s) of the project:
* Various federation modes, including reputation-based 'slow' federation, 'normal' federation, allowlist-only federation, and zero 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/).
* Local-only posting, and granular post settings including 'rebloggable/boostable', 'likeable', 'replyable'. * Various federation modes:
* Character limit for posts that's easy for admins to configure (no messing around in the source code). * 'Normal' federation
* Groups and group posting! * 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). * Built-in, automatic LetsEncrypt support (no messing around with Nginx or Certbot).
* Good performance on lower-powered machines like Raspberry Pi, old laptops, tiny VPSes (the test VPS has 1gb of ram and 1 cpu core). * 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 allowlists/denylists for federation. * 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.
## Implementation Status ### Wishlist
Things are moving on the project! As of July 2021 you can now: These cool things will be implemented if time allows (because we really want them):
### Admin * Groups and group posting!
* Reputation-based 'slow' federation.
* User-selectable custom templates for rendering public posts:
* Twitter-style
* Blogpost
* Gallery
* Etc.
* Build and deploy GoToSocial as a binary, with automatic LetsEncrypt certificate support built-in. ## Status
* Create, confirm, and promote users using self-documented CLI tool.
### User Work began on the project around February 2021, and the project is still in prerelease.
* Connect to the running instance via Tusky or Pinafore, using email address and password (stored encrypted). At this point, GoToSocial is already deployable and very useable, and it federates cleanly with other Fediverse servers.
* Post/delete posts.
* Reply/delete replies.
* Fave/unfave posts.
* Post images and gifs.
* Boost stuff/unboost stuff.
* Set your profile info (including header and avatar).
* Follow people/unfollow people.
* Accept follow requests from people.
* Post followers only/direct/public/unlocked.
* Customize posts with further flags: federated (y/n), replyable (y/n), likeable (y/n), boostable (y/n) -- not supported through Pinafore/Tusky yet.
* Get notifications for mentions/replies/likes/boosts.
* View local timeline.
* View and scroll home timeline (with ~10ms latency hell yeah).
* Stream new posts, notifications and deletes through a websockets connection via Pinafore.
### Federation For a detailed view on what's implemented and what's not, and progress made towards a first v0.1.0 (beta) release, see [here](./PROGRESS.md).
* Federation support and interoperability with Mastodon and others.
* Domain blocking: create, update, delete, and export domain blocks.
* Domain blocking: import lists of domain blocks -- no more blocking domains one-by-one.
In other words, a deployed GoToSocial instance is already pretty useable!
For a detailed view on progress made towards a v0.1.0 (beta) release, see [here](./PROGRESS.md).
## Getting Started ## Getting Started
Proper documentation for running and maintaining GoToSocial will be forthcoming in the first prerelease. Proper documentation for running and maintaining GoToSocial will be forthcoming in the first release.
For now (if you want to run it pre-alpha, like a beast), check out the [quick and dirty getting started guide](./GETTINGSTARTED.md). For now (if you want to run it pre-alpha, like a beast), check out the [quick and dirty getting started guide](./GETTINGSTARTED.md).
## Contact ## Contact
For questions and comments, you can reach out to tobi on the Fediverse [here](https://ondergrond.org/@dumpsterqueer) or mail admin@gotosocial.org. For questions and comments, you can reach out to tobi on the Fediverse [here](https://ondergrond.org/@dumpsterqueer), mail [admin@gotosocial.org](mailto:admin@gotosocial.org), or [join our Matrix channel](https://matrix.to/#/!gotosocial:ondergrond.org).
## Sponsorship For bugs and feature requests, please check to see if there's [already an issue](https://github.com/superseriousbusiness/gotosocial/issues), and if not, open one or use one of the above channels to make a request (if you don't have a Github account).
## Credits
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.
## Sponsorship + Funding
Currently, this project is funded using Liberapay, to put bread on the table while work continues on it. Currently, this project is funded using Liberapay, to put bread on the table while work continues on it.
@ -80,3 +102,7 @@ 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/). 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).