|
|
(119 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
− | {{lowercase}} | + | {{info|The Bitgroup documentation has now moved to its own wiki at [http://www.bitgroup.org bitgroup.org].}} |
− | 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. | + | == See also == |
| + | *Bitgroup source code: [http://svn.organicdesign.co.nz/listing.php?repname=bitgroup WebSVN] | [https://github.com/OrganicDesign/bitgroup GitHub mirror] |
| + | *[[Bitgroup/Bugs]] ''- a record of the bugs and fixes'' |
| + | *[[Bitgroup/Tasks]] ''- a record of the tasks to do and done'' |
| + | *[[Bitmessage]] |
| + | *[[Bitcoin]] |
| + | *[[Python]] |
| + | *[[Single Page Application]] |
| + | *[[Closure]] |
| | | |
− | '''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]].
| + | [[Category:Projects]][[Category:Bitgroup]] |
− | | |
− | '''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 produce and publish the group's content together and also have access to the private members-only 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. 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 become members via invitation.
| |
− | | |
− | The odSocial system encapsulates this users and groups functionality in a class called ''Group''. This class allows messages to be of different ''types'' in addition the generic type of message designed to be read by a recipient user or subscriber. These new message types are processed by the odSocial application instances internally 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 ''Group'' 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 ''Channel'' which extends the basic ''Group'' to allow groups 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.
| |
− | | |
− | == Extensions ==
| |
− | Extensions will play an important role in the odSocial system. The idea is that extensions are used to extend the base ''Channel'' class in a multiple inheritance kind of way similar to the ''implements'' keyword in other languages. Each channel's members choose what extensions are active for their channel based on their needs and their security concerns.
| |
− | *[http://stackoverflow.com/questions/9539052/python-dynamically-changing-base-classes-at-runtime-how-to Dynamically changing base classes at runtime]
| |
− | *[http://www.linuxjournal.com/node/4540/print Using Mix-ins with Python]
| |
− | | |
− | [[Category:Projects]] | |