Tag Archives: Avatar

GNU Social now supports WebFinger (RFC7033)

So, (slightly more than) another week has passed and GNU Social has received a couple of stability and feature updates. Nothing very visible for the end-user, but administrators may appreciate it. Going chronologically through the shortlog:

First I did some minor fixes, mostly language and specifications to make more clear that we’re working in the GNU Social software. This includes removing some StatusNet names here and there, specifying our system requirements (PHP5.3) and preferring a local url shortener to a remotely hosted one (privacy issue). The “8 chars was too little” apprehends queue handlers which in the future may use longer frame-identifiers (more declarative names).

b62ac25 PHP 5.3 dependency declared in INSTALL file
f009499 minor fixes and cleanups in the scripts directory
4c6803a GNUSOCIAL is the new defined indicator
c906ab1 8 chars was too little, 32 should be enough.
c3001ff url shortening fixes for api config and not ur1.ca
792e1ae StatusNet_HTTPResponse now prefixed with GNUSocial_
a35344e instanceof instead of is_a is faster (thanks quix0r)

One goal I have with code updates are making better use of OOP, object oriented programming. It results in prettier code, which is easier to read and harder to get wrong (what with proper typing and all that). One part in this was clearing up a remnant of old times, the ‘subs.php’, and implement the same functions in the Subscription class.

There were small problems during the execution of this patch, but it was fixed in the following commits. Among these fixes were the introduction of Managed_DataObject::listFind, which instead of an array returns the actual multiple matches in an extended DB_DataObject class.

93e878d Make better use of Subscription class
39f21d6 New Managed_DataObject retrieval: listFind
6330608 Subscription "get by" functions now don't use ArrayWrappers

Proper exception handling is also a neat thing. So I introduced the ‘MethodNotFoundException’ which is thrown whenever a class hasnot implemented a function. Usually that’s handled through abstract classes and class interfaces, but abstract declarations are apparently not allowed for static functions. So instead they throw the mentioned exception. Then there was also some regression and neatness fixing to do, where the regression was related to javascript functionality.

50e611a Shouldn't define static classes as abstract.
f711f9e Fixed regression in bookmark.js that caused double-submits (jquery 2.x stuff)
5f1fea1 FavorAction upgraded to extend FormAction
e9f2a18 Wrong call signature used for Event::handle
4ca1c10 IMPORTANT: 'GNUSOCIAL' defined, or daemons wouldn't work
8205c56 Stylesheet event now removed of StatusNet-remnants
9d3abc3 $_PEAR now defined globally as new PEAR, so no static calls are made
4015a58 Sometimes there's no text content, so pad the array (thanks mrvdb)

We now support PHP5.5, at least after the following series of patches. 5.5 makes sure that PHP is not a _pure_ steaming pile of dung anymore. So I had to clear up some old programming mistakes that didn’t convert types and shut down data streams properly.

In the middle of all of this, I took the chance to update some PHP libraries too because stuff like OpenID wasn’t PHP 5.5 compatible.

1744fec Array to string conversion in queuemanager logger
1c6f9df PHP5.5 fix: Better use of startXML for Action classes (mostly AJAX)
f268c3f Completing extra-element-without-text patch from 4015a58d1cfaa257fcf2b01aa6b1c9daa268c997
f01c478 htmLawed extlib updated
49b7559 Updating Janrain OpenID auth library
f7719b5 phpseclib extlib updated from phpseclib.sf.net
64df40e Filling in missing endHTML calls for Action AJAX
3ffe0e4 Added queue daemon notice about disabled forking functions
e9cc87f Updated some of the INSTALL documentation

A problem regarding URL shortening I noticed – if allowed notice length is infinite, then we ALWAYS shorten links (because two config settings were compared, where ‘0’ meant entirely different things).

858d9cc maxNoticeLength test for url-shortening failed on maxContent==0

Some minor problems I managed to introduce earlier were fixed here. Also, I applied several patches by Joshua Judson Rosen (rozzin). Thank you for these (one year old) patches!

