k47.cz
mastodon twitter RSS
bandcamp explorer

Post-twitter

17. 8. 2012 (před 10 lety) — k47 (CC by)

Jak nejspíš víte, Twitter zveřejnil nové podmínky používání API, které ještě o něco víc omezuje co můžeme s daty z Twitteru dělat. Proč? Přece kvůli reklamě. Twitter musí mít svůj ekosystém pevně pod kontrolou, aby mohl uživatelům dávkovat reklamu. (Všichni poděkujte kapitalismu, který nedokáže budovat infrastrukturu ze které přímo neextrahuje hodnotu).

Jak z toho ven?


Někteří vzali věci do vlastních rukou a založili app.net – plánovanou placenou sociální síť podobnou Twitteru, o níž prohlašují, že nikdy nikdy nikdy nebude obsahovat reklamu. Nejspíš navzdory pravidlu: když za službu neplatíš, nejsi klientem, ale prodávaným zbožím.

App.net, není lepší služba než Twitter, je jenom méně špatná. Je pořád (aspoň podle toho, co jsem pochopil) o plně centralizovanou službu, která ale nebude poháněná reklamou, ale předplatným. Problém je v tom, že i když za službu platím, pořád můžu být prodávaným zbožím – tyhle dvě věci se nutně nevylučují.

Další věc je, že když jde o placenou službu, nikdy nezíská nadkritické množství uživatelů (lidé nezainteresovaní v ideologii si řeknou, proč za to platit, když to samé má Twitter zadarmo).

Taky musíme mít v potaz, že služba, která je efektivní se nestane populární (jak na to jde app.net), ale přesně naopak (viz. Dmytri Kleiner). Nejdřív popularita a pak se následnými iteracemi dosáhne vysoké efektivity.

Abychom nenahradili Twitter něčím, co bude následovat stejný osud, nepotřebujeme službu, ale distribuovanou infrastrukturu – něco jako email nebo usenet v počátcích internetu. Infrastrukturu proto, aby ji neprovozoval jediný subjekt, který může měnit pravidla podle libosti, ale aby ji mohli provozovat všichni a všichni účastníci mohli spolu komunikovat. Ale i když je distribuovaná, nevylučuje to existenci velkých poskytovatelů, u kterých si člověk může jednoduše založit profil. Stejně jak to funguje u emailu: můžu si zřídit mail u Googlu, Yahoo, Microsoftu nebo Seznamu, nebo si můžu provozovat vlastní mail-server a pořád si můžu komunikovat s každým mailem na planetě. Důležité je, aby bylo založení a provozování vlastního profilu na vlastním serveru zcela triviální.

Takové jsou tedy požadavky na ideální sociální síť. Teď jak ji implementovat?

Taková síť už existuje. Jmenuje se RSS.

RSS (specifikace) umí skoro všechno, co Twitter (jak už o tom psali jiní). Když tento formát lehce rozšíříme a použijeme RESTful architekturu, dostaneme něco, co je velice jednoduché a použitelné.

Nebude třeba ho rozšiřovat až tak moc, protože ve standardu je specifikována spousta užitečných vlastností:

Většinu z nich můžeme použít pro účely statusů.


Jak by to mohlo RESTově fungovat:

Řekněme, že mám svůj profil na adrese k47.cz/profile.

Když člověk toto url načte v prohlížeči, ukáže se mu stránka s několika posledními statusy. Když pošle hlavičku „Accept: application/rss+xml“ (content negotiation) dostane zpátky několik posledních statusů v elementech <item>, nějaké údaje o mně (ve vlastním xml namespace) a odkazy na další REST zdroje svázané s daným uživatelem: seznam sledovaných lidí (všechno jako rss feed), seznamy, oblíbené statusy, stránky s dalšími statusy jako odkazy <link rel="favorites">url</link>. Tady je potřeba definovat všechny druhy zdrojů.

Jenom adresa profilu bude absolutní, všechny ostatní se mohou měnit a klient si je musí dynamicky zjistit.

Ke všem REST zdrojům můžeme klasicky přistupovat pomocí HTTP metod: GET načte data, POST vytvoří novou položku, ale musí být autentikovaný atd. Když budeme mít definovaná druhy zdrojů, dostaneme jasně definované rozhraní se kterým můžou univerzálně pracovat všichni klienti.

Kdyby uživatel chtěl zaručit autorství svých statusů, mohl by použít asymetrickou kryptografii pro podpisování a ověřování svých statusů To by bylo nutné i pro kešování statusů. Kdyby podpis každého statusu podepisoval nejen obsah statusu, ale i podpis předchozí zprávy daného autora, vznik by tak řetěz souvislý zpráv, u kterého víme, že byl vytvořen daným autorem. Potom se můžu kohokoli zeptat jestli nemá zprávy daného autora novější než nějaké datum a když sedí podpisy, vím, že zprávy nikdo nepodvrhl, žádná mi neutekla a nezáleží od koho jsem odpověď dostal.

Stejně tak by bylo možné vyřešit soukromé zprávy: Adresát ve svém profilu publikuje veřejný klíč, odesílatel vytvoří zprávu, tu zakóduje veřejným klíčem příjemce a může ji veřejně publikovat do vlastního proudu statusů, protože si ji může přečíst jenom ten, kdo má odpovídající soukromý klíč. (Dvě otázky: 1) aby si dva uživatelé mohli takto psát, musejí se sledovat nebo musíme mít push a 2) jak do toho zakomponovat perfect forward secrecy

Co nebude jednoduché

Vyhledávání: Klient si může ukládat lokální historii všech statusů, které kdy načetl a tu může prohledávat, ale globální hledání musí být zprostředkováno nějakou externí službou, která bude mít index velkého množství zpráv. Leda, že by bylo vyhledávání založeno na P2P principu.

hard realtime: Aby se klienti dozvěděli statusy všech sledovaných okamžitě, musel by být k dispozici pull.

Agregace konverzací: Bude obtížné zjistit například, kdo všechno odpovídá na daný status. Abych to zjistil, musím pozorovat velkou část sítě, mít push nebo nějaký model propagace zpráv celou sítí.

Jak začít?

Nejjednodušší by nejspíš bylo se svézt s Twitterem, vytvořit klienta, který by postoval na obě sítě, nebo by posty na jednu automaticky zrcadlil i na druhou síť. Ale na druhou stranu by to mohlo uškodit, protože většina lidí je na Twitteru, takže by většina konverzací probíhala tam a RSS síť by vnímali jako celkem nadbytečný přívěšek.

Na druhou stranu se i twitterovské timeline se dá exportovat jako RSS.


K tématu: You Can’t Start the Revolution from the Country Club

píše k47, ascii@k47.cz