28beb28a78
- Added listen gem because rails app:update failed without it - Removes nsa gem because it requires activesupport < 6 Oddly, there's a newer version per GitHub that's not on RubyGems that raises the requirement to < 7. But, we need a new release before we can use that. - Upgrade rails-i18n to v6, for Rails 6 compatibility - Remove redis-rails since it requires Rails < 6, but we can just use the regular Rails :redis_cache_store that was introduced in 5.2. - Run `rails app:update` - Had to weed through the `config/environments` changes to pick up newly added settings, while not losing settings that were intentionally configured - This generated config/initializers/new_framework_defaults_6_0.rb. The goal is to uncomment all of the settings in that file. Once they're all uncommented, delete the file and edit config/application.rb's load_defaults to be 6.0. - force_ssl controller method is deprecated in favor of a Rails config setting. - bin/setup was generated by Rails - Verbose query logging in development is really helpful. It shows you what line of code caused a query to execute. - Calling establish_connection after worker boot isn't necessary with ActiveRecord anymore. ActiveRecord handles it gracefully. - Rails generated a migration to add a foreign key for ActiveStorage. Gab currently doesn't use ActiveStorage, and instead uses Paperclip (since ActiveStorage didn't exist when Mastadon started). So, this change isn't relevant to Gab. - Added ` || ''` in the profiles controller, because I was unable to save a change to a newly created profile. (This probably explains the 500 error I received on prod Gab recently.) |
||
---|---|---|
.circleci | ||
.dependabot | ||
.github | ||
.gitlab | ||
app | ||
bin | ||
config | ||
db | ||
dist | ||
docs | ||
lib | ||
log | ||
nanobox | ||
public | ||
streaming | ||
vendor | ||
.buildpacks | ||
.codeclimate.yml | ||
.dockerignore | ||
.editorconfig | ||
.env.nanobox | ||
.env.production.sample | ||
.env.test | ||
.env.vagrant | ||
.eslintignore | ||
.eslintrc.js | ||
.foreman | ||
.gitattributes | ||
.gitignore | ||
.haml-lint.yml | ||
.jshintrc | ||
.nanoignore | ||
.nvmrc | ||
.profile | ||
.rspec | ||
.rubocop.yml | ||
.ruby-version | ||
.scss-lint.yml | ||
.slugignore | ||
.yarnclean | ||
AUTHORS.md | ||
Aptfile | ||
CONTRIBUTING.md | ||
Capfile | ||
Dockerfile | ||
Gemfile | ||
Gemfile.lock | ||
LICENSE | ||
Procfile | ||
Procfile.dev | ||
README.md | ||
Rakefile | ||
Vagrantfile | ||
app.json | ||
babel.config.js | ||
boxfile.yml | ||
config.ru | ||
docker-compose.yml | ||
gs-deploy-develop | ||
gs-export | ||
gs-logtail | ||
package.json | ||
postcss.config.js | ||
priv-config | ||
scalingo.json | ||
yarn.lock |
README.md
Gab Social
Gab Social is an open source and fully decentralized social network powered by the Gab Platform. It is the new social network of Gab.com. This change was made to further Gab's committment to it's users trust and privacy online. And, by offering decentralization and federation, Gab further demonstrates a lack of interest in the ownership of your data.
The Gab Social project is based on the Mastodon project, and is licensed under the terms and conditions of AGPL-3.0. While we will be keeping this license, over time we will be keeping less and less of the original project's source code and approach.
Our goal is to establish the foundation of a federated network of social networks. Our first step is our move to this technology, which immediately enables the construction of that network and provides the tools people will need to create and build. Over time, a new implementation of this system will emerge that is entirely based on Node.js, moves away from Postgres as it's database, and becomes part of the HYDRA family.
Project goals
We have diverged from Mastodon in several ways in pursuit of our own goals.
- Node.js has been updated to 10.15.3LTS for hosting the Streaming API in compliance with the Gab Platform.
- Statuses were renamed from 'toots' to 'gabs'
- The maximum length of a status was increased to 3,000 characters
- The browser client user experience has been significantly altered to match what users of Gab will expect
- Features were added to integrate the system with the Gab platform (accessing trends from Dissenter, for example)
- Groups and group moderation
- Quote posting
BTCPay
In order to make BTC flow work, 3 environment variables need to be set:
BTCPAY_LEGACY_TOKEN
: So called Legacy Tokens can be found in https://btcpay.[yourdomain].com/stores/[yourstore]/TokensBTCPAY_PUB_KEY
: Public key that is used when creating an access token or pairing https://btcpay.[yourdomain].com/stores/[yourstore]/Tokens/CreateBTCPAY_MERCHANT_TOKEN
: Token created for facade merchant
Deployment
Tech stack:
- Ruby on Rails powers the REST API and other web pages
- React.js and Redux are used for the dynamic parts of the interface
- Node.js powers the streaming API
Requirements:
- PostgreSQL 9.5+
- Redis
- Ruby 2.4+
- Node.js 8+
The repository includes deployment configurations for Docker and docker-compose, but also a few specific platforms like Heroku, Scalingo, and Nanobox.
A stand-alone installation guide will be provided as soon as possible.
Local development
To get started developing on Gab, you will need to run a version of it locally. The following instructions assume you are already familiar with using a terminal program.
- Install Vagrant and VirtualBox if you haven't already.
- Clone this repository with
git clone https://code.gab.com/gab/social/gab-social.git
- Change into the project directory with
cd gab-social
- Run
vagrant up
to provision the virtual machine. This will take a while. - Finally, run
vagrant ssh -c "cd /vagrant && foreman start"
to start the local web server. - Visit http://0.0.0.0:3000 in your web browser to see Gab's splash screen. If it doesn't load, or styling is missing, wait another minute and refresh the page.
- Log in with the username
admin
and passwordadministrator
- Have fun developing on Gab!
License
Copyright (C) 2019 Gab AI, Inc., and other contributors (see AUTHORS.md, forked)
Copyright (C) 2016-2019 Eugen Rochko & other Gab Social contributors
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.