80c6af0 Uncaught exception when no subscribers/subscriptions in ProfileList
633191d Making sure scripts and tests check for GNUSOCIAL defined (instead of STATUSNET)
981295f Autocomplete action must exist on user registration
562d5bc Remove bad common_path() call in context of cssLink().
8e5d58f Make paging work correctly in the user-directory even with the default filter set (i.e.: `all' = `no filter', so intrepret `filter=all' as `no filter').
9844ec7 Make the ForceGroup plugin work consistently for notices from remote users.
9085880 Allow the hostmeta to indirect from one domain to another. e.g.: rozzin@hackerposse.com => rozzin@status.hackerposse.com.
8e53eb2 Correct a logic-inverting typo in handling of replies to group-posts. The typo causes a tautology, which makes replies to group-posts always (or almost-always) go to the group(s). cf. http://status.net/open-source/issues/3638
44f7ad6 Correctly distribute notices from remote posters through local groups to remote group-members via OStatus. Allow the OStatus queue-handler to handle all posts, and give it the smarts required to make correct decisions about whether it should or shouldn't relay notices over OStatus. cf. http://status.net/open-source/issues/3540

…and now to the big implementation of the week – WebFinger. GNU Social now properly supports, I believe, RFC7033. Plus of course the former RFC6415 (Web Host Metadata), which StatusNet supports (but only XRD format). GNU Social supports both with both JSON and XML resource descriptors (JRD and XRD). It was followed-up by some regression fixes which were caught rather quickly thanks to debugging with postblue who tracks the master branch.

What WebFinger does is simplify and standardise metadata retrieval for users, websites, devices etc. using unique URIs – such as acct:mmn@social.umeahackerspace.se or https://social.umeahackerspace.se/mmn. What we don’t do is make use of the ‘rel’ parameters. Yet.

This also removed the previously available StatusNet hack ‘xrd.php’, replacing it with the PEAR XML_XRD library. We could probably also use Net_WebFinger for lookups, but so far no one has contributed RFC7033-compatible changes to it. It means more lines of code, but less maintenance. Code reuse is awesome.

As a bonus, or rather instead of implementing Quitter’s API changes, I pushed some Avatar class fixes. These simplify a lot of the code, as can be seen in commit b0dfc70 which replaces multiple get-avatar-check-if-it-is-there-and-get-the-url-otherwise-get-the-default-avatar-url (+ I could get rid of Twitter-specific hacks that returned 73×73 sized avatars when they sometimes should’ve been 96×96 pixels).

a0e107f Implemented WebFinger and replaced our XRD with PEAR XML_XRD
a23c4aa Avatar resizing improvements and better code reuse
24e0535 Fix regression from WebFinger update for singleuser sites
cced063 Fixed regression in latest Avatar fixes
a7e7484 Fixed regression in OStatus sub from WebFinger/XML_XRD update
b0dfc70 Properly unlink all old avatars when deleting/uploading a new

Then I made some minor fixes to avoid filling up the avatar directory over time, and spamming the PHP error log with unnecessary notices.

1d46ca4 PHP Notice:  Undefined variable: logo
3e15bab PHP Notice:  Trying to get property of non-object

And lastly, I just now fixed a problem with a new behaviour in lib/plugin.php where all the Plugin extended classes (i.e. all plugins) automatically load files from their directory if they match desired class names. During WebFinger updates I introduced (for the LRDD methods) a snippet of code that replaces ‘_’ with ‘/’ so we can have a better directory structure for plugins which act like the LRDD plugin.

ba5e901 Plugin onAutoload replaces _ with / in lib paths, this renames some classes.

Thanks for reading. Now go federate!

Socialt internet, objektivitet och mättat afk-liv

Jag är glad för mitt nya fynd i den lokala kultur- och krönikavärlden, Sara Meidell. Nedanstående text skrev jag nästan färdigt innan VDn för Earbooks uttalade sig på Netopia och gav lite mer vikt till ämnet asocial/social.

Fan vad jag blivit pretentiös märker jag, men björna med mig om ni orkar…

Till att börja med existerar internet som en allinbjudande tillflyktsort. Det är ett bra ställe att finna gemenskap, likasinnade, information, privatliv och världsflykt. Hela spektrat från asocial till social tillåts – uppmuntras – existera sida vid sida med endast ens egen valfrihet och nyfikenhet som spärr. “Man kan ju alltid blocka”. Även om det finns de som avskyr denna flexibilitet och jämlika potential för utveckling.

Ursprungligen tillhörde internets domäner den tekniska eliten. De som inte använde kopparkablarna för forskning på universitet använde dem för att kommunicera världen över. Det sociala var en stor drivkraft för, men kanske än mer övervägande var nyfikenheten i stort – vare sig det var människa eller maskin man kommunicerade med. Som resultat av det begränsade mediat – text – utvecklades här språket hos användarna till en mer informationscentrerad dialekt.

Informationscentrerad dialekt. Sociala situationer. Dialog.
Det är här Sara Meidells blogginlägg blir intressant.

Vad man vill förmedla i den anstormande informationscentrismen, är kärnan, inte känslan. Att använda sig av ords överenskomna betydelse är en direkt nödvändighet i digitala sammanhang. Ljud och bild kan underlätta mänsklig interaktivitet där man antyder eller menar något mer än orden, även om f2f-dialog har sina brister. Men att skriva underliggande betydelser? Lycka till i en IRC-stiliserad miljö! (tänk Twitter, fast rörigare)

Klart är att våra sociala livs kliv ut på internet flyttat gränserna för hur nära inpå skinnet vi kan ta oss varandra, hudnära inpå människor vi knappt visste eller mindes fanns.

Sara Meidell, kulturredaktör på Västerbottens-Kuriren

Sara Meidell skriver om hur våra sociala liv tar sig ut på nätet. Ungdomarna var först ut efter teknikeliten, när väl internet kom till hemmen. Nyfikenhet och utforskande – av såväl det sociala såsom fakta – var den största drivkraften. Till detta har internet även gett möjligheten att vara anonym. Att pröva på att vara någon annan, i sin omedvetna strävan efter en identitet, går fort och är kul. Vips har man växt som person snabbare än någon tidigare generation. Men det finns förstås begränsningar.

Den korta, hastiga kommunikationen. Det är vad som är i språng. Jämför det med “lunariseringen” (felstavningar, påhittade förkortningar etc.) av det svenska språket. Mycket av den annars naturligt tillkomna sociala kompetens växande individer upplever får inte riktigt fäste.

Spegelneuroner är min favorithjärncell och jag återkopplar gärna och ofta till dem. För betänk detta: när tränar vi idag vårt nervsystem för de sociala interaktioner som evolutionen slutligen gett oss? Alltmer sällan, i och med vårt självförvållade alltmer digitala sällskap. En teori jag gärna lyfter rätt snabbt är den upplevt ökande mängden t.ex. av Asperger-överensstämmande symtom. Trollhare har skrivit om liknande medan Meidell ytterligare stärker min teori:

Men – börjar inte allt fler tecken visa sig på att vi, samtidigt som vi på nätet bjuder på mer av oss själva än vad vi i själva verket finner bekvämt, i det vanliga livet blivit mera snåla med oss själva, lynnigt snarstuckna och mera blint försvarandes vår integritet?

Mera gruff och knuff i köer, ilsknare markerande av sittplatser på bussen, på krogen, ökat motstånd mot att släppa ifrån oss personlig information i även de odramatiska fallen (se bara på BB-annonserna, där rituella vikt och längduppgifter på den nyfödde ofta nu ersätts med ett ”lagom stor”).

Sara Meidell, kulturredaktör på Västerbottens-Kuriren

Handlar detta om en ovana att hantera fysiska situationer? Där det inte längre “bara är att blocka”. Objektiviteten, kunskap och kommunikation hamnar i fokus, med den begränsade kommunikativa förmåga som 160 tecken i ett SMS har gett oss. Mänskligheten tappar social kompetens, bland annat på grund av skevheten mellan fackspråk och skönlitteratur. Om man nu alls kan betrakta realtidskommunikation för fackspråk.

Personlighetsklyvning, självdistans eller mångfaldighet?

Historiskt har kulturella skillnader på internet knappt existerat. Varken kön eller etnicitet spelar någon roll för internetianer i det stora hela. Världsuppfattningen blir mer objektiv – vilket låter en osäker individs virtuella super-ego att närma sig dennes id. Ens utåtriktade ego delar/kopierar sig filtrerat genom känslomässiga barriärer – ofta omedvetet – som resultat av att flertalet alteregon (avatarer) samexisterar. Tidigare har dessa superkrafter endast förbehållits skådespelare samt psykiskt sjuka.

Informationssamhället gör mänskligheten mer öppensint. För närvarande befinner vi oss i ett paradigmskifte – en värld där den inneboende mänskliga blygheten (skamsenheten) ännu är begränsande. Vilket “jag” måste representeras utanför den digitala kommunikationen? Vem är jag afk? Man är försiktig, tippandes på tå eftersom ens virtuella karaktärer tar tiden för personlig, “reell” utveckling. Trots att ens virtuella ego kommer att dö långt före den bakomliggande köttstrukturen.

Samma argumentation gäller även icke-digitala virtualiseringar.
“Klassens clown”, mobbade barn och vuxna med yrkesroller, ta till er!

Min personliga övertygelse är dock att det framöver inte kommer att upplevas som något problem. Jag är själv tacksam för avpersonifierad – konkret och tydlig – kommunikation. Det är direkt gynnande av öppenhet och tydlighet, i och med att alla spelar på villkor. Utöver detta krävs detta i vilket fall lika mycket av globalisering/internationalisering som av det informationscentriska textspråket.

Kalla det anonymisering, likformande eller själadödande om du vill.
Alla orden passar nog in på var sin del. Ibland överlappande något annat.

Många ser en närapå global politisk/beteendemässig strävan mot individualisering. Sannolikt en följd av informationscentrismen. För den som betraktar virtualisering som själadödande och vill bevara “det riktiga” (tänk LP vs. CD) är detta katastrofalt. Jag förstår kritiken och anser den vara nyttig, om än jag inte sympatiserar fullt ut. Dessa möjligheter vi anammat att anta andra roller kan användas för att utöka, inte ersätta människan och samhällets utveckling, kreativitet och skapandelust.

Det vore ju som tråkigt ifall ens livsverk försvann när hårddisken kraschar. Böcker, statyer, klädesplagg och målningar går inte spontant sönder lika ofta som ett digitalt lagringsmedia. Och nej, redundans och backup är inte samma sak, för om 1000 år, efter samhällets förfall och återuppbyggnad, kan vi inte förutsätta att någon kan läsa ext4-filsystem.

PS. Jag har inte sett filmen, men folk säger “åh, det där är så jävla likt Avatar” om slutsatsen i detta inlägg. Det gör mig ungefär lika grinig som när man behöver försvara att t.ex. Descartes faktiskt levde före Wachowski-bröderna. Suck my balls.