You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Blue Shirt Guy 1bfa04f46b fixed alignment 10 months ago
applications fixed alignment 10 months ago
files filename tweaks 11 months ago
manifesto small updates 10 months ago
README.md wording 10 months ago
install.sh filename tweaks 11 months ago
nginx.conf filename tweaks 11 months ago
systemd filename tweaks 11 months ago

README.md

free://space

The digital world, on your own terms

This is how it begins.

The Manifesto

Before anything else, I ask you to read the documents in the manifesto folder. They outline where this project is coming from and what it aims to accomplish. The manual is more important than the code.

How does it work?

When free://space is installed, it creates an entry in your /etc/hosts file for 'space', mapping to an address that corresponds to the computer you are currently using. Standard practice for running free://space is to deploy a web server where you share your hostfile, and optionally a website & digital card with some information about you.

When you click on a free:// link, the first thing the protocol does is check for any matches in your hosts file. If there are, it takes note of any comments at the end of the line to determine what software is needed to complete the connection (for example, do we need to open this link in the Tor browser?) and automates the opening process.

In the case that there are no matches, the interface will make a request for the hosts file of every node listed in your host list and then present any results matching the the thing you are looking for. Results will be displayed first from your 'friends', which are nodes that have your space listed in their hosts files, and afterwards by anyone who is not in reciprocal connection to you. From this point, you have the decision of using one of the existing definitions (if they exist) or creating your own to use and share with the people you are connected to.

The end result of this setup is essentially a map of the internet that you can define for yourself, taking inspiration from your connections and the people around you. Most importantly, there are absolutely no subscription fees or obligations to connect to a worldwide internet. free://space works just as well confined to a Local Area Network as it does the World Wide Web.

A Note on "Friends"

When we take note of a "friend" (i.e. a mutual connection), we ask them for their card. This card is coded in .ttl format, meaning it is meant to be parsed into a graph as RDF data. While there is currently no code making use of the graph, it can be queried for useful information about the network.

An example: is there anyone in my group of friends who runs a Bitcoin/Lightning node? This is a question that could be answered by a free://space network, provided the information was recorded in a card.

A Note on "The World Around You"

This repository also contains freespace_daemon, a script to scan open ports on public networks. Since port 1618 is generally unused except for some obscure corporation in North America, we can assume that anyone around running a webserver on this port will be running free://space. Check out their space, send them a message or even go say hi!

Why that port?

a+b is to a as a is to b, obviously.

Helping

The best thing you can do for this project is to share the manifesto with others, or even better is to start conversations about the topics! For the technically inclined, I would love to have help on this project. As of right now, the implementation is not very robust - it's basically just designed for the computer I am building on and everything aside from the basic pattern is subject to change. If you have suggestions, please use the "Issues" or "Discussion" tabs.

So, what else is in this repository?

Firstly, an install script called install.sh. It sets up the environment necessary to run freespace. I'm assuming that you are running Linux (bold, I know), but you may need to run chmod +x install.sh so you can run it properly.

Secondly, a directory called files which includes some prebuilt files we need to put onto the system in question to make the protocol work.

Thirdly, applications/ is a directory with all the running python scripts that make up the basic project

Setup guidelines

While installation is meant to be as quick and simple as possible, there are still some pieces that need to be set up manually after running the install.sh script.

Firefox

To make free:// links work in Firefox, open up the about:config page (Just type it into the search bar) and create a Boolean entry for network.protocol-handler.expose.free then set it to 'false'.

Then, when you click on or enter free://space into the search bar, it will ask you to select an application to use, click "Choose Another Application" and then select ~/.local/bin/freespace_protocol.py (you might need to activate "See Hidden Files" to navigate to .local from your home directory)

Desktop

This is configured automatically, but it relies on xdg - the standard for Linux desktops running GNOME or KDE. Nothing else is supported out of the box yet.