mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-30 20:22:25 -05:00 
			
		
		
		
	Docs (#94)
* play around with docs * add example images * try some image fiddling * images * more detail * little tweaks * add licenses
This commit is contained in:
		
					parent
					
						
							
								606ee5c615
							
						
					
				
			
			
				commit
				
					
						c5180b3860
					
				
			
		
					 4 changed files with 97 additions and 49 deletions
				
			
		
							
								
								
									
										146
									
								
								README.md
									
										
									
									
									
								
							
							
						
						
									
										146
									
								
								README.md
									
										
									
									
									
								
							|  | @ -2,47 +2,85 @@ | ||||||
| 
 | 
 | ||||||
|   |   | ||||||
| 
 | 
 | ||||||
| Federated social media software. | GoToSocial is an [ActivityPub](https://activitypub.rocks/) social network server, written in Golang. | ||||||
| 
 | 
 | ||||||
|  | <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 | ||||||
| 
 | 
 | ||||||
| * Mastodon API compatible, which means full support for apps you already know and love like [Tusky](https://tusky.app/) and [Pinafore](https://pinafore.social/). | 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! | ||||||
| * Various federation modes: | 
 | ||||||
|   * 'Normal' federation | ### Mastodon API compatible | ||||||
|   * Allowlist-only federation | 
 | ||||||
|   * Zero federation. | Full support for modern, elegant apps like [Tusky](https://tusky.app/) and [Pinafore](https://pinafore.social/). | ||||||
| * Granular post settings: | 
 | ||||||
|   * Local-only posts. | Tusky                                                        |  Pinafore | ||||||
|   * Rebloggable/boostable toggle. | :-----------------------------------------------------------:|:------------------------------------------------------------------: | ||||||
|   * 'Likeable' toggle. |   |  | ||||||
|   * 'Replyable' toggle. | 
 | ||||||
| * Easy customizability for admins, without messing around in the source code: | ### Customizable | ||||||
|   * Adjustable post length. | 
 | ||||||
|   * Media upload size settings. | #### Granular post 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). | You should be able to choose how your posts can be interacted with: | ||||||
| * Subscribeable and shareable allow/denylists for federation. | 
 | ||||||
| * Strict privacy enforcement for posts and strict blocking logic. | * Local-only posts. | ||||||
| * HTTP signature authentication by default (equivalent to Mastodon's [Secure Mode](https://docs.joinmastodon.org/spec/security/#http) being always-on). | * Rebloggable/boostable toggle. | ||||||
| * No external dependencies apart from a database. Binary + static assets only. | * '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 | ### 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
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/assets/pinafore.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 633 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/assets/sloth.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/assets/sloth.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 33 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/assets/tusky.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/assets/tusky.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 624 KiB | 
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue