Tag Archives: API

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.

WordPress requires themes to be GPL

Andrew Warner at Mixergy has published a discussion [MP3, transcript] between Chris Pearson (founder of Thesis, a very advanced WordPress theme) and Matt Mullenweg (who I’d call Mr. WordPress). This is a perfect example of what the debate between the copyright industry vs. iPirates (intellectual property pirates) is like. A very interesting software license and copyright debate, if you ask me.

Matt responds well to a long rant (blah blah, can’t make money if it’s freely licensed) by Chris. Start listening at 16:30 if you wish to hear the end of the rant and the response. The bottom line is that Chris Pearson sees Thesis – which requires WordPress – as entirely his own property which no one can use. He’s just out to state that “he’s not a follower” and says that Matt is trying “to dictate” usage through the GPL.

Chris Pearson refers at 8:30 to “Mike Wasylik” (he says Brian), an attorney who has written “Why the GPL doesn’t apply to premium WordPress themes“. However not related to the same kind of dilemma WordPress vs. Thesis is about. Mike Wasylik’s examples are related to the Game Genie’s modification of running binaries of Nintendo games – which does not apply at all to the source code license which the GPL is.

Also, Chris mentions that WordPress “is only a backend” and that “WordPress [on its own] only serves a blank page”. What he forgets is that WordPress also serves an API over XML-RPC etc….

But, to the point of license debating. Mark Jaquith posts the most convincing argument in this debate:

It isn’t correct to think of WordPress and a theme as separate entities. As far as the code is concerned, they form one functional unit. The theme code doesn’t sit “on top of” WordPress. It is within it, in multiple different places, with multiple interdependencies.

Basically: Thesis (or any WP theme), when used, becomes a part of that running copy of WordPress. At source code and PHP interpretation level. Thus, at that specific point, the GPL must be followed. To clear things up, Mark Jaquith also mentions the API system:

WordPress has many external APIs that spit out data. Interacting with these APIs does not put your code on the same level as core WordPress code.

(Oh, and Thesis have actually copied large pieces of code from WordPress.)

Update: Thesis now has a split license PHP code is GPLv2, everything else (CSS, images, added JS etc.) . Probably because of the bad press. Unfortunately this means that Chris Pearson probably didn’t learn anything in the process except perhaps humility. It’d be cool though if the license for CSS and images were Free too. At least it’d mend the community’s wounds a bit.

“Social media” does not mean “Facebook and Twitter”

There’s a constricted idea of what the internet is capable of. Social media is immediatly attributed to Facebook and Twitter because they’re the biggest players on the field. In Sweden, Spotify is getting great press even though Jamendo is the superior choice for music distribution. The internet is not trade or services – it’s communication.

Someone suggests teaching Facebook to schools to make them understand social media. But if we attribute it the label “social media”, do we not suggest much more than a lucky US-based company which merely offers a centralised, restrictive, surveilled and censored service? This post is not aimed at that specific article however. It’s much more general than that.

What we see today are only a proof of concept for a baseline of possibilites available by way of the internet. The current “globally used” (what about Brazil and China?) services are all centralised and restrictive. We are bound to see future development in even more awesome social networking technologies available to common internet users – similar to Google Wave. Today we have user-created services with user-generated content and the key of the future is decentralization. This implies even more social interaction, resulting in greater user-based filtering.

Personally, I’m seeing the world from a technical point of view. Unfortunately, for the end-user, the development process is often irrelevant. Free software is thought of as “free as in beer”, not free as in speech. Culture is copied and fileshared without regards to copyright laws, and thus Free culture is also viewed just as if it wasn’t priced. The steps to a common understanding of librethe right to use, modify and share – seem long and far away. Nevertheless they’re prerequisites for future development in online social networking.

Then how do we change this nihilistic, disrespective view on social media’s true nature? One might start with presenting Twitter’s main open source competitor identi.ca, using Creative Commons Attribution licensing. Also there’s the open source WordPress, which I use, that is superior in all aspects to any proprietary platform such as Google’s Blogger or Sweden’s popular “blogg.se”. Another service is the unfortunately closed source Flickr, but at least CC-licensing is a given choice there.

If the general public starts recognising what separates these services from the proprietary and restrictive ones, we are not far from a social media revolution. One might not immediatly think about it, but copyright issues today enforce a noticable restriction on social media development. Sites like YouTube are more successful than progressive open source alternatives simply because they have a legal department financed by Google. Free licenses, however, effectively reduce the amount of bureacracy needed to come up with new ideas.

A lighter copyright regulation would immediatly spawn several new internet top sites. To catch a glimpse of the future-to-be, compare the all-praised Spotify with its direct libre counterpart, Jamendo. The latter allows you to listen without registration, payment or advertisement. Jamendo also allows you to choose your music player of choice, embed it on other web services, download entire albums for offline-access. Heck, Jamendo even lets you support the artists and easily share your own works! From what I hear, Spotify can’t do any of those things.

The future is decentralization. With my above conclusions, users can soon also take part in the distribution, not just generation, of content. It’ll be harder to make mad profit, so there’ll be resistance – but this also introduces significantly lower costs. Given that the internet isn’t crippled along the way, we’ll be getting there site by site, API by API. Open standards, one by one. Shortly followed (or introduced?) by Free – libre – software implementations. Paving the path for true social networking.

Update 2009-12-31 14.23: I forgot to mention the most important part about Jamendo – they allow you to upload your own, independent work to benefit from the entire Creative Commons community.

Cory Doctorow, I found through the EFF, mentions that anyone against DRM-free e-books by consequence wishes to abolish the printed book, since printed books have an ancient history of being shared regardless of copyright. That’s exactly why social media can’t be social as long as we’ve got specific laws which are different from afk social behaviour.