diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 9ff31ee..1ab01a1 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -4,35 +4,20 @@ "type": "split", "children": [ { - "id": "096ff39c8b3a2932", + "id": "11883abd2160efc0", "type": "tabs", "children": [ { - "id": "8fd5812ca70f0ab7", + "id": "2714f48edb8555ee", "type": "leaf", "state": { - "type": "markdown", + "type": "image", "state": { - "file": "App Architectures/2. Client - Homeserver.md", - "mode": "source", - "source": false - } - } - }, - { - "id": "eaab76dfc5b558e5", - "type": "leaf", - "state": { - "type": "markdown", - "state": { - "file": "App Architectures/4. Custom Backend.md", - "mode": "source", - "source": false + "file": "images/pubky-arch.png" } } } - ], - "currentTab": 1 + ] } ], "direction": "vertical" @@ -61,7 +46,7 @@ "state": { "type": "search", "state": { - "query": "", + "query": "pkarr", "matchingCase": false, "explainSearch": false, "collapseAll": false, @@ -98,7 +83,7 @@ "state": { "type": "backlink", "state": { - "file": "App Architectures/4. Custom Backend.md", + "file": "images/pubky-arch.png", "collapseAll": false, "extraContext": false, "sortOrder": "alphabetical", @@ -115,7 +100,7 @@ "state": { "type": "outgoing-link", "state": { - "file": "App Architectures/4. Custom Backend.md", + "file": "images/pubky-arch.png", "linksCollapsed": false, "unlinkedCollapsed": true } @@ -138,7 +123,7 @@ "state": { "type": "outline", "state": { - "file": "App Architectures/4. Custom Backend.md" + "file": "images/pubky-arch.png" } } } @@ -160,53 +145,53 @@ "hide-folders:Show hidden folders": false } }, - "active": "eaab76dfc5b558e5", + "active": "75a1317f66991245", "lastOpenFiles": [ - "Pubky App/Introduction.md", - "App Architectures/4. Custom Backend.md", - "Pubky Core/Introduction.md", - "App Architectures/1. Introduction.md", - "Pubky Applications.md", - "App Architectures/5. Complex - Custom Aggregator.md", - "App Architectures/2. Client - Homeserver.md", - "App Architectures/3. Global Aggregators.md", - "Pubky Core.md", - "images/complex_custom_aggregator.png", - "images/global_aggregator.png", - "images/global-aggregator.png", - "images/custom_backend.png", + "images/pubky-core.png_original", + "images/pubky-core.png_exiftool_tmp", + "images/pubky-backend.png_exiftool_tmp", + "images/pubky-arch.png_original", + "images/pubky-arch.png_exiftool_tmp", + "images/pubky-app.png_exiftool_tmp", + "images/pubky-header.png", + "images/pubky-core.png", + "images/pubky-backend.png", + "images/pubky-arch.png", + "images/pubky-app.png", "images/client-homeserver.png", - "images/custom-backend.png", - "readme.md", - "index.md", - "ELI5.md", - "Technologies/Paykit.md", - "Technologies/Mainline DHT.md", - "Technologies/Key Pair.md", - "Technologies/HTTPS.md", - "Technologies/DoH.md", "Technologies/DNS.md", - "Technologies/DHT.md", - "Pubky Core/Data Stores.md", + "Concepts/Credible Exit.md", + "The vision of Pubky.md", + "Pubky App/Introduction.md", + "Pubky Core/Introduction.md", + "index.md", + "Pubky Core/Homeservers.md", + "Pubky Core/Pkarr/ELI5.md", + "Technologies/DoH.md", "Pubky Core/Pkarr/4.Architecture.md", "Pubky Core/Pkarr/3.Expectations.md", - "Pubky Core/Pkarr/2.Getting Started with Pkarr.md", - "Pubky Core/Pkarr/1.Why Pkarr?.md", + "Pubky Core/Pkarr/1.Why PKARR?.md", + "Pubky Core/Pkarr/2.Getting Started with PKARR.md", "Pubky Core/Pkarr/0.Introduction.md", - "Pubky Core/notes/3.Protocols.md", - "images/obsidian.png", "quartz/public/404.html", - "quartz/public/static/og-image.png", - "quartz/public/static/icon.png", - "quartz/public/static/contentIndex.json", - "quartz/public/static", - "quartz/public/index.xml", - "quartz/public/sitemap.xml", - "quartz/public/tags/index.html", - "quartz/public/tags", - "quartz/public/index.html", - "quartz/public/Technologies/index.html", - "quartz/public/Technologies/Paykit.html", - "quartz/public/quartz/quartz/static/og-image.png" + "quartz/public/quartz/quartz/plugins/transformers/toc.ts", + "quartz/public/quartz/quartz/plugins/transformers/syntax.ts", + "quartz/public/quartz/quartz/plugins/transformers/oxhugofm.ts", + "quartz/public/quartz/quartz/plugins/transformers/ofm.ts", + "quartz/public/quartz/quartz/static/og-image.png", + "quartz/public/quartz/quartz/static/icon.png", + "quartz/public/images/mermaid_charts/semantic_social_graph.svg", + "quartz/public/images/pubky-header.png", + "Pubky Core/ELI5.md", + "Technologies/DHT.md", + "Pubky App/Backend/Introduction.md", + "Pubky App/Client/Introduction.md", + "Pubky App/Backend/Web Server.md", + "Pubky App/Backend/Indexer.md", + "Pubky App/Backend/Aggregator.md", + "Pubky App/App Architectures/4. Custom Backend.md", + "Pubky App/App Architectures/3. Global Aggregators.md", + "Pubky App/App Architectures/2. Client - Homeserver.md", + "Pubky App/App Architectures/1. Introduction.md" ] } \ No newline at end of file diff --git a/Concepts/Censorship.md b/Concepts/Censorship.md index 8a7eaf2..cff6def 100644 --- a/Concepts/Censorship.md +++ b/Concepts/Censorship.md @@ -1,6 +1,3 @@ - -## Censorship - **Censorship** is the suppression or control of speech, communication, or information by a governing body or authority, often resulting in a lack of free expression and limited user autonomy. Imagine you’ve been using a social platform to share your thoughts and connect with others. One day, you notice that your posts are disappearing or are no longer visible to your friends. Your reach is being reduced, and your voice is being silenced. This is an example of **censorship** at play—when someone else decides what you can and cannot say online, and what others can and cannot see. @@ -17,7 +14,7 @@ However, this doesn't mean we should accept censorship without a solution. Inste In **Pubky**, the approach is not to eliminate censorship entirely—because some level of censorship will always exist where there are centralized components—but rather to provide users with a way to **circumvent** it when it happens. -- **Flexible Hosting**: Pubky provides a flexible hosting model using trusted servers known as **Homeservers**. While these servers may be subject to censorship, Pubky ensures that users have the ability to migrate away from a censoring server whenever needed. Users can move their data, identities, and connections seamlessly, meaning they retain control even in the face of censorship. +- **Flexible Hosting**: Pubky provides a flexible hosting model using trusted servers known as [[Homeservers|homeservers]]. While these servers may be subject to censorship, Pubky ensures that users have the ability to migrate away from a censoring server whenever needed. Users can move their data, identities, and connections seamlessly, meaning they retain control even in the face of censorship. - **Decentralized Identity**: In Pubky, user identities are not dependent on any single server. By using **self-issued public keys**, users maintain their identity even if they change hosting providers. This prevents identity loss when moving away from a server that engages in censorship. @@ -26,13 +23,13 @@ In **Pubky**, the approach is not to eliminate censorship entirely—because som ## Important Aspects of Censorship Resistance - **Data Control**: Users should always have access to and control over their data, even if one hosting provider chooses to censor it. Pubky’s approach empowers users by ensuring they are not dependent on any one server. -- **Migration and Interoperability**: The ability to migrate data, identities, and connections between different homeservers helps users remain resilient against censorship. Interoperable systems mean that even if one provider blocks content, another can provide access. +- **Migration and Interoperability**: The ability to migrate data, identities, and connections between different [[Homeservers|homeservers]] helps users remain resilient against censorship. Interoperable systems mean that even if one provider blocks content, another can provide access. - **Local Copies and Self-Hosting**: Users can keep local copies of their data, and Pubky encourages self-hosting, giving users more control over what happens to their information and ensuring their content is not subjected to centralized oversight. ## Challenges and Considerations - **Legal Compliance**: Censorship is often tied to legal requirements that hosting providers must comply with. Even decentralized systems will face challenges related to legal jurisdictions, and Pubky is designed to navigate but not entirely eliminate these legal issues. - **Content Moderation**: Some forms of moderation are necessary—whether it's to filter out spam or harmful content. Pubky facilitates **user-controlled moderation**, where individuals or groups decide what they want to see, rather than a centralized authority imposing a one-size-fits-all policy. -- **Redundancy Limitations**: While Pubky's redundancy and migration features provide resilience, they depend on the presence of multiple homeserver options. During the early phases, users may face limited availability of alternative servers. +- **Redundancy Limitations**: While Pubky's redundancy and migration features provide resilience, they depend on the presence of multiple [[Homeservers|homeservers]] options. During the early phases, users may face limited availability of alternative servers. Censorship on the web is inevitable, but that doesn't mean users have to be powerless. With Pubky, you have the ability to choose your hosting, migrate your data, and maintain your identity—all key tools for resisting censorship. Pubky's design assumes censorship will happen and provides the mechanisms needed to overcome it. This empowers users with true control, ensuring that no single entity can unilaterally suppress their voice. The future of the web lies in resilient, user-first systems that put individuals back in control of their online presence. diff --git a/Concepts/Credible Exit.md b/Concepts/Credible Exit.md index 2455bda..e3d6183 100644 --- a/Concepts/Credible Exit.md +++ b/Concepts/Credible Exit.md @@ -1,6 +1,3 @@ - -## Credible Exit - **Credible Exit** is the ability to leave a platform or service without losing access to your data, identity, or connections, ensuring full user control and portability. This [substack post](https://subconscious.substack.com/p/credible-exit) by Gordon Brander is a good introduction to the topic. @@ -15,7 +12,7 @@ Today, most platforms hold your data hostage. They make it difficult to leave, a Here are some of the best examples of Credible Exit in practice: -- **Domain Name System (DNS)**: DNS is a classic example of a system that allows for a credible exit. If you no longer want your domain hosted with one provider, you can transfer it to another without losing control over your domain name. +- **Domain Name System (DNS)**: [[DNS]] is a classic example of a system that allows for a credible exit. If you no longer want your domain hosted with one provider, you can transfer it to another without losing control over your domain name. - **Email Protocols (IMAP/SMTP)**: Email is another example. Users can change email providers while keeping the same email address, ensuring they don't lose their communication history or contacts. - **Bitcoin Wallets**: Bitcoin wallets offer credible exit by allowing users to export private keys and import them into another wallet provider, retaining full control over their funds and transactions. @@ -31,7 +28,7 @@ In **Pubky**, Credible Exit is not just an idea—it's built into the architectu - **Data Portability**: Pubky’s design ensures that all of your data can be easily exported and imported between servers. This keeps your content intact and visible, regardless of where it’s hosted. -(NOTE: During Pubky's initial bootstrapping phase, credible exit may not be practically possible until more homeserver providers join. Synonym is building tools to make it easy for businesses and users to self-host.) +> _NOTE_: During Pubky's initial bootstrapping phase, credible exit may not be practically possible until more homeserver providers join. [Synonym](https://synonym.to/) is building tools to make it easy for businesses and users to self-host. ## Important Aspects of Credible Exit diff --git a/Concepts/Semantic Social Graph.md b/Concepts/Semantic Social Graph.md index ac15e15..6ab9184 100644 --- a/Concepts/Semantic Social Graph.md +++ b/Concepts/Semantic Social Graph.md @@ -1,5 +1,3 @@ -## Semantic Social Graph - A **Semantic Social Graph** represents relationships between users, content, and interactions, enriched with contextual meaning that enables better filtering, discovery, and coordination. Imagine being able to not only see what your friends are sharing but also easily find content that matches your interests across a wide network of people you trust. @@ -24,46 +22,7 @@ In **Pubky**, a decentralized Semantic Social Graph is central to providing a mo This diagram shows how a Semantic Social Graph works, representing users, content, and tags. Users tag content and peers, which adds context and helps determine how information flows through the network. Relationships are weighted (Pubky weighting features are under development), meaning users can specify trust levels and the strength of connections to further personalize their experience. -```mermaid -graph LR - subgraph Users - U1[User A] - U2[User B] - U3[User C] - end - - subgraph Data - C1[Post 1] - C2[Post 2] - C3[File 1] - end - - subgraph Tags - T1[Tag: Blockchain] - T2[Tag: Decentralization] - T3[Tag: Privacy] - end - - %% Users tag content - U1 --|tags with T1|--> C1 - U1 --|tags with T2|--> C2 - U2 --|tags with T2|--> C3 - U3 --|tags with T3|--> C1 - - %% Users tag peers - U1 --|tags with T2|--> U2 - U2 --|tags with T1|--> U3 - - %% Content linked to tags - C1 --|associated with|--> T1 - C1 --|associated with|--> T3 - C2 --|associated with|--> T2 - C3 --|associated with|--> T2 - - %% Weighted relationships (represented by edge labels) - U1 --|strong connection|--> U2 - U1 --|moderate connection|--> U3 -``` +![Semantic Social graph](../images/mermaid_charts/semantic_social_graph.svg) **Tags and Contextual Meaning**: Pubky allows users to add tags to content and connections, giving them the ability to add context to their relationships. This means users can easily categorize and prioritize content based on what matters to them most. @@ -71,7 +30,7 @@ graph LR - **Decentralized Indexing**: Pubky provides a decentralized approach to indexing, meaning that users aren't reliant on a single entity to determine the importance or visibility of content. Users have the power to decide what they want to see and how they want their views into the social graph to evolve. -(NOTE: During the initial bootstrapping phase of Pubky, the Semantic Social Graph may be limited in decentralization until more builders adopt the system. Synonym is actively developing tools to make it easier to run a Pubky homeserver, or self-host.) +> _NOTE_: During the initial bootstrapping phase of Pubky, the Semantic Social Graph may be limited in decentralization until more builders adopt the system. Synonym is actively developing tools to make it easier to run a Pubky [[Homeservers|homeserver]], or self-host. ## Web of Trust diff --git a/Concepts/Semantic Social Graphs.md b/Concepts/What Is a Decentralized Semantic Social Graph?.md similarity index 94% rename from Concepts/Semantic Social Graphs.md rename to Concepts/What Is a Decentralized Semantic Social Graph?.md index 7fb0d67..54f0d9d 100644 --- a/Concepts/Semantic Social Graphs.md +++ b/Concepts/What Is a Decentralized Semantic Social Graph?.md @@ -1,6 +1,5 @@ -### What Is a Decentralized Semantic Social Graph? -https://www.mermaidchart.com/raw/04ba45a5-6559-45fd-861c-f5d3ac878a91?theme=light&version=v0.1&format=svg +![Semantic Social graph](../images/mermaid_charts/semantic_social_graph.svg) **Semantic Relationships:** Connections between users and content are tagged with meaningful metadata, capturing the context, relevance, and nature of each relationship. **Weighted Connections:** Relationships aren't just binary; they carry weights that represent their strength, trust level, or relevance, enabling more sophisticated interactions. diff --git a/Pubky App/App Architectures/1. Introduction.md b/Pubky App/App Architectures/1. Introduction.md index cfb194b..5a2aae4 100644 --- a/Pubky App/App Architectures/1. Introduction.md +++ b/Pubky App/App Architectures/1. Introduction.md @@ -1,8 +1,8 @@ -Leveraging the [[Pubky Core/Introduction|Pubky Core]] protocol as the foundational layer, we can envision a diverse array of applications with distinct functionalities. While each app can implement its own unique design patterns and user interfaces, they all share a common underlying architecture: interacting with the distributed data stores, colloquially referred to as [[Data Stores |home servers]], through standardized read and write operations. +Leveraging the [[Pubky Core/Introduction|Pubky Core]] protocol as the foundational layer, we can envision a diverse array of applications with distinct functionalities. While each app can implement its own unique design patterns and user interfaces, they all share a common underlying architecture: interacting with the distributed data stores, colloquially referred to as [[Homeservers|homeservers]], through standardized read and write operations. The [[Pubky Core/Introduction|Pubky Core protocol]] enables a decentralized approach to data management, facilitating seamless communication between clients and their respective data stores. This architecture promotes data sovereignty and enhances system resilience. -Below, we present several high-level designs that showcase the versatility of this architecture, from simple client (browser) apps that interact directly with one or several homeservers to more complex applications with custom aggregators and backends capable of powerful inference: +Below, we present several high-level designs that showcase the versatility of this architecture, from simple client (browser) apps that interact directly with one or several [[Homeservers|homeservers]] to more complex applications with custom aggregators and backends capable of powerful inference: - [[2. Client - Homeserver|Client-Homeserver]] - [[4. Custom Backend|Custom backend]] diff --git a/Pubky App/Backend/Aggregator.md b/Pubky App/Backend/Aggregator.md index aaedc05..83f4014 100644 --- a/Pubky App/Backend/Aggregator.md +++ b/Pubky App/Backend/Aggregator.md @@ -1,6 +1,6 @@ ## Pubky Aggregators -Aggregators are specialized reducers or gatekeepers that continuously scan and collect data from various sources, such as [[Data Stores|data stores]]. They decide what data to allow in and what to keep out. +Aggregators are specialized reducers or gatekeepers that continuously scan and collect data from various sources, such as [[Homeservers|homeservers]]. They decide what data to allow in and what to keep out. When the aggregator receive new events, it evaluates it against its predefined criteria. If the data meets the criteria, the aggregator allows it to pass through, making it available for further processing or storage. However, if the data doesn't meet the criteria, the aggregator blocks it, preventing it from entering the system. @@ -13,4 +13,4 @@ By controlling the flow of information, aggregators play a crucial role in maint - **Normalized data schemas**: Standardized data schemas facilitate interoperability between services, making it easier to integrate and exchange data across the network. - **Public and niche aggregators**: The network supports both large-scale, public aggregators for discoverability and smaller, niche aggregators that cater to specific communities or use cases. - **Core user graph expansion**: The aggregation process starts with a core user graph and expands outward through connections, enabling the network to grow organically and efficiently. -- [[2.Censorship|Censorship resistance]]: The system's censorship resistance is achieved through a decentralized aggregation architecture, where data aggregation is distributed across a network of **independent, autonomous aggregators**. This design ensures that no single entity or node has control over the aggregation process, making it more resilient to censorship attempts. +- [[Censorship|Censorship resistance]]: The system's censorship resistance is achieved through a decentralized aggregation architecture, where data aggregation is distributed across a network of **independent, autonomous aggregators**. This design ensures that no single entity or node has control over the aggregation process, making it more resilient to censorship attempts. diff --git a/Pubky App/Backend/Indexer.md b/Pubky App/Backend/Indexer.md index 81041e4..bc72893 100644 --- a/Pubky App/Backend/Indexer.md +++ b/Pubky App/Backend/Indexer.md @@ -1,9 +1,9 @@ -The Indexer is a specialized component that plays a crucial role in the system by normalizing and transforming the aggregated data from multiple [[Data Stores|data stores]] into a unified view. This enables cross-data store search, queries, and discovery, allowing users to access and analyze data from various sources in a seamless and efficient manner. +The Indexer is a specialized component that plays a crucial role in the system by normalizing and transforming the aggregated data from multiple [[Homeservers|homeservers]] into a unified view. This enables cross-data store search, queries, and discovery, allowing users to access and analyze data from various sources in a seamless and efficient manner. ### Characteristics 1. **Data Normalization**: The Indexer normalizes the data from multiple sources, handling differences in format, structure, and schema. This involves transforming the data into a consistent format, resolving data conflicts, and ensuring that the data is accurate and reliable. -2. **Data Transformation**: The Indexer transforms the normalized data into a unified view, making it possible to query and analyze the data across multiple [[Data Stores|data stores]]. This unified view enables users to access data from different sources as if it were a single, cohesive dataset. +2. **Data Transformation**: The Indexer transforms the normalized data into a unified view, making it possible to query and analyze the data across multiple [[Homeservers|homeservers]]. This unified view enables users to access data from different sources as if it were a single, cohesive dataset. 3. **Data Integrity**: The Indexer ensures data integrity through secure synchronization protocols, guaranteeing that the indexed data is consistent and up-to-date. This involves implementing measures to prevent data corruption, ensuring that data updates are propagated across all data stores, and maintaining a high level of data quality and accuracy. 4. **Scalability**: The Indexer is designed to handle large volumes of data from multiple sources, ensuring that it can scale to meet the needs of a growing user base and increasing data demands. diff --git a/Pubky App/Backend/Introduction.md b/Pubky App/Backend/Introduction.md index 4e16617..1035173 100644 --- a/Pubky App/Backend/Introduction.md +++ b/Pubky App/Backend/Introduction.md @@ -1,4 +1,4 @@ -The Backend is responsible for collecting ([[Aggregator|aggregators]]) and organizing ([[Indexer|indexer]]) data from various sources, known as [[Data Stores|data stores]]. +The Backend is responsible for collecting ([[Aggregator|aggregators]]) and organizing ([[Indexer|indexer]]) data from various sources, known as [[Homeservers|homeservers]]. ![backend](../../images/pubky-backend.png) diff --git a/Pubky App/Client/Features/Notifications.md b/Pubky App/Client/Features/Notifications.md index 322a610..abc8510 100644 --- a/Pubky App/Client/Features/Notifications.md +++ b/Pubky App/Client/Features/Notifications.md @@ -6,7 +6,6 @@ Here are some common types of notifications you might receive: 1. **Mentions**: When someone mentions you in a [[Posts|post]], you'll receive a notification. This means they've included your public key (__pk:pubky__) in their [[Posts|post]]. 2. **Replies**: If someone replies to one of your [[Posts|post]], you'll get a notification. -3. **Likes**: When someone likes one of your [[Posts|posts]], you'll receive a notification. -4. **Re-posts**: If someone re-posts one of your posts, you'll get a notification. -5. **Follows**: When someone new follows you, you'll receive a notification. -6. **Quote Posts**: If someone quotes one of your posts, you'll receive a notification. \ No newline at end of file +3. **Re-posts**: If someone re-posts one of your posts, you'll get a notification. +4. **Follows**: When someone new follows you, you'll receive a notification. +5. **Quote Posts**: If someone quotes one of your posts, you'll receive a notification. \ No newline at end of file diff --git a/Pubky App/Client/Introduction.md b/Pubky App/Client/Introduction.md index 7e40b17..bd36969 100644 --- a/Pubky App/Client/Introduction.md +++ b/Pubky App/Client/Introduction.md @@ -6,7 +6,7 @@ The Pubky client will be available as both a desktop application and a hosted we Using the library analogy again, the Pubky Client is like a personalized research assistant who takes the prepared documents from the librarian ([[Pubky App/Backend/Introduction|backend]]) and creates a customized report just for you. This report is designed to be easy to read and understand, with all the relevant information presented in a clear and concise manner. -- Users are able to take control of the data and exit the Synonym hosted services and run their own without hampering discoverability ([[3.Credible Exit|credible exit]]). +- Users are able to take control of the data and exit the Synonym hosted services and run their own without hampering discoverability ([[Credible Exit|credible exit]]). - Pubky client uses the open [[Pubky Core/Introduction|Pubky Core]] for nearly all features, allowing users to avoid censorship by choosing self-hosting or alternate hosts without losing followers or integrity.  diff --git a/Pubky App/Introduction.md b/Pubky App/Introduction.md index 48a6ba6..e492236 100644 --- a/Pubky App/Introduction.md +++ b/Pubky App/Introduction.md @@ -1,6 +1,6 @@ ![pubkey-app](../images/pubky-app.png) -> Synonym will be initially hosting: [[Data Stores|Data stores]] and [[Pubky App/Introduction|Pubky App]] +> Synonym will be initially hosting: [[Pubky Core/Homeservers|homeserver]] and [[Pubky App/Introduction|Pubky App]] ## Overview @@ -8,7 +8,7 @@ Pubky-app's initial focus is building a decentralized social media protocol. ## Key aspects -- **Data Ownership**: Users have full autonomy over their data, hosting it on **independent [[Data Stores|data stores]]** that are decentralized and distributed across the network. This approach enables users to maintain **control** and **ownership** of their data, while also ensuring **data sovereignty** and **privacy**. +- **Data Ownership**: Users have full autonomy over their data, hosting it on **independent [[Pubky Core/Homeservers|homeservers]]** that are decentralized and distributed across the network. This approach enables users to maintain **control** and **ownership** of their data, while also ensuring **data sovereignty** and **privacy**. - **Profiles**: The system employs a **decentralized data storage** approach, where **post**, **comment**, and **like** data are stored in association with **user profiles**. - [[Aggregator|Aggregators]] collecting social graphs - Feeds of followings' activities @@ -32,5 +32,5 @@ It is the part of the Pubky App that you interact with directly. It's responsibl The early versions of Pubky app take some shortcuts over the [[Pubky Core/Introduction|Pubky Core]] design. The MVP app is centralized, therefore we saved time and complexity by aggregating functionality into fewer components. The main two components are the `Homeserver` and the `Indexer` -- The `Homeserver` fulfils the function of [[Data Stores|data stores]], [[0.Introduction|Pkarr]] republishing for users, identity-provider (Oauth-like sign-in). Users maintain a trust relationship with the `Homeserver`. +- The [[Homeservers|homeservers]] fulfils the function of `data stores`, republishing users keys to [[0.Introduction|PKARR]] and it acts also as an identity-provider (Oauth-like sign-in). Users maintain a trust relationship with the homeserver. - The `Indexer` fulfils the function of the [[Pubky App/Backend/Introduction|backend]] for the Pubky App. diff --git a/Pubky Core/ELI5.md b/Pubky Core/ELI5.md index cd34f06..3f2ea66 100644 --- a/Pubky Core/ELI5.md +++ b/Pubky Core/ELI5.md @@ -1,4 +1,4 @@ -## Explaining Pubky Core Like You're 5 Years Old +# Explaining Pubky Core Like You're 5 Years Old Imagine you have a special toy castle that you built, and you want your friends to come and play with it. Maybe you set up your castle in your backyard, or in the park, or at your grandma's house. You tell your friends where it is so they can come play. @@ -8,28 +8,28 @@ You Move the Castle: You pick up your castle and set it up somewhere else, like You Tell Your Friends: You let your friends know the new spot so they can still come and play. So, what is Pubky Core? -**Pubky Core is like you being in charge of where your stuff lives on the internet. Even if things change—like someone tries to block your stuff or you decide to move it—you have the power to: -** -Choose Where Your Data Lives: Just like you decide where to place your castle, Pubky Core lets you decide where your information is stored online. +**Pubky Core** is like you being in charge of where your stuff lives on the internet. Even if things change—like someone tries to block your stuff or you decide to move it—you have the power to: -Move It When Needed: If you have to change where your data is kept (like moving your castle), you can do that easily. +**Choose Where Your Data Lives**: Just like you decide where to place your castle, Pubky Core lets you decide where your information is stored online. -Update the Directions: You can tell everyone where to find your data, so your friends can always access it, no matter where it is. +**Move It When Needed**: If you have to change where your data is kept (like moving your castle), you can do that easily. -**Why is Pubky Core Special? -** -You're in Control: You decide where your data is stored on the internet, and you can change it whenever you need to. +**Update the Directions**: You can tell everyone where to find your data, so your friends can always access it, no matter where it is. -Stay Connected Despite Changes: If something happens—like censorship or a website blocking you—you can move your data to a new place, and people can still find it. +## Why is Pubky Core Special? -Freedom to Share: No one can stop you from sharing your stuff. You always have the ability to let others access your data by updating its location. +**You're in Control**: You decide where your data is stored on the internet, and you can change it whenever you need to. -**In Simple Terms: -** -You Control the Location of Your Data: Just like moving your castle, you choose where your online information lives. +**Stay Connected Despite Changes**: If something happens—like censorship or a website blocking you—you can move your data to a new place, and people can still find it. -Adaptable to Change: If things change or someone tries to stop you, you can move your data and keep sharing without losing anything. +**Freedom to Share**: No one can stop you from sharing your stuff. You always have the ability to let others access your data by updating its location. -Always Accessible: By updating where your data is stored, your friends (or anyone) can always find and see it. +## In Simple Terms: + +**You Control the Location of Your Data**: Just like moving your castle, you choose where your online information lives. + +**Adaptable to Change**: If things change or someone tries to stop you, you can move your data and keep sharing without losing anything. + +**Always Accessible**: By updating where your data is stored, your friends (or anyone) can always find and see it. So, Pubky Core empowers you to manage where your data is on the internet. It ensures that even if things change—like being censored or needing to move—you can keep your data accessible and tell others where to find it. It's all about you being in control, just like deciding where to set up your favorite toy so your friends can always come and play! diff --git a/Pubky Core/Homeservers.md b/Pubky Core/Homeservers.md index 37ac006..a493c3c 100644 --- a/Pubky Core/Homeservers.md +++ b/Pubky Core/Homeservers.md @@ -1,27 +1,28 @@ -The Pubky network allows multiple, independent data stores, known as "homeservers." This improves censorship-resistance and prevents any single entity from controlling the flow of information, or locking people & data in as a walled garden. +The Pubky network allows multiple, independent data stores, known as "homeservers." This improves [[Censorship|censorship-resistance]] and prevents any single entity from controlling the flow of information, or locking people & data in as a walled garden. -Homeservers are meant to represent a primary place to retrieve data from a specific PKARR public key, but the user can redefine the location of their homeserver at will by updating their PKARR in Mainline DHT. +Homeservers are meant to represent a primary place to retrieve data from a specific [[0.Introduction|PKARR]] public key, but the user can redefine the location of their homeserver at will by updating their [[0.Introduction|PKARR]] in [[DHT|mainline DHT]]. -### Public vs Private Data +## Public vs Private Data Current implementations across Pubky currently only support public, unencrypted data use cases. This does not prevent applications from using encrypted data within homeservers, we simply haven't implemented that set of features in any direct way yet. Feel free to contribute! -### Data Retrieval and Synchronization +## Data Retrieval and Synchronization -- **API and Pub/Sub access**: Authorized services can access data through a RESTful API or via a publish-subscribe (Pub/Sub) messaging system, enabling efficient and scalable data retrieval. +- **API**: Any service can access data through a RESTful API -### Decentralized Storage Architecture +## Decentralized Storage Architecture - Homeservers can be operated by individuals, cooperatives, or commercial entities, with the option for anonymous operation, promoting a decentralized and resilient storage ecosystem where users could tune their preferred redundancy while maintaining the benefits of a central homeserver. - We do not yet have any mirroring or replication tools available yet. Feel free to build with us! -### User Data Control and Credible Exit +## User Data Control and Credible Exit -- The current network is being bootstrapped by Synonym's first homeserver, which supports key accounts as a service, as well as all services required to operate the Pubky App. +- The current network is being bootstrapped by Synonym's first homeserver, which supports key accounts as a service, as well as all services required to operate the [[Pubky App/Introduction|pubky App]]. - While Synonym is currently not charging fees for homeserving, it is totall possible for anyone to run their own homerserver and require service fees or peer-to-peer micropayments, or any other requirement, to improve data redundancy and competition. -- Synonym does not control who can join or serve data on the network, but in order to truly have a "credible exit" the network will need to mature to have more providers of homeservers and Pubky applications. +- Synonym does not control who can join or serve data on the network, but in order to truly have a [[Credible Exit|"credible exit"]] the network will need to mature to have more providers of homeservers and Pubky applications. - We will also need to make it as easy as possible for people to host their own homeservers, and to host homerserver clouds. - We also need to ensure that applications remain performant & reliable as the network fragments. -### WIP -- **Merkle tree-based versioning**: Merkle trees to manage versioning and conflict resolution, ensuring efficient data synchronization and minimizing data inconsistencies. \ No newline at end of file +## WIP +- **Merkle tree-based versioning**: Merkle trees to manage versioning and conflict resolution, ensuring efficient data synchronization and minimizing data inconsistencies. +- **Event Stream**: Fetch homeserver events via publish-subscribe (Pub/Sub) messaging system, enabling efficient and scalable data retrieval. \ No newline at end of file diff --git a/Pubky Core/Introduction.md b/Pubky Core/Introduction.md index 5744593..0720253 100644 --- a/Pubky Core/Introduction.md +++ b/Pubky Core/Introduction.md @@ -4,13 +4,13 @@ Pubky Core is built on a few core concepts: -- **[[Data Stores|Data Stores]]** - Decentralized data storage nodes that host user data. Data is encrypted at rest. +- **[[Homeservers|Homeserver]]** - Decentralized data storage nodes that host user data. Data is encrypted at rest. -- **[[0.Introduction|Pkarr]]** - Self-issued public keys that function as sovereign, publicly addressable domains are used to resolve the previous components. +- **[[0.Introduction|PKARR]]** - Self-issued public keys that function as sovereign, publicly addressable domains are used to resolve the previous components. -Pubky Core's distributed architecture aims to provide user autonomy through [[3.Credible Exit|credible exit]] between interchangeable components. +Pubky Core's distributed architecture aims to provide user autonomy through [[Credible Exit|credible exit]] between interchangeable components. -- **[[1. Introduction|Pubky App Architectures]]** can be very diverse. From simple web client applications that connect to a single [[2. Client - Homeserver|homeserver]] for data storage and retrieval to [[4. Custom Backend| complex backends]] that do aggregation and powerful inference over many homeservers creating abstractions such as social media with [[1.Web of Trust|web of trust]]. +- **[[1. Introduction|Pubky App Architectures]]** can be very diverse. From simple web client applications that connect to a single [[2. Client - Homeserver|homeserver]] for data storage and retrieval to [[4. Custom Backend| complex backends]] that do aggregation and powerful inference over many **[[Homeservers|homeservers]]** creating abstractions such as social media with [[Semantic Social Graph|semantic social graph]]. ## Target Users diff --git a/Pubky Core/Pkarr/0.Introduction.md b/Pubky Core/Pkarr/0.Introduction.md index f52aab0..78c5e23 100644 --- a/Pubky Core/Pkarr/0.Introduction.md +++ b/Pubky Core/Pkarr/0.Introduction.md @@ -1,26 +1,26 @@ ## Public-Key Addressable Resource Records -[Pkarr](https://pkarr.org) is a revolutionary system that bridges the gap between the Domain Name System ([[DNS]]) and peer-to-peer overlay networks. It allows self-issued public keys to function as sovereign, publicly addressable domains. This means that anyone with a private key can have a domain that is accessible to everyone. +[PKARR](https://pkarr.org) is a revolutionary system that bridges the gap between the Domain Name System ([[DNS]]) and peer-to-peer overlay networks. It allows self-issued public keys to function as sovereign, publicly addressable domains. This means that anyone with a private key can have a domain that is accessible to everyone. The core idea is to streamline the process of publishing and resolving resource records for keys, leveraging the Distributed Hash Table ([[DHT]]) for efficient and scalable data distribution. ## Key Features -- **Simplicity**: Pkarr streamlines the integration between [[DNS]] and peer-to-peer networks. +- **Simplicity**: PKARR streamlines the integration between [[DNS]] and peer-to-peer networks. - **Sovereignty**: Public keys can be used as domains, enabling users to maintain control over their digital identities. - **Accessibility**: The system is designed to be accessible to anyone capable of maintaining a private key. - **Scalability and Resilience**: Designed with scalability and resilience in mind, using the [[Mainline DHT]] for storing ephemeral data, and employing caching strategies to minimize [[DHT]] traffic. -- **Compatibility with Existing Applications**: Supports existing applications through [[DNS]] over [[HTTPS]] ([[DoH]]) queries to Pkarr servers, ensuring broad compatibility. +- **Compatibility with Existing Applications**: Supports existing applications through [[DNS]] over [[HTTPS]] ([[DoH]]) queries to PKARR servers, ensuring broad compatibility. ## How It Works 1. **Publishing Records**: To publish resource records for a key, create a small encoded [[DNS]] packet (<= 1000 bytes), sign it, and publish it on the DHT. This can be done directly or through a relay if necessary. 2. **Resolving Records**: To find resources associated with a key, applications can query the [[DHT]] directly or through a relay, verifying the signature themselves. -3. **Fallback for Existing Applications**: Applications unaware of Pkarr can make normal [[DNS]] Queries over [[HTTPS]] (DoH) to Pkarr servers, ensuring accessibility. -4. **Caching and Republishing**: Both clients and Pkarr servers cache records extensively to improve scalability. The [[DHT]] drops records after a few hours, necessitating periodic republishing to keep records alive. +3. **Fallback for Existing Applications**: Applications unaware of PKARR can make normal [[DNS]] Queries over [[HTTPS]] (DoH) to PKARR servers, ensuring accessibility. +4. **Caching and Republishing**: Both clients and PKARR servers cache records extensively to improve scalability. The [[DHT]] drops records after a few hours, necessitating periodic republishing to keep records alive. -For more technical details on Pkarr's architecture and how it works, refer to the [[4.Architecture|architecture]] note. +For more technical details on PKARR's architecture and how it works, refer to the [[4.Architecture|architecture]] note. ## Getting Started -[To start using Pkarr](2.Getting%20Started%20with%20Pkarr.md), you can visit the [web app demo](https://app.pkarr.org) or explore the Rust examples provided in [Pkarr repository](https://github.com/Nuhvi/pkarr/). +[To start using PKARR](2.Getting%20Started%20with%20PKARR.md), you can visit the [web app demo](https://app.pkarr.org) or explore the Rust examples provided in [PKARR repository](https://github.com/Nuhvi/pkarr/). diff --git a/Pubky Core/Pkarr/1.Why Pkarr?.md b/Pubky Core/Pkarr/1.Why Pkarr?.md index 92e1b0a..cfdcb4f 100644 --- a/Pubky Core/Pkarr/1.Why Pkarr?.md +++ b/Pubky Core/Pkarr/1.Why Pkarr?.md @@ -1,4 +1,4 @@ -This note explores the motivation behind Pkarr, addressing the challenges of distributed semantics, databases, and discovery. +This note explores the motivation behind [[0.Introduction|PKARR]], addressing the challenges of distributed semantics, databases, and discovery. In pursuit of a sovereign, distributed, and open web, we identify three challenges: diff --git a/Pubky Core/Pkarr/2.Getting Started with Pkarr.md b/Pubky Core/Pkarr/2.Getting Started with Pkarr.md index 1fac940..09210de 100644 --- a/Pubky Core/Pkarr/2.Getting Started with Pkarr.md +++ b/Pubky Core/Pkarr/2.Getting Started with Pkarr.md @@ -1,4 +1,4 @@ -This guide will help you understand how to publish and resolve resource records using [[0.Introduction|pkarr]]. +This guide will help you understand how to publish and resolve resource records using [[0.Introduction|PKARR]]. ## Publishing Resource Records @@ -8,14 +8,14 @@ To publish resource records for your key, you need to sign a small encoded [[DNS To resolve some key's resources, applications can query the [[DHT]] directly or through a relay. They will then verify the signature themselves. -## [[DNS]] Queries Over [[HTTPS]] +## DNS Queries Over HTTPS -Existing applications unaware of [[0.Introduction|pkarr]] can make normal [[DNS]] Queries over [[HTTPS]] ([[DoH]]) to [[0.Introduction|pkarr]] servers. +Existing applications unaware of [[0.Introduction|PKARR]] can make normal [[DNS]] Queries over [[HTTPS]] ([[DoH]]) to [[0.Introduction|PKARR]] servers. ## Caching and Scalability -Clients and [[0.Introduction|pkarr]] servers cache records extensively to minimize [[DHT]] traffic and improve scalability. The [[DHT]] drops records after a few hours, so it's important to republish records periodically. +Clients and [[0.Introduction|PKARR]] servers cache records extensively to minimize [[DHT]] traffic and improve scalability. The [[DHT]] drops records after a few hours, so it's important to republish records periodically. ## Next Steps -For more technical details on [[0.Introduction|pkarr]]'s architecture and how it works, refer to the [[4.Architecture|architecture]] note. +For more technical details on [[0.Introduction|PKARR]]'s architecture and how it works, refer to the [[4.Architecture|architecture]] note. diff --git a/Pubky Core/Pkarr/3.Expectations.md b/Pubky Core/Pkarr/3.Expectations.md index ebf5584..d32dd61 100644 --- a/Pubky Core/Pkarr/3.Expectations.md +++ b/Pubky Core/Pkarr/3.Expectations.md @@ -1,12 +1,12 @@ -Understanding the expectations and limitations of [[0.Introduction|pkarr]] is crucial for effective use. This note outlines what [[0.Introduction|pkarr]] is not and what users should expect. +Understanding the expectations and limitations of [[0.Introduction|PKARR]] is crucial for effective use. This note outlines what [[0.Introduction|PKARR]] is not and what users should expect. ## Not a Storage Platform -[[0.Introduction|pkarr]] is not a storage platform. Records are ephemeral and need to be refreshed regularly to remain on the DHT. +[[0.Introduction|PKARR]] is not a storage platform. Records are ephemeral and need to be refreshed regularly to remain on the DHT. ## Not a Real-time Communication Medium -[[0.Introduction|pkarr]] is not designed for real-time communication. It is optimized for infrequent updates and heavy caching to reduce traffic. +[[0.Introduction|PKARR]] is not designed for real-time communication. It is optimized for infrequent updates and heavy caching to reduce traffic. ## Rate Limiting and Proof of Work @@ -18,4 +18,4 @@ Records are heavily cached, and updates might take some time to propagate. In ca ## Next Steps -For a deeper understanding of why [[0.Introduction|pkarr]] was created and its motivation, refer to the [[1.Why Pkarr?|why pkarr?]] note. +For a deeper understanding of why [[0.Introduction|PKARR]] was created and its motivation, refer to the [[1.Why PKARR?|why PKARR?]] note. diff --git a/Pubky Core/Pkarr/4.Architecture.md b/Pubky Core/Pkarr/4.Architecture.md index 741d1b2..9c5752a 100644 --- a/Pubky Core/Pkarr/4.Architecture.md +++ b/Pubky Core/Pkarr/4.Architecture.md @@ -1,4 +1,4 @@ -In-depth look at the architecture of [[0.Introduction|pkarr]], including its components and how they interact. +In-depth look at the architecture of [[0.Introduction|PKARR]], including its components and how they interact. ## Components - **Client**: Applications or users that publish or query resource records. @@ -14,5 +14,5 @@ In-depth look at the architecture of [[0.Introduction|pkarr]], including its com ## Key Technologies -- **[[Mainline DHT]]**: Pkarr uses the Mainline [[DNS]] as its overlay network, specifically BEP44 for storing ephemeral data. -- **[[DNS]] over [[HTTPS]] ([[DoH]])**: For applications unaware of Pkarr, DoH is used to resolve domains. +- **[[Mainline DHT]]**: PKARR uses the Mainline [[DNS]] as its overlay network, specifically BEP44 for storing ephemeral data. +- **[[DNS]] over [[HTTPS]] ([[DoH]])**: For applications unaware of PKARR, DoH is used to resolve domains. diff --git a/TLDR.md b/TLDR.md index bce01ad..f2e88f3 100644 --- a/TLDR.md +++ b/TLDR.md @@ -1,6 +1,7 @@ -### Pubky App - TLDR +### Pubky App [[Pubky App/Introduction|Pubky App]] is an open-source web application that helps users publish and consume Pubky homeserver data within a user experience that merges the features of popular social media, search, and publishing apps. Architecture overview. -![arch](pubky_arch.png) + +![arch](pubky-arch.png) diff --git a/Technologies/DHT.md b/Technologies/DHT.md index 249c50b..54e4578 100644 --- a/Technologies/DHT.md +++ b/Technologies/DHT.md @@ -1,4 +1,4 @@ -# Distributed Hash Table - DHT +# Distributed Hash Table It is a decentralized key-value store that allows for efficient data retrieval in a distributed system. Unlike traditional databases, DHTs do not rely on a central server to manage data. Instead, they use a hash function to map keys to nodes in the network, enabling data to be stored and retrieved across multiple nodes. diff --git a/Technologies/DNS.md b/Technologies/DNS.md index 8e16ab9..2a0cac7 100644 --- a/Technologies/DNS.md +++ b/Technologies/DNS.md @@ -1,3 +1,3 @@ -# Domain Name System - DNS +# Domain Name System It translates human-readable domain names (e.g., www.example.com) into IP addresses that computers use to identify each other on the network. This process simplifies internet navigation by allowing users to access websites using memorable names instead of numerical addresses. diff --git a/Technologies/DoH.md b/Technologies/DoH.md index 4ace2b3..98ed4fe 100644 --- a/Technologies/DoH.md +++ b/Technologies/DoH.md @@ -1,6 +1,6 @@ -# DNS over HTTPS - DoH +# DNS over HTTPS -It is a security protocol that encrypts [[DNS]] queries and responses, enhancing privacy and security by preventing eavesdropping and tampering. In the context of [[0.Introduction|pkarr]], DoH plays a crucial role in ensuring that [[DNS]] queries made to resolve public-key addresses are secure and cannot be intercepted or manipulated by third parties. +It is a security protocol that encrypts [[DNS]] queries and responses, enhancing privacy and security by preventing eavesdropping and tampering. In the context of [[0.Introduction|PKARR]], DoH plays a crucial role in ensuring that [[DNS]] queries made to resolve public-key addresses are secure and cannot be intercepted or manipulated by third parties. ### Key Points about DoH diff --git a/Technologies/HTTPS.md b/Technologies/HTTPS.md index 6c50184..dabb485 100644 --- a/Technologies/HTTPS.md +++ b/Technologies/HTTPS.md @@ -1,4 +1,4 @@ -# Hypertext Transfer Protocol Secure - HTTPS +# Hypertext Transfer Protocol Secure It is an extension of HTTP that encrypts communication over a computer network, enhancing security and privacy. It uses TLS (Transport Layer Security) or SSL (Secure Sockets Layer) for encryption, protecting against eavesdropping and tampering. HTTPS is essential for securely transmitting sensitive data, such as login credentials and financial transactions, ensuring the authenticity of websites and the privacy of user communications. diff --git a/Technologies/Key Pair.md b/Technologies/Key Pair.md index 277b0b6..5324013 100644 --- a/Technologies/Key Pair.md +++ b/Technologies/Key Pair.md @@ -3,37 +3,37 @@ A cryptography key pair consists of two related but distinct cryptographic keys: 1. **Private Key**: A secret key that is used to decrypt, sign, or authenticate data. It's called "private" because it should be kept confidential and secure to prevent unauthorized access. 2. **Public Key**: A publicly accessible key that is used to encrypt, verify, or authenticate data. It's called "public" because it can be shared freely without compromising the security of the system. -### How do key pairs work? +## How do key pairs work? Here's a simplified overview of how key pairs are used in various cryptographic scenarios: -#### Encryption +### Encryption - Alice wants to send a secure message to Bob. - Bob generates a key pair and shares his public key with Alice. - Alice uses Bob's public key to encrypt the message. - Bob uses his private key to decrypt the message. -#### Digital Signatures +### Digital Signatures - Alice wants to send a document to Bob and prove its authenticity. - Alice generates a key pair and uses her private key to sign the document. - Bob uses Alice's public key to verify the signature and ensure the document hasn't been tampered with. -#### Authentication +### Authentication - Alice wants to access a secure system or service. - The system generates a key pair and shares its public key with Alice. - Alice uses the system's public key to encrypt a challenge or password. - The system uses its private key to decrypt the challenge or password and authenticate Alice. -#### Key Pair Properties +### Key Pair Properties - **Asymmetric**: Key pairs are asymmetric, meaning that the private key is not easily derived from the public key. - **Mathematical relationship**: The private and public keys are mathematically related, allowing for encryption, decryption, signing, and verification. - **Unique**: Each key pair is unique, ensuring that data encrypted with a public key can only be decrypted with the corresponding private key. -#### Types of Key Pairs +### Types of Key Pairs - **RSA (Rivest-Shamir-Adleman)**: A popular algorithm used for encryption, decryption, and digital signatures. - **Elliptic Curve Cryptography (ECC)**: A more modern algorithm used for encryption, decryption, and digital signatures, offering better security with smaller key sizes. diff --git a/Technologies/Paykit.md b/Technologies/Paykit.md index 82c2ca1..26d367f 100644 --- a/Technologies/Paykit.md +++ b/Technologies/Paykit.md @@ -1 +1 @@ -Paykit abstracts and automates any payment method behind a single, static public key. The public key belongs to a Pubky instance and points to a [data store](Data%20Stores.md) containing all supported payment endpoints. Paykit enables applications where users pay directly to profiles, so offers a very intuitive experience, particularly when multiple payment methods are possible within the system. +Paykit abstracts and automates any payment method behind a single, static public key. The public key belongs to a Pubky instance and points to a **[[Homeservers|homeserver]]** containing all supported payment endpoints. Paykit enables applications where users pay directly to profiles, so offers a very intuitive experience, particularly when multiple payment methods are possible within the system. diff --git a/vision.md b/The vision of Pubky.md similarity index 95% rename from vision.md rename to The vision of Pubky.md index 8c64e92..0ea5c7e 100644 --- a/vision.md +++ b/The vision of Pubky.md @@ -1,10 +1,10 @@ -## The Vision of Pubky: Decentralizing Our Future +# Decentralizing Our Future Imagine a future where our online relationships are no longer dictated by corporate giants or state-controlled systems, where you decide how to connect, who to trust, and where to store your data. This is the vision of **Pubky**: a decentralized, user-first web that breaks the toxic cycle of dependency on **Big Tech**, **Big State**, and **Big Banks**. **Pubky** is not just a platform—it is an ecosystem designed to provide tools for communication, social coordination, identity management, and, eventually, financial freedom, all in one interconnected framework. Pubky will harness the power of **decentralized identity**, **censorship resistance**, **semantic social graphs**, and **Bitcoin and Lightning Network technology** to create an open web that prioritizes user autonomy. -### Replacing Big Tech: Credible Exit, Censorship Resistance, and User-Controlled Experience +## Replacing Big Tech: Credible Exit, Censorship Resistance, and User-Controlled Experience Big Tech platforms like social media giants use algorithms that limit freedom, exploit engagement, and control the flow of information. Pubky proposes a different kind of web—one built on **Semantic Social Graphs** and **self-sovereign identities**. Instead of opaque algorithms deciding what is relevant to you, **Semantic Social Graphs** and **PKARR** give users full control over their digital interactions. This system gives control back to individuals, helping replace our toxic relationship with Big Tech. @@ -16,7 +16,7 @@ Big Tech platforms like social media giants use algorithms that limit freedom, e - **Homeservers for Decentralized Hosting**: **Homeservers** allow for decentralized data hosting and competitive hosting services by enabling users to migrate away from any server that changes its policies or restricts their content. This means that censorship is anticipated and dealt with, allowing users to keep control over their digital presence. -### Replacing Big State: Self-Sovereign Identity and Peer Regulation +## Replacing Big State: Self-Sovereign Identity and Peer Regulation Governments often use centralized systems to control speech, monitor user activity, and dictate identity management. Pubky provides an alternative—a decentralized network that makes censorship impractical and gives users **self-sovereign identity**. With Pubky, **PKARR** (Public Key Addressable Roles and Resources), **Mainline DHT**, and **Semantic Social Graphs** ensure that users are empowered to self-regulate, verify authenticity, and maintain control of their identities without relying on centralized authorities. This means: @@ -28,7 +28,7 @@ Governments often use centralized systems to control speech, monitor user activi In this way, Pubky replaces the need for a centralized authority (the "Big State") by empowering users to be self-sovereign and enabling communities to regulate themselves. Pubky provides the tools to make censorship difficult and autonomy possible—giving users the power to govern their online interactions and identities independently. -### Replacing Big Banks: Competing with Fiat and Enabling Financial Freedom +## Replacing Big Banks: Competing with Fiat and Enabling Financial Freedom Beyond communication and social interaction, Synonym also seeks to empower individuals financially. Our reliance on **Big Banks** and centralized financial systems means losing autonomy over our own wealth. Pubky envisions a future where financial freedom is possible through the use of **Bitcoin** and the **Lightning Network** to decouple payments from hosted platforms and middlemen. @@ -38,7 +38,7 @@ Beyond communication and social interaction, Synonym also seeks to empower indiv - Commerce features and tools are planned for future versions of Pubky, with a long term goal of a totally dynamic digital social economy! -### A Future of Freedom and Autonomy +## A Future of Freedom and Autonomy Our vision is simple: to build a digital world where individuals are in charge, rather than corporations or governments. By integrating decentralized identities, censorship-resistant technologies, and financial independence, we can replace our toxic dependency on centralized powers with an open, user-controlled web. diff --git a/images/mermaid_charts/semantic_social_graph.svg b/images/mermaid_charts/semantic_social_graph.svg new file mode 100644 index 0000000..c641a34 --- /dev/null +++ b/images/mermaid_charts/semantic_social_graph.svg @@ -0,0 +1,12 @@ +

Tags

Data

Users

|tags with T1|

|tags with T2|

|tags with T2|

|tags with T3|

|tags with T2|

|tags with T1|

|associated with|

|associated with|

|associated with|

|associated with|

|strong connection|

|moderate connection|

User A

User B

User C

Post 1

Post 2

File 1

Tag: Blockchain

Tag: Decentralization

Tag: Privacy

\ No newline at end of file diff --git a/images/pubky-app.png b/images/pubky-app.png index 2e1287d..5f8bde3 100644 Binary files a/images/pubky-app.png and b/images/pubky-app.png differ diff --git a/images/pubky-arch.png b/images/pubky-arch.png new file mode 100644 index 0000000..fb91247 Binary files /dev/null and b/images/pubky-arch.png differ diff --git a/images/pubky-backend.png b/images/pubky-backend.png index d85d8b6..c7abb16 100644 Binary files a/images/pubky-backend.png and b/images/pubky-backend.png differ diff --git a/images/pubky-core.png b/images/pubky-core.png index 4bdc39c..ea7ebc4 100644 Binary files a/images/pubky-core.png and b/images/pubky-core.png differ diff --git a/images/pubky-header.png b/images/pubky-header.png index 8e8c273..140e155 100644 Binary files a/images/pubky-header.png and b/images/pubky-header.png differ diff --git a/images/pubky_arch.png b/images/pubky_arch.png deleted file mode 100644 index b54af0b..0000000 Binary files a/images/pubky_arch.png and /dev/null differ diff --git a/index.md b/index.md index 42c177b..edcf1e0 100644 --- a/index.md +++ b/index.md @@ -1,17 +1,17 @@ # Welcome to the Pubky Knowledge Base -This is a knowledge base for the Pubky platform, which includes [[Pubky Core/Introduction|Pubky Core]], [[Pubky Core/Pkarr/Introduction|PKARR]] and [[Pubky App/Introduction|Pubky App]]. These documents are a work in progress, much like Pubky's protocols and applications! +This is a knowledge base for the Pubky platform, which includes [[Pubky Core/Introduction|Pubky Core]], [[Pubky Core/Pkarr/0.Introduction|PKARR]] and [[Pubky App/Introduction|Pubky App]]. These documents are a work in progress, much like Pubky's protocols and applications! # What is Pubky? Pubky attempts to unlock the web by realizing our vision for a key-based, self-regulating web that puts users in control. -So far, Pubky does this by combining practical decentralized routing & identity ([[Pubky Core/Pkarr/Introduction|PKARR]]), with simple interoperable hosting ([[Pubky Core/Homeservers|Homeservers]]) that allow for [[Concepts/Censorship|censorship]] resistance and a [[Concepts/Credible Exit|credible exit]], as well as a publishing application, Pubky App, that facilitates the creation of a [[Concepts/Semantic Social Graph|Semantic Social Graph]], which can be used for filtering, discovery, matching and coordination. +So far, Pubky does this by combining practical decentralized routing & identity ([[Pubky Core/Pkarr/0.Introduction|PKARR]]), with simple interoperable hosting ([[Pubky Core/Homeservers|Homeservers]]) that allow for [[Concepts/Censorship|censorship]] resistance and a [[Concepts/Credible Exit|credible exit]], as well as a publishing application, Pubky App, that facilitates the creation of a [[Concepts/Semantic Social Graph|Semantic Social Graph]], which can be used for filtering, discovery, matching and coordination. -Learn more about the overall vision here: [[Vision|The Vision of Pubky]] +Learn more about the overall vision here: [[The vision of Pubky|The Vision of Pubky]] ## Get Started -1. [[Pubky Core/Pkarr/Introduction|Getting Started with PKARR]] - If your main interest is using the most decentralized, key-based identity & routing method, start with PKARR. +1. [[Pubky Core/Pkarr/0.Introduction|Getting Started with PKARR]] - If your main interest is using the most decentralized, key-based identity & routing method, start with PKARR. 2. [[Pubky Core/Introduction|Pubky Core - Introduction]] - If you want run your own Homeserver and apply PKARR, check out Pubky Core. 3. [[Pubky App/Introduction|Pubky App - Introduction]] - If you want to dig into the application, indexer, etc, start here! diff --git a/readme.md b/readme.md index 5a51e4b..57eb8ed 100644 --- a/readme.md +++ b/readme.md @@ -1,8 +1,8 @@ -# :brain: Pubky Knowledge Base +# Pubky Knowledge Base Welcome to the Pubky Knowledge base - we are excited to have you here. -### 🔗 [Access the Pubky Knowledge Base: notes.pubky,app!](https://notes.pubky.app) +### 🔗 [Access the Pubky Knowledge Base](https://pubky.org/) > **The current Knowledge base is a mix of reality, dreams, visions, actuality and plans.**