k47.cz  — každý den dokud se vám to nezačne líbit
výběr foto Praha povídky kultura
TECH ▞▞ kolo | twitter RSS

Post-twitter

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

Jak nej­spíš víte, Twit­ter zve­řej­nil nové pod­mínky po­u­ží­vání API, které ještě o něco víc ome­zuje co můžeme s daty z Twit­teru dělat. Proč? Přece kvůli re­klamě. Twit­ter musí mít svůj eko­sys­tém pevně pod kon­t­ro­lou, aby mohl uži­va­te­lům dáv­ko­vat re­klamu. (Všichni po­dě­kujte ka­pi­ta­lismu, který ne­do­káže bu­do­vat in­frastruk­turu ze které přímo ne­ex­tra­huje hod­notu).

Jak z toho ven?


Ně­kteří vzali věci do vlast­ních rukou a za­lo­žili app.net – plá­no­va­nou pla­ce­nou so­ci­ální síť po­dob­nou Twit­teru, o níž pro­hla­šují, že nikdy nikdy nikdy nebude ob­sa­ho­vat re­klamu. Nej­spíš na­vzdory pra­vi­dlu: když za službu ne­pla­tíš, nejsi kli­en­tem, ale pro­dá­va­ným zbožím.

App.net, není lepší služba než Twit­ter, je jenom méně špatná. Je pořád (aspoň podle toho, co jsem po­cho­pil) o plně cen­t­ra­li­zo­va­nou službu, která ale nebude po­há­něná re­kla­mou, ale před­plat­ným. Pro­blém je v tom, že i když za službu platím, pořád můžu být pro­dá­va­ným zbožím – tyhle dvě věci se nutně ne­vy­lu­čují.

Další věc je, že když jde o pla­ce­nou službu, nikdy ne­získá nad­kri­tické množ­ství uži­va­telů (lidé ne­za­in­te­re­so­vaní v ide­o­lo­gii si řeknou, proč za to platit, když to samé má Twit­ter za­darmo).

Taky musíme mít v potaz, že služba, která je efek­tivní se ne­stane po­pu­lární (jak na to jde app.net), ale přesně naopak (viz. Dmytri Klei­ner). Nejdřív po­pu­la­rita a pak se ná­sled­nými ite­ra­cemi do­sáhne vysoké efek­ti­vity.

Abychom ne­na­hra­dili Twit­ter něčím, co bude ná­sle­do­vat stejný osud, ne­po­tře­bu­jeme službu, ale dis­tri­bu­o­va­nou in­frastruk­turu – něco jako email nebo usenet v po­čát­cích in­ter­netu. In­frastruk­turu proto, aby ji ne­pro­vo­zo­val jediný sub­jekt, který může měnit pra­vi­dla podle li­bosti, ale aby ji mohli pro­vo­zo­vat všichni a všichni účast­níci mohli spolu ko­mu­ni­ko­vat. Ale i když je dis­tri­bu­o­vaná, ne­vy­lu­čuje to exis­tenci vel­kých po­sky­to­va­telů, u kte­rých si člověk může jed­no­duše za­lo­žit profil. Stejně jak to fun­guje u emailu: můžu si zřídit mail u Googlu, Yahoo, Micro­softu nebo Se­znamu, nebo si můžu pro­vo­zo­vat vlastní mail-server a pořád si můžu ko­mu­ni­ko­vat s každým mailem na pla­netě. Dů­le­žité je, aby bylo za­lo­žení a pro­vo­zo­vání vlast­ního pro­filu na vlast­ním ser­veru zcela tri­vi­ální.

Takové jsou tedy po­ža­davky na ide­ální so­ci­ální síť. Teď jak ji im­ple­men­to­vat?

Taková síť už exis­tuje. Jme­nuje se RSS.

RSS (spe­ci­fi­kace) umí skoro všechno, co Twit­ter (jak už o tom psali jiní). Když tento formát lehce roz­ší­říme a po­u­ži­jeme RE­ST­ful ar­chi­tek­turu, do­sta­neme něco, co je velice jed­no­du­ché a po­u­ži­telné.

Nebude třeba ho roz­ši­řo­vat až tak moc, pro­tože ve stan­dardu je spe­ci­fi­ko­vána spousta uži­teč­ných vlast­ností:

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


Jak by to mohlo RE­S­Tově fun­go­vat:

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

