Tag Archives: Friendica

Utveckling av “fedsocweb” både stagnerar och frodas

Jag har som bekant ett projekt aktivt med stöd från Internetfonden. Målet är att förbättra den existerande mjukvaran StatusNet, en fri mjukvara för federerade sociala nätverk – eller “federated social web” (fedsocweb). Källkoden jag publicerar går självklart att läsa och projektets resultat går förstås även att använda.

Tillgängliga, liknande mjukvaror

Mycket har hänt sedan jag påbörjade projektet, i detta inlägg ska jag fokusera kring de alternativa mjukvaror som finns inom fedsocweb.

Min utgångspunkt har varit StatusNet, som i mina ögon har en väldigt stor kodbas (228k rader faktiskt kod) som helt enkelt inte är särskilt smidig att uppdatera och bygga vidare på. Det är tydligt att mycket kod hänger kvar “från förr” och orsakar en del kompatibilitetsproblem och huvudvärk när man försöker skapa ny funktionalitet – och inte minst när man försöker standardisera och effektivisera koden.

Sedan november förra året, då jag tog mina första stapplande steg i kodstrukturen för detta stora projekt så har jag försökt bidra med buggfixar och har fått en del av dessa beviljade. Många fler har inte antagits, mestadels eftersom StatusNets huvudutvecklare arbetar på ett annat projekt, Pump.io. Detta nya projekt bygger även det på s.k. “ActivityStreams” och ska implementera OStatus fullt ut, fast i en mindre tungrodd infrastruktur på serversidan. I ett försök att “göra om göra rätt” kanske, men jag har inte hakat på det just det spåret.

Denna stagnation i utvecklingskraft på sociala federerade nätverk är inte unikt för StatusNet. Diaspora* verkar ha fått slut på sitt kapital och riktar in sig på en mer tumblr-remix-aktig satsning än Diaspora-projektets ursprungliga “Facebookdödande” inriktning. Deras nya projekt är helt enkelt nischat för specifika typer av användare och Diaspora* lämnades över “till communityn” i ett mycket ofärdigt skick, om än behändigare kodstruktur än exempelvis StatusNet.

Dessa två plattformer, StatusNet och Diaspora*, har varit de största att dominera sfären av federerad social media. En hittills mer lågmäld spelare har varit Friendica som har varit mer av en satsning på att binda samman separata nätverk för privat bruk än att fungera som en federerad plattform i sig. Sedan StatusNets utveckling stagnerade strax efter sommaren 2011 verkar mycket intresse från bidragande utvecklare ha gått över till Friendica istället. Tyvärr har Friendica en ännu större kodbas än StatusNet (>500k rader kod, mer än dubbelt så stor).

Mycket kod gör projekt jobbiga att sätta sig in i, underhålla och utveckla. Vilket är tre oerhört viktiga egenskaper att bibehålla för projekt med fri mjukvara. Ju högre tröskel in i utvecklingen, desto färre kommer att hjälpa till. Fokus borde alltså ligga på att underhålla lätta, smidiga kodbaser som gör vad de ska på ett enkelt sätt. Mitt mål har därför varit att kapa och meka i StatusNet för att underlätta underhåll. Ett direkt resultat i början var det enkla måttet på antal rader kod men sedan dess även utbyggbarhet och standardisering.

Att mäta resultaten

Jag passade på att nyttja kod-och-projekt-analysatorn på Ohloh för Free & Social, vilket inkluderar all historik från StatusNet (som också finns där). Det syns tydligt när jag började skära som hårdast, i månadsskiftet juni-juli 2012, där 70,000 rader så gott som onödig kod togs bort. Sedan dess har utveckling skett för att separera utseende från funktion, vilket i det stora hela inte lagt till särskilt mycket kod alls. Strax är jag dessutom redo att radera väldigt mycket kod som för tillfället endast ligger kvar som “fallback” om min kod inte täcker upp ett visst användningsområde.

Målet är att kunna byta ut den kod som är skriven i PHP mot något helt valfritt, modul för modul. Det ska bli lättare att köra sin egen StatusNet-instans, eller vilken mjukvara man vill, för att kommunicera federerat med OStatus-protokollet (och även andra förstås).

Det jag inte gjort hittills är att paketera Free & Social-forken för enklare installation på slumpmässiga datorer. Detta kommer när man inte längre behöver paketera hela frontend-motorn med allt vad det innebär för människor som t.ex. vill ha en installation man endast interagerar med via API och tredjepartsklienter.

Projektet tar absolut mer tid än jag hade förväntat mig. Fast då resulterar det även i en mycket större förbättring än vad jag först hade tänkt mig.