Open source private distributed social network application with focus on security, control and local store of social information.
The general purpose of the aSocial is to replace all the centralized social networks & messengers and allow the users to never store their information ini just one place. aSocial was born from the idea of complete control over social information, liberated from spam/ad, simplify connection between people and fight censorship. Storing the information on the user's devices, using strong cryptography with an ability of plausible deniability, integration the Bitcoin network will allow us to solve the issues we see everyday in the huge centralized social providers.
- 12/28/2013 - The project was started as typical social
- 10/17/2014 - Mutated into distributed one and found itself. The POC was focused on UI, but some basic components were also prepared.
- 03/30/2016 - Stopped due to breaking Qt changes, not ready Lightning network (second layer of Bitcoin for microtransactions) and overall project complexity impossible to drag by one person.
- 01/31/2021 - The lessons have been learned and rerun the aSocial development was started with SDD and searching for people who can understand & help with thinking and development. Unfortunately noone reached out and the project was stopped again.
- 01/01/2026 - AI assistants raise and a year of successfull usage gave an idea of resurrecting the project development.
WARNING: By using this software you agree not to limit forcefully the other's freedom of ditributing any kind of information even if you don't like it's nature. In case you can't comply - please remove aSocial from your device as fast as possible.
Please check out the wiki page: Wiki
TODO
The application itself is native divided into 2 parts - background backend and UI frontend. Backend working with a simple key-value database for relay/background tasks, frontend working with an encrypted key-value store to process profile data through the VFS → DBKV-rocksdb plugin chain (encrypted container → protobuf KV store).
Profile data is stored inside an encrypted VFS container (data.vfs):
vfs-cakecreates a Shufflecake-inspired container filled with random bytes.- Each passphrase derives a unique key that reveals a separate set of virtual files (plausible deniability).
dbkv-rocksdbopens a virtual.datfile as a temporary RocksDB instance. All entity data is serialised with protobuf wire format and stored under a hierarchical key scheme for efficient prefix scans (e.g.c/<persona>/<contact>for contacts).- Data schema is defined in
proto/asocial/v1/*.proto; C++ types are generated at build time byqt_add_protobufinto the sharedasocial_protolibrary. dbkv-jsonis reserved for unencrypted background/relay operations only.- All DBKV CRUD operations use
QProtobufMessagefor serialisation/deserialisation. CoreInterfaceand all plugins exchange data as protobuf-generated types (asocial::v1::*) directly — no QVariantMap conversion. Factory methods (db::create*) return unsaved objects;store*persists them.- KV key helpers, validation functions, factory methods and the plugin permission enum are
auto-generated by
protoc-gen-coredbfrom proto annotations (entity_config/deps_config) using theasocial_tplJinja2-like template engine.
The default graphical interface is built with Qt Quick and designed for both desktop and Android (touch-ready). Features include:
- Persona connection graph – central persona surrounded by contacts with trust-level-weighted connection lines and group-coloured rings
- Family tree – parents, siblings and extended family below the persona
- Interactive timeline – zoomable event bar at the bottom of the screen
- Radial context menu – right-click / long-press for context actions
- Hamburger menu – profile management, persona switching, settings
- Day/night background – animated sky that changes with wall-clock time
- Markdown messages – compose and view messages with rich formatting
Basic features of the social platform:
- Plugins - add or remove components or use the other vendor component as a plugin
- History - store not just dates of item, but also any edit of the items
- Persons - personal & legal entities, existing (with profiles) or imaginary
- Events - anything happened, happening, going to happen in the life
- Messages - monetized conversation threads or any other interaction like profile updates, news
- Overlays - your vision or additional information for existing or new entities, could be password protected
- Synchronization - make sure your devices replicates the information / profiles you have
- Sharing - ability to share your files with friends from any device you have
Based on core features aSocial support the embedded and external additional features:
- Tree of life - usual thing, your relatives and relations
- Testament - special message, will be triggered to send on some condition
- Contracts - special message, signed by 2 parties, could have penalties, money and end dates
- Web-version - access to web interface from web browser
You can see all the feature requests/bugs on the github page:
This is an experimental project - the main goal is to test State Of The Art philosophy on practice.
We would like to see a number of independent developers working on the same project issues for the real money (attached to the ticket) or just for fun. So let's see how this will work.
Repository and it's content is covered by GPL v3.0, so make sure you provide the sources.
If you will have some time - it will be great to see your changes merged to the original repository - but it's your choice, no pressure.
- Clone the repository:
$ git clone https://github.com/state-of-the-art/asocial.git - Run the build script from any empty directory:
$ ./asocial/build.sh - Locate the AppImage (desktop by default) in the current directory:
$ ./aSocial-x86_64.AppImage --help main: Init v0.1.0 Usage: ./aSocial-x86_64.AppImage [options] Options: -h, --help Displays help on commandline options. --help-all Displays help, including generic Qt options. -v, --version Displays version information. --no-gui Load CMD instead of GUI in case GUI is available
Integration tests use the Kotik helper (tests/kotik/) which wraps the
full AppImage lifecycle: it creates an isolated temp directory, launches the
app with -w, monitors stdout/stderr, and provides assertion helpers for
Qt Test.
$ ./test.sh
The whole purpose of this project - is to make sure your personal information will be controlled by you, there is no way the aSocial (except for external plugins, please see their privacy policy) will share your information without your permission with someone. But please be careful - once shared information will stay on the Internet forever, so think twice about what you are doing.