To create a versatile, decentralized network built on secure protocols for routing traffic over private mesh or public internetworks independent of a central supporting infrastructure.
Recent events around the world have demonstrated the importance of the free flow of information in regards to human rights and the free exercise thereof. Unfortunately, existing infrastructure is susceptible to a number of critical flaws that render it vulnerable to disruption. This project hopes to supplement the current infrastructure to create a secure, independent network that can operate under any condition including natural disaster or general failure of existing infrastructure.
In order to accomplish the creation of such a behemoth task, it will be divided into multiple segments, and as a completely open source project, individuals can contribute to and supplement whatever field they feel most comfortable in. The following are the major segments of this project:
Cjdns (https://github.com/cjdelisle/cjdns) has been selected as the main Networking component - development in this branch should be within this scope. This section is divided into three components as listed:
Community based Wireless Networks
This component will handle all of the methods of inter-node communication. Wired, wireless 802.1x, or other infrastructure considerations will need to be made and applied as an infrastructure that the mesh nodes can operate upon. This component is responsible for ensuring that regardless of medium of transmission, the core components are interoperable and can be used to route traffic over a large distance (> 1km). Information and tutorials regarding wireless links can be found on the Hardware page.
This component handles all intra-node communication, including but not limited to the assignment of node addresses, communication reliability and security, error checking, and translation with a common network stack. This is the layer that creates the network to run Cjdns on top of, and said network will need to be OS independent.
The final aspect of the networking branch will be the development of client/server methods for accessing the networking components. This can include independent hardware (Router firmware) or software for the major Operating Systems, including Windows, Linux Distros, or Mac OS.
The GUI component will be responsible for tying all of the other aspects of the project together in an easy to use, OS independent control structure that users can access configurable aspects of the program(s) through. If the GUI isn’t easy to use and intuitive, it doesn’t matter how good the rest of the project is, it won’t reach public penetration. The GUI team will involve creating the GUI’s for Windows, major flavors of Linux, and Mac, as components become available. This component is contingent on the Client/Server component
Documentation, both at the user level and technical level, will need to be available in both concise and complete formats - at varying levels of user understanding. Walkthroughs, how-tos, and other user-friendly documentation will increase the chances of the project being successfully adopted by the general community.
An FAQ or website should be maintained offering step-by-step guidance on how to set up the components that are publicly available. It should be written at the most user-friendly level and should avoid technical jargon at all costs. Make it facebook-user friendly, with little technical know how required to get set up and running.
This documentation should be detailed and include proper maintainer and engineering-level details of classes and methods used to accomplish tasks within the system. This should be written as a technical reference for new programmers or contributors to quickly get up to speed. This section could also include the current bug list, technical assignments, or other backbone-level documentation required to keep the project stable.
None of the project will be any use to anyone if the word doesn’t get out once there’s a working component. Word of mouth and SEO will be needed to get people aware of, and involved in, the project. People should be directed to the project pages for status and information on how to get involved. Above all, this project should be pitched and communicated as a MeshNet alternative, and avoid negative terms like “Darknet” when referring to the project on public forums or discussion boards where search terms will lead the public. This project is not affiliated with the anti-sec movement or #OpDarkNet. This project is, above all else, designed to facilitate the free flow of information. The type of information allowed is not up to the project contributors or maintainers to restrict.