transgress icon indicating copy to clipboard operation
transgress copied to clipboard

A content-filtering bypass system developed specifically to allow access to trans-related resources on public networks (libraries, schools, etc.)

== Transgress

=== Please Note: This is not a finished product yet, scroll down to the bottom to find out how you can help!

The ones who most need to access trans-related services and information, the most vulnerable among us, are often the ones with the least access to these sites. As governments and public networks begin to add content filtering services to their open networks, transient trans people and trans youth who have not come out find their access to critical resources dwindling. Many content systems overzealously block sites even tangentially mentioning trans people or the issues they face. When sites offering information that could help ease a person's sense of isolation or suffering are blocked, it directly impacts their safety in a very real sense.

Transgress is a simple, easy-to-use proxy service that allows people to access sites that are relevant to trans people. It requests a site from an unfiltered location, checks to see if it is relevant to trans issues, replaces any potentially flagged words, and sends the page on to the requester. In addition to the standard content of the page, a javascript file is also included, that, upon the page loading completely, repairs the word replacements, restoring the content to its original state. Any links and content that is part of the site being browsed, is also run through transgress, so you should be able to browse, as normal, without worrying about any technical details.

Built into the system is a relatively simple content checking service. If a site does not appear to be related to trans issues and people, the page served up will be a simple page describing the fact that this service should not be used for unintended purposes. This should hopefully prevent the service from being flagged by content filter providers as potentially problematic. It is my hope, that if this service is flagged, that another instance can be created for continued public usage. Furthermore, such a banning could be a jumping off point to begin discussing with these providers about how these services can harm already disadvantaged people, and create a dialogue for balancing security and safety in a responsible manner.

== How YOU can help

It is my hope that Transgress will continue to develop to become increasingly robust so that those who need the resources available on the internet can access them in a safe and convenient way.

Feel free to contact the maintainers of this project by opening an issue in the github repo located at https://github.com/Valarissa/transgress

Pull requests are also, not only welcome, but actively encouraged!

If you know quite a bit about cross-site scripting, I'd love to talk to see if it would be possible to address certain XSS issues currently present. If you want some additional feature of some sort, by all means, create an issue and we'll talk about the potential of adding it!

Adding a new term to search for or replace is INCREDIBLY easy. Just add things to https://github.com/Valarissa/transgress/blob/master/public/assets/string_list.json and send the additions as a pull request. That's it. SUPER simple. With a few more additions to the JS code and some changes to the views, this project will be working as it's intended.

== Development

=== Getting started—first time set up

  • Check out source code.

  • Set up your ruby environment.

    There are many options for installing the version of ruby used by this project (currently 2.1.0). Here’s how to do it with rbenv:

    rbenv install

    See also docs for rbenv[https://github.com/sstephenson/rbenv], RVM[https://rvm.io/], chruby[https://github.com/postmodern/chruby]

  • Install gems.

    gem install bundler bundle install

=== Starting the app

bundle exec rackup

Open http://localhost:9292 in your browser.