Když člověk toto url načte v pro­hlí­žeči, ukáže se mu stránka s ně­ko­lika po­sled­ními sta­tusy. Když pošle hla­vičku „Accept: ap­pli­cation/rss+xml“ (con­tent ne­go­ti­ation) do­stane zpátky ně­ko­lik po­sled­ních sta­tusů v ele­men­tech <item>, nějaké údaje o mně (ve vlast­ním xml na­me­space) a odkazy na další REST zdroje svá­zané s daným uži­va­te­lem: seznam sle­do­va­ných lidí (všechno jako rss feed), se­znamy, ob­lí­bené sta­tusy, stránky s dal­šími sta­tusy jako odkazy <link rel="favorites">url</link>. Tady je po­třeba de­fi­no­vat všechny druhy zdrojů.

Jenom adresa pro­filu bude ab­so­lutní, všechny ostatní se mohou měnit a klient si je musí dy­na­micky zjis­tit.

Ke všem REST zdro­jům můžeme kla­sicky při­stu­po­vat pomocí HTTP metod: GET načte data, POST vy­tvoří novou po­ložku, ale musí být au­ten­ti­ko­vaný atd. Když budeme mít de­fi­no­vaná druhy zdrojů, do­sta­neme jasně de­fi­no­vané roz­hraní se kterým můžou uni­ver­zálně pra­co­vat všichni kli­enti.

Kdyby uži­va­tel chtěl za­ru­čit au­tor­ství svých sta­tusů, mohl by použít asy­me­t­ric­kou kryp­to­gra­fii pro pod­pi­so­vání a ově­řo­vání svých sta­tusů To by bylo nutné i pro ke­šo­vání sta­tusů. Kdyby podpis kaž­dého sta­tusu po­de­pi­so­val nejen obsah sta­tusu, ale i podpis před­chozí zprávy daného autora, vznik by tak řetěz sou­vislý zpráv, u kte­rého víme, že byl vy­tvo­řen daným au­to­rem. Potom se můžu ko­ho­koli zeptat jestli nemá zprávy daného autora no­vější než nějaké datum a když sedí pod­pisy, vím, že zprávy nikdo ne­pod­vrhl, žádná mi ne­u­tekla a ne­zá­leží od koho jsem od­po­věď dostal.

Stejně tak by bylo možné vy­ře­šit sou­kromé zprávy: Ad­re­sát ve svém pro­filu pu­b­li­kuje ve­řejný klíč, ode­sí­la­tel vy­tvoří zprávu, tu za­kó­duje ve­řej­ným klíčem pří­jemce a může ji ve­řejně pu­b­li­ko­vat do vlast­ního proudu sta­tusů, pro­tože si ji může pře­číst jenom ten, kdo má od­po­ví­da­jící sou­kromý klíč. (Dvě otázky: 1) aby si dva uži­va­telé mohli takto psát, musejí se sle­do­vat nebo musíme mít push a 2) jak do toho za­kom­po­no­vat per­fect for­ward secrecy

Co nebude jed­no­du­ché

Vy­hle­dá­vání: Klient si může uklá­dat lo­kální his­to­rii všech sta­tusů, které kdy načetl a tu může pro­hle­dá­vat, ale glo­bální hle­dání musí být zpro­střed­ko­váno ně­ja­kou ex­terní služ­bou, která bude mít index vel­kého množ­ství zpráv. Leda, že by bylo vy­hle­dá­vání za­lo­ženo na P2P prin­cipu.

hard re­al­time: Aby se kli­enti do­zvě­děli sta­tusy všech sle­do­va­ných oka­mžitě, musel by být k dis­po­zici pull.

Agre­gace kon­ver­zací: Bude ob­tížné zjis­tit na­pří­klad, kdo všechno od­po­vídá na daný status. Abych to zjis­til, musím po­zo­ro­vat velkou část sítě, mít push nebo nějaký model pro­pa­gace zpráv celou sítí.

Jak začít?

Nej­jed­no­dušší by nej­spíš bylo se svézt s Twit­te­rem, vy­tvo­řit kli­enta, který by po­sto­val na obě sítě, nebo by posty na jednu au­to­ma­ticky zr­cadlil i na druhou síť. Ale na druhou stranu by to mohlo uško­dit, pro­tože vět­šina lidí je na Twit­teru, takže by vět­šina kon­ver­zací pro­bí­hala tam a RSS síť by vní­mali jako celkem nad­by­tečný pří­vě­šek.

Na druhou stranu se i twit­te­rov­ské ti­me­line se dá ex­por­to­vat jako RSS.


K tématu: You Can’t Start the Re­vo­lu­tion from the Coun­try Club

píše k47 & hosté, ascii@k47.cz