एक्टिविटीपब वर्ल्ड वाइड वेब कंसोर्टियम द्वारा मानकीकृत एक खुला, वितरित सोशल नेटवर्क प्रोटोकॉल है। इसका पहला संस्करण 2018 में जारी किया गया था, इसलिए यह नया नहीं है। इसका उपयोग कई सोशल नेटवर्क द्वारा किया जाता है, जिसमें मास्टोडॉन भी शामिल है, जिसकी लोकप्रियता में हाल ही में उल्लेखनीय वृद्धि देखी गई है जब एलोन मस्क ने ट्विटर खरीदा और ऐसे बदलाव किए जो कई लोगों को पसंद नहीं आए।
इसके अलावा, टम्बलर और फेसबुक के ट्विटर के विकल्प, थ्रेड्स ने भी संकेत दिया है कि वे भविष्य में प्रोटोकॉल का समर्थन करेंगे। नया प्रोटोकॉल न होने के बावजूद एक्टिविटीपब अब तेजी से लोकप्रिय हो रहा है।
जैसा कि यूरोपीय संघ और संयुक्त राज्य अमेरिका लंबे समय से बड़े सामाजिक नेटवर्क के बाजार एकाधिकार के बारे में चिंतित हैं, मैं कल्पना कर सकता हूं कि भविष्य में, सरकारी दबाव में, फेसबुक और ट्विटर जैसे मौजूदा सबसे बड़े सामाजिक नेटवर्क भी प्रोटोकॉल का समर्थन करेंगे और बन जाएंगे। फ़ेडिवर्स का हिस्सा। (फेडिवर्स सोशल नेटवर्क का एक ब्रह्मांड है जिसमें एक्टिविटीपब का समर्थन करने वाले प्रदाता शामिल हैं।)
मेरा मानना है कि भविष्य में हम ट्विटर या फेसबुक को नहीं चुनेंगे क्योंकि वे बंद हो जायेंगे और हमारे पास कोई अन्य विकल्प नहीं होगा।
प्रत्येक प्लेटफ़ॉर्म की ताकत उससे आएगी जिसके पास आने वाले भारी मात्रा में डेटा को फ़िल्टर करने, उपयोगकर्ताओं के लिए सबसे महत्वपूर्ण जानकारी को छांटने, चुनने और सारांशित करने के लिए बेहतर कृत्रिम बुद्धिमत्ता है।
बेशक, ऐसा करने के लिए उपयोगकर्ता को अच्छी तरह से जानना होगा, जो उपयोगकर्ता के हित में भी है। बदले में, कृत्रिम बुद्धिमत्ता कहीं अधिक प्रासंगिक विज्ञापन प्रदान कर सकती है।
एक खुली, सुलभ प्रणाली में, प्रतिस्पर्धा अब सामाजिक नेटवर्क के बीच नहीं, बल्कि कृत्रिम बुद्धिमत्ता-आधारित एल्गोरिदम के बीच होगी।
आइए देखें कि एक्टिविटीपब कैसे काम करता है। बुनियादी कार्यक्षमता को इस बहुत ही सरल चित्र द्वारा अच्छी तरह से संक्षेप में प्रस्तुत किया गया है।
प्रोटोकॉल के दो मुख्य घटक हैं: इनबॉक्स और आउटबॉक्स। ये दो एपीआई एंडपॉइंट हैं जिन्हें HTTP प्रोटोकॉल के माध्यम से एक्सेस किया जा सकता है। जब कोई उपयोगकर्ता बाहरी दुनिया के साथ कुछ संवाद करना चाहता है (उदाहरण के लिए, कुछ सामग्री पोस्ट करें), तो वे इसे आउटबॉक्स पर भेज देते हैं। यहां, सिस्टम इसे एक उपयुक्त सूची में जोड़ता है, जिसे अनुयायी आउटबॉक्स को पढ़कर एक्सेस कर सकते हैं।
यदि बाहरी दुनिया से कोई व्यक्ति उपयोगकर्ता को कुछ भेजना चाहता है (उदाहरण के लिए, एक गैर-सार्वजनिक पोस्ट जिसे केवल कुछ उपयोगकर्ता ही देख सकते हैं), तो वे इसे एन्क्रिप्टेड रूप में इनबॉक्स में भेजते हैं। इनबॉक्स एक ईमेल इनबॉक्स की तरह है, जहां आने वाली सामग्री एकत्र की जाती है और जहां उपयोगकर्ता उस तक पहुंच सकता है।
वेबफिंगर प्रोटोकॉल का उपयोग करके कोई भी इनबॉक्स और आउटबॉक्स का स्थान पुनः प्राप्त कर सकता है। इसका परीक्षण एक्टिविटीपब एक्सप्लोरर की मदद से भी किया जा सकता है, जो प्रोटोकॉल के साथ प्रयोग करने और समझने के लिए एक सुपर टूल है।
एक्टिविटीपब में एक उपयोगकर्ता नाम एक ईमेल पते के समान है। उदाहरण के लिए, मेरा मास्टोडॉन उपयोगकर्ता नाम @[email protected] है। इसका मतलब यह है कि मेरी उपयोगकर्ता जानकारी dm.me सर्वर पर thebojda नाम से संग्रहीत है।
जब एक्टिविटीपब एक्सप्लोरर में प्रवेश किया जाता है, तो यह डेटा पुनर्प्राप्त करने के लिए वेबफिंगर प्रोटोकॉल के अनुसार निम्नलिखित यूआरएल को क्वेरी करेगा:
https://me.dm/.well-known/webfinger?resource=acct:thebojda%40me.dm
प्रतिक्रिया एक JSON ऑब्जेक्ट है जो इस तरह दिखती है:
{ "subject":"acct:[email protected]", "aliases":[ "https://me.dm/@thebojda", "https://me.dm/users/thebojda" ], "links":[ { "rel":"http://webfinger.net/rel/profile-page", "type":"text/html", "href":"https://me.dm/@thebojda" }, { "rel":"self", "type":"application/activity+json", "href":"https://me.dm/users/thebojda" }, { "rel":"http://ostatus.org/schema/1.0/subscribe", "template":"https://me.dm/authorize_interaction?uri={uri}" } ] }
यहां से यह निर्धारित किया जा सकता है कि एक्टिविटीपब जानकारी https://me.dm/users/thebojda URL पर पहुंच योग्य होगी। यदि हम इसे एक्टिविटीपब एक्सप्लोरर में दर्ज करते हैं, तो यह निम्नलिखित JSON लौटाएगा:
{ "@context": [ "https://www.w3.org/ns/activitystreams", "https://w3id.org/security/v1", { "manuallyApprovesFollowers": "as:manuallyApprovesFollowers", "toot": "http://joinmastodon.org/ns#", "featured": { "@id": "toot:featured", "@type": "@id" }, "featuredTags": { "@id": "toot:featuredTags", "@type": "@id" }, "alsoKnownAs": { "@id": "as:alsoKnownAs", "@type": "@id" }, "movedTo": { "@id": "as:movedTo", "@type": "@id" }, "schema": "http://schema.org#", "PropertyValue": "schema:PropertyValue", "value": "schema:value", "discoverable": "toot:discoverable", "Device": "toot:Device", "Ed25519Signature": "toot:Ed25519Signature", "Ed25519Key": "toot:Ed25519Key", "Curve25519Key": "toot:Curve25519Key", "EncryptedMessage": "toot:EncryptedMessage", "publicKeyBase64": "toot:publicKeyBase64", "deviceId": "toot:deviceId", "claim": { "@type": "@id", "@id": "toot:claim" }, "fingerprintKey": { "@type": "@id", "@id": "toot:fingerprintKey" }, "identityKey": { "@type": "@id", "@id": "toot:identityKey" }, "devices": { "@type": "@id", "@id": "toot:devices" }, "messageFranking": "toot:messageFranking", "messageType": "toot:messageType", "cipherText": "toot:cipherText", "suspended": "toot:suspended", "focalPoint": { "@container": "@list", "@id": "toot:focalPoint" } } ], "id": "https://me.dm/users/thebojda", "type": "Person", "following": "https://me.dm/users/thebojda/following", "followers": "https://me.dm/users/thebojda/followers", "inbox": "https://me.dm/users/thebojda/inbox", "outbox": "https://me.dm/users/thebojda/outbox", "featured": "https://me.dm/users/thebojda/collections/featured", "featuredTags": "https://me.dm/users/thebojda/collections/tags", "preferredUsername": "thebojda", "name": "Laszlo Fazekas", "summary": "<p>Software developer, contributing writer</p>", "url": "https://me.dm/@thebojda", "manuallyApprovesFollowers": false, "discoverable": false, "published": "2023-03-02T00:00:00Z", "devices": "https://me.dm/users/thebojda/collections/devices", "publicKey": { "id": "https://me.dm/users/thebojda#main-key", "owner": "https://me.dm/users/thebojda", "publicKeyPem": "-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxlvpgcOxBikiXfm9snZt EB3Y2BSnBW3s8nd1d4Z1wCzaNfa/woB6RDQJoQYEISbMpkEyWhDzI4jRDafpn5/j YiyyGka9U2KZHv1to0Ej9uVwUcQOnsq9iUtJGhOWCP27blKGTLKFEHtPL2Y4hp4Z kYzlh1x0aAyw8YC7/nbS8WDAeZNS7R3ET7Syhp3LKiCMmL1aCLSoOQJ5DdxVikMJ rJ9bzlUjxzCsm1aNBB0i269t4fD1evBO8QDhEAOnAZ6wLEV74j9SCjYMvKRV8z5i PQbhbKntXjn1XhbkIkj1D+yGRYYfnm1XyWTuaM4mDllvuOyqJ8GQVFADLc6KCQYz 7QIDAQAB -----END PUBLIC KEY----- " }, "tag": [], "endpoints": { "sharedInbox": "https://me.dm/inbox" }, "icon": { "type": "Image", "mediaType": "image/jpeg", "url": "https://media.me.dm/accounts/avatars/109/955/144/019/799/820/original/fe8e930e0f1467ac.jpeg" } }
यहां, आप मेरे बारे में सभी उपयोगकर्ता-विशिष्ट जानकारी पा सकते हैं, लेकिन सबसे महत्वपूर्ण बात यह है कि यहां इनबॉक्स और आउटबॉक्स एंडपॉइंट के यूआरएल हैं, साथ ही मुझे भेजे गए संदेशों को एन्क्रिप्ट करने के लिए सार्वजनिक कुंजी भी है। आउटबॉक्स की सामग्री को क्वेरी करते समय, निम्नलिखित JSON लौटाया जाता है:
{ "@context": "https://www.w3.org/ns/activitystreams", "id": "https://me.dm/users/thebojda/outbox", "type": "OrderedCollection", "totalItems": 1, "first": "https://me.dm/users/thebojda/outbox?page=true", "last": "https://me.dm/users/thebojda/outbox?min_id=0&page=true" }
चूंकि पोस्ट पेजों में विभाजित हैं, यहां हम पहले और आखिरी पेज के यूआरएल देख सकते हैं। पहले पृष्ठ के यूआरएल तक पहुंच कर, हम अपनी प्रविष्टियां देख सकते हैं, जिनमें से वर्तमान में केवल एक ही है।
{ "@context": [ "https://www.w3.org/ns/activitystreams", { "ostatus": "http://ostatus.org#", "atomUri": "ostatus:atomUri", "inReplyToAtomUri": "ostatus:inReplyToAtomUri", "conversation": "ostatus:conversation", "sensitive": "as:sensitive", "toot": "http://joinmastodon.org/ns#", "votersCount": "toot:votersCount" } ], "id": "https://me.dm/users/thebojda/outbox?page=true", "type": "OrderedCollectionPage", "prev": "https://me.dm/users/thebojda/outbox?min_id=109955178005562038&page=true", "partOf": "https://me.dm/users/thebojda/outbox", "orderedItems": [ { "id": "https://me.dm/users/thebojda/statuses/109955178005562038/activity", "type": "Create", "actor": "https://me.dm/users/thebojda", "published": "2023-03-02T18:47:47Z", "to": [ "https://www.w3.org/ns/activitystreams#Public" ], "cc": [ "https://me.dm/users/thebojda/followers" ], "object": { "id": "https://me.dm/users/thebojda/statuses/109955178005562038", "type": "Note", "summary": null, "inReplyTo": null, "published": "2023-03-02T18:47:47Z", "url": "https://me.dm/@thebojda/109955178005562038", "attributedTo": "https://me.dm/users/thebojda", "to": [ "https://www.w3.org/ns/activitystreams#Public" ], "cc": [ "https://me.dm/users/thebojda/followers" ], "sensitive": false, "atomUri": "https://me.dm/users/thebojda/statuses/109955178005562038", "inReplyToAtomUri": null, "conversation": "tag:me.dm,2023-03-02:objectId=1406005:objectType=Conversation", "content": "<p>My "ars poetica": How to Change the World?! Pocket Guide for People With a Messiah Complex <a href=\"https://medium.com/geekculture/how-to-change-the-world-pocket-guide-for-people-with-a-messiah-complex-dd2d16bb92a\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">medium.com/geekculture/how-to-</span><span class=\"invisible\">change-the-world-pocket-guide-for-people-with-a-messiah-complex-dd2d16bb92a</span></a></p>", "contentMap": { "en": "<p>My "ars poetica": How to Change the World?! Pocket Guide for People With a Messiah Complex <a href=\"https://medium.com/geekculture/how-to-change-the-world-pocket-guide-for-people-with-a-messiah-complex-dd2d16bb92a\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><span class=\"invisible\">https://</span><span class=\"ellipsis\">medium.com/geekculture/how-to-</span><span class=\"invisible\">change-the-world-pocket-guide-for-people-with-a-messiah-complex-dd2d16bb92a</span></a></p>" }, "attachment": [], "tag": [], "replies": { "id": "https://me.dm/users/thebojda/statuses/109955178005562038/replies", "type": "Collection", "first": { "type": "CollectionPage", "next": "https://me.dm/users/thebojda/statuses/109955178005562038/replies?only_other_accounts=true&page=true", "partOf": "https://me.dm/users/thebojda/statuses/109955178005562038/replies", "items": [] } } } } ] }
इन उदाहरणों के आधार पर, एक न्यूनतम ग्राहक को लागू करना आसान है जो दूसरों की सार्वजनिक पोस्ट पढ़ सकता है या बाहरी दुनिया में सार्वजनिक पोस्ट प्रकाशित कर सकता है। मैं यहां व्यक्तिगत JSON फ़ाइलों की सटीक संरचना और इनबॉक्स की कार्यप्रणाली में नहीं जाऊंगा।
इन्हें एक्टिविटीपब दस्तावेज़ में पाया जा सकता है।
जैसा कि देखा जा सकता है, एक्टिविटीपब एक अपेक्षाकृत सरल मानक है जिसे समझना और लागू करना आसान है। इसकी एकमात्र कमजोरी यह है कि यह HTTP प्रोटोकॉल का उपयोग करता है, जिसके लिए एक केंद्रीय सर्वर की आवश्यकता होती है। इसने नोस्ट्र जैसे वैकल्पिक प्रोटोकॉल को जन्म दिया, जो जैक डोर्सी (ट्विटर के संस्थापक) की पसंदीदा परियोजना है।
हालाँकि, मेरा मानना है कि इसकी कोई आवश्यकता नहीं है, और यह केवल सामाजिक नेटवर्क के और विखंडन का कारण बनता है। इसके बजाय, एक्टिविटीपब प्रोटोकॉल को पहले से मौजूद विकेंद्रीकृत प्रोटोकॉल के समर्थन के साथ बढ़ाया जाना चाहिए, जो फेडाइवर्स को और भी अधिक खुली और विकेंद्रीकृत दिशा की ओर विकसित करने की अनुमति देगा। निम्नलिखित में, मैं प्रदर्शित करूँगा कि इसे कैसे प्राप्त किया जा सकता है।
वर्णनात्मक डेटा और फ़ीड को विकेंद्रीकृत करने का एक सही समाधान स्वार्म फ़ीड्स या आईपीएनएस का उपयोग करना है (मेरे पास इन प्रोटोकॉल के बारे में एक पूरा लेख है)। एथेरियम झुंड के मामले में, फ़ीड पहचानकर्ता एक झुंड पता है, जबकि आईपीएनएस के मामले में, यह एक सार्वजनिक कुंजी है।
इनका उपयोग करते हुए, एक एक्टिविटीपब उपयोगकर्ता इस तरह दिखेगा: {swarm एड्रेस}@swarm या {IPNS एड्रेस}@IPNS। उपयोगकर्ता विवरण के बारे में यहां से पूछताछ की जा सकती है।
बैकवर्ड संगतता के लिए, गेटवे सर्वर का भी उपयोग किया जा सकता है जैसे कि {swarm एड्रेस}@gateway.ethswarm.org, जो वेबफिंगर प्रोटोकॉल के माध्यम से स्वार्म पर संग्रहीत उपयोगकर्ता के विवरण को वापस कर देगा, जिससे मौजूदा सिस्टम (जैसे मास्टोडन) इस डेटा को बिना किसी के पढ़ने की अनुमति देगा। संशोधन.
आउटबॉक्स का कार्यान्वयन भी झुंड या आईपीएनएस फ़ीड के माध्यम से किया जाएगा। बैकवर्ड संगतता बनाए रखने के लिए, एक "विकेन्द्रीकृत_आउटबॉक्स" फ़ील्ड को पेश करने की आवश्यकता होगी, जहां एक स्वार्म फ़ीड (bzz: //...) या IPNS (ipns: //...) पता स्थित होगा।
बैकवर्ड अनुकूलता बनाए रखने के लिए, मूल "आउटबॉक्स" फ़ील्ड में एक अतिरिक्त गेटवे पता शामिल किया जा सकता है ताकि मौजूदा ग्राहक इन फ़ीड को बिना किसी बदलाव के पढ़ सकें।
इनबॉक्स का कार्यान्वयन कई तरीकों से किया जा सकता है। एथेरियम स्वार्म में PSS नामक एक मैसेजिंग सिस्टम है, लेकिन इसके अन्य विकल्प भी हैं, जैसे Waku । यहां, PSS या Waku पता एक "decentralized_inbox" फ़ील्ड में रखा जाएगा, जबकि मूल इनबॉक्स फ़ील्ड में एक गेटवे पता होगा।
इन कुछ छोटे एक्सटेंशनों के साथ, एक्टिविटीपब को पूरी तरह से विकेंद्रीकृत और "वेब3 संगत" बनाया जा सकता है, बिना नोस्ट्र जैसे नए प्रोटोकॉल पेश करने की आवश्यकता के।
नोस्ट्र के गिटहब रेपो के अनुसार, नए प्रोटोकॉल और रिले सिस्टम की आवश्यकता एक्टिविटीपब सर्वर द्वारा उपयोगकर्ताओं की संभावित सेंसरशिप और प्रोत्साहन प्रणाली की कमी के कारण है। हालाँकि, उपरोक्त एक्सटेंशन से यह समस्या पूरी तरह हल हो गई है।
आईपीएनएस और स्वार्म दोनों ही सेंसरशिप प्रतिरोधी हैं, साथ ही स्वार्म पूर्ण गुमनामी भी प्रदान करता है। इसके अतिरिक्त, स्वार्म की अपनी प्रोत्साहन प्रणाली है, जबकि फाइलकॉइन आईपीएनएस के लिए उपलब्ध है।
मेरा मानना है कि भविष्य स्पष्ट रूप से एक्टिविटीपब का है, और डेवलपर्स को नए प्रोटोकॉल बनाने के बजाय एक्टिविटीपब को आगे बढ़ाने और विकसित करने पर ध्यान केंद्रित करना चाहिए, ताकि अंततः एक व्यापक और सही मायने में एकीकृत फेडायवर्स स्थापित किया जा सके।