Blue Shirt Guy
||2 months ago|
|applications||2 months ago|
|files||3 months ago|
|manifesto||2 months ago|
|README.md||2 months ago|
|install.sh||3 months ago|
|nginx.conf||3 months ago|
|systemd||3 months ago|
The digital world, on your own terms
This is how it begins.
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.
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.
applications/ is a directory with all the running python scripts that make up the basic project
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
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)
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.