bitgroup
These days the issue of privacy online is becoming more and more important as we hear about the shocking extent to which organisations like the NSA are violating people's privacy and the giant corporations like Facebook and Google are misusing our personal information. Social networks have become an important tool for people from diverse locations and cultures to get together and organise, but when this organisation is used for purposes that oppose this corporate and government oppression it gets shut down. It's become very apparent to many people that a new form of social networking tool is required that meets a number of important criteria.
Free and open source: For it to gain widespread use and be as accessible as possible to all people like Facebook and Google applications are it must be completely free. But it's very important that the source code be available for peer review so that the users can be satisfied that it's secure and there's no nasty tricks involved such as misuse of personal information of "back doors" through the security systems.
Peer-to-peer: One of the big problems we're starting to see nowadays is that the centralised model of setting up sites on a web-server for the users to access is not very resilient. We're seeing many sites that start of with great ideals when it comes to upholding peoples rights to privacy, but when they become too popular they come under attack by "the global agenda" by being accused of aiding child pornography or "supporting terrorism". They're then forced by law to turn over their user's data or face being prosecuted and shut down. However there are some online applications and services which have come under attack but have not been successfully shut down such as The Pirate Bay and other file sharing applications and the Bitcoin crypto-currency. Although these applications are considered a major problem from the perspective of the global agenda, it's so far proven impossible to do anything about them. The reason is that they have no central point of attack, shutting down accounts or servers or prosecuting people has no effect on these systems. It's for this reason that it's absolutely necessary for us, the people, to have access to a new social networking tool that is completely peer-to-peer.
Supports privacy and anonymity: Another thing that has been growing in importance a lot over the last few years is the ability for users to maintain their anonymity when working online. It's rapidly becoming a violation of law simply to voice opinion that opposes the status quo, which is in itself ample reason, or even a moral obligation, to oppose it! It's important for people who oppose this draconian system to be able to do so anonymously, especially in exceedingly oppressive countries that don't allow basic freedom of speech rights such as China and the USA.
Bitmessage
Anyone whose thought seriously about developing a any kind of peer-to-peer application that has more than basic file sharing functionality will know that there are some extremely difficult challenges to overcome, particularly when it comes to the "sign up/sign in" and the ability for many users to "subscribe" to information. There are many complex issues involved in security and content distribution which are orders of magnitude more difficult to accomplish in a system where there are no fixed servers, and every peer must be considered as a potentially hostile to the network.
The first application which has really made headway in moving the world of peer-to-peer beyond the simple file-sharing application is the Bitcoin crypto-currency. The fact that it's financially oriented creates much more motivation for attackers to try and exploit any weakness in it, but it has stood up to everything the hackers and the governments with their billions of dollars have thrown at it. Now a few years down the track, the Bitcoin code is starting to be used in other more diverse applications such as in the Namecoin alternative domain name system and the Bitmessage secure anonymous messaging system.
Bitmessage is of particular interest because messaging is a very general application that can be used as the foundation for many other applications - social networking being one of them. And that's what the odSocial project is about, building the foundations of a secure peer-to-peer anonymous social network using Bitmessage as it's fundamental communications through which users and groups are formed and connected.
Users and groups
The basic functionality required for building a social network application is the channel which is a collection of changing content maintained by one or more users that can be "subscribed" to, or "followed" by many others. This functionality allows for all the different behaviours that make up a social network system such as creating pages, posting items, following and "liking" things, as well as other potential functionality such as blogs, wikis or scheduling applications.
The first step in this "channels" idea is to extend the basic messaging and subscription functionality of Bitmessage to allow for the formation of groups that have not only subscribers that can view the public content generated by the group, but also "members" who are the ones that produce the group's content and also have access to the group's private content.
There are two key features of Bitmessage that allow for the formation of groups. First is that any number of running instances can have the same From address, so sharing the private keys associated with an address with other people allows them to become a member of the group by being able to publish information from that group to its subscribers and other members. The second feature is that users are able to subscribe to their own addresses which means that you will receive broadcast messages that are by others who are sending from that same address. This means that a many-to-many messaging system can be set up by a group all using the same address to broadcast from and subscribing to it. They can then use the private key component of the address as a shared encryption key so that they can keep some of the messages private within the group.
In our system, users and groups are practically the same thing and are both essentially a Bitmessage address at their core which means they can send or receive messages, they can both broadcast messages to subscribers or subscribe to other user's or group's broadcast messages. The only real difference between a user and a group in the odSocial system is that users are entities that "own" a running instance of the application and don't have any members, whereas groups are entities that are created by a user and can have other users as members via invitation.
The odSocial system encapsulates this users and groups functionality in a class called odGroup. This class messages to be of different types in addition the generic message designed to be read by a recipient user or subscriber. These new message types are processed by the odSocial application instances instead of being read by a user. Any new types can be added for extending the functionality of the odSocial system, but initially just invitation, acceptance and confirmation messages are used to add the group membership functionality.
Channels
The group functionality created by the odGroup class is still very bare-bones and not really usable directly by users because the groups can have no content and all the naming is done using raw Bitmessage hash addresses. So the next level of functionality is done by a class called odChannel which extends the basic group to allow it to have persistent content in the form of a structure of properties. This allows users and groups to have human-readable names, and for users to add profile information or groups to have descriptions and articles.