jeroenclerix-drupal-en-social-networking-sites

81
1 / 81 I N H O U D S T A F E L I N H O U D S T A F E L ....................................................................... 1 V O O R W O O R D............................................................................. 3 O N D E R Z O E K............................................................................... 5 Onderzoeksvraag............................................................................ 5 Doelgroep ...................................................................................... 5 Partners .......................................................................................... 5 D E N K K A D E R S ............................................................................ 7 D R U P A L ...................................................................................... 12 Wat is Drupal? ............................................................................... 12 Kenmerken ................................................................................... 13 Geschiedenis ................................................................................ 15 Community................................................................................... 17 Features in detail .......................................................................... 19 Algemeen .................................................................................. 19 Gebruikers management ............................................................ 20 Management van inhoud............................................................ 20 Bloggen ..................................................................................... 22 Platform .................................................................................... 22 Administratie en analyse ............................................................ 23 Community tools ....................................................................... 23 Performance en schaalbaarheid.................................................. 23 Types van websites ....................................................................... 24 Toekomst ..................................................................................... 25 Modules ontwikkelen voor Drupal ................................................. 28 I N T E R N E T A N N O 2 0 0 8....................................................... 37 Online identiteit ............................................................................ 37 Web 2.0 en Open Source ............................................................... 38 Open Source vs Closed Source ...................................................... 39 T R E N D : O P E N S O C I A L Ontstaan....................................................................................... 46 API documentatie.......................................................................... 47 JavaScript API ............................................................................. 47 RESTful API ................................................................................ 48 OpenSocial API Ontwikkelaars Gids ............................................... 50 OpenSocial API specificatie............................................................ 50 OpenSocial API referentie .............................................................. 51 Voorbeeld ..................................................................................... 53 C O N C L U S I E S............................................................................ 54 Vooronderzoek ............................................................................. 54 Technisch onderzoek huidge modules .......................................... 54 Trends onderzoek......................................................................... 54 Drupal en OpenSocial.................................................................... 55 P R O J E C T..................................................................................... 56 Kern ............................................................................................. 57 Doelstellingen .............................................................................. 57

Transcript of jeroenclerix-drupal-en-social-networking-sites

Page 1: jeroenclerix-drupal-en-social-networking-sites

1 / 81

I N H O U D S T A F E L I N H O U D S T A F E L .......................................................................1 V O O R W O O R D.............................................................................3 O N D E R Z O E K...............................................................................5

Onderzoeksvraag............................................................................5 Doelgroep ......................................................................................5 Partners..........................................................................................5

D E N K K A D E R S ............................................................................7 D R U P A L ......................................................................................12

Wat is Drupal?...............................................................................12 Kenmerken ...................................................................................13 Geschiedenis ................................................................................15 Community...................................................................................17 Features in detail ..........................................................................19

Algemeen ..................................................................................19 Gebruikers management............................................................20 Management van inhoud............................................................20 Bloggen.....................................................................................22 Platform ....................................................................................22 Administratie en analyse............................................................23 Community tools .......................................................................23 Performance en schaalbaarheid..................................................23

Types van websites .......................................................................24 Toekomst .....................................................................................25 Modules ontwikkelen voor Drupal .................................................28

I N T E R N E T A N N O 2 0 0 8.......................................................37 Online identiteit............................................................................37 Web 2.0 en Open Source...............................................................38 Open Source vs Closed Source ......................................................39

T R E N D : O P E N S O C I A L Ontstaan.......................................................................................46

API documentatie..........................................................................47 JavaScript API.............................................................................47 RESTful API ................................................................................48

OpenSocial API Ontwikkelaars Gids ...............................................50 OpenSocial API specificatie............................................................50 OpenSocial API referentie ..............................................................51 Voorbeeld.....................................................................................53

C O N C L U S I E S............................................................................54 Vooronderzoek.............................................................................54 Technisch onderzoek huidge modules ..........................................54 Trends onderzoek.........................................................................54 Drupal en OpenSocial....................................................................55

P R O J E C T.....................................................................................56 Kern .............................................................................................57 Doelstellingen ..............................................................................57

Page 2: jeroenclerix-drupal-en-social-networking-sites

2 / 81

Publieke opinie .............................................................................57 Interesse vanuit Drupal .................................................................59 Project op drupal.org ....................................................................59 DUG Brussel..................................................................................60 Partners........................................................................................61 Technische omschrijving...............................................................62 Module: bestanden .......................................................................63

Drupal module...........................................................................63 Mock social networking site .......................................................63

Use cases .....................................................................................64 Demonstratie................................................................................68

B R O N N E N...................................................................................68 Boeken .........................................................................................69 Gidsen..........................................................................................70 Websites.......................................................................................70

Begrippen..................................................................................70 Drupal Modules .........................................................................72 Drupal: ontwikkelen voor Drupal................................................73 Standaarden ..............................................................................75 Software ....................................................................................75 Social networking sites ..............................................................75 OpenSocial ................................................................................76 CMS vergelijking........................................................................77

Referentie conversaties .................................................................78 Drupal nodes en posts...............................................................78 Drupal: interessante bloggers ....................................................78 Technologie...............................................................................79 OpenSource...............................................................................79 Andere ......................................................................................80

B I J L A G E N...................................................................................81

Page 3: jeroenclerix-drupal-en-social-networking-sites

3 / 81

V O O R W O O R D Ik wil graag iedereen danken die heeft bijgedragen aan het tot stand komen van deze scriptie en afstudeerproject. Solide In het bijzonder wil ik Eric Sol - zaakvoerder van Solide - bedanken, voor het vertrouwen, de steun, advies en de samenwerking bij het onderzoek en het project. Deze steun was van onschatbare waarde. Promotoren Veel dank gaat ook uit naar mijn 2 C-MD promotoren Rudi Knoops en Thomas Laureyssens: bedankt voor de goede input, het geduld, en de tijd die jullie voor me hebben kunnen vrijmaken. Drupal In het bijzonder wil ik enkele mensen van de Belgische Drupal community bedanken, waaronder Roel de Meester, en natuurlijk ook stichter Dries Buytaert, om het Drupal project mogelijk te maken. Familie en vrienden Ook wil ik een woordje richten naar mijn familie, vriendin en vrienden. Het zijn drukke maanden geweest. Bedankt voor jullie begrip. Jeroen Clerix Juni 2008

Page 4: jeroenclerix-drupal-en-social-networking-sites

4 / 81

I N T R O D U C T I E Het afgelopen decennium heeft het internet een belangrijke evolutie doorlopen waardoor de rol van de eindgebruiker centraler is komen te staan, vergeleken met daarvoor de zender of het medium. Men spreekt tegenwoordig steeds frequenter van het “sociale web”, het web 2.01. Deze evolutie had nooit kunnen plaatsvinden zonder het ontstaan van nieuwe technologieën zoals blogs, rss, ajax, … Gebruikers leveren nu dan ook meer inhoud aan het web dan ooit tevoren. Het gebruik van Open Source software - software waarvan de broncode vrij beschikbaar is - is in opmars2. Voor steeds meer closed source softwarepakketten zijn er tegenwoordig ook open source varianten beschikbaar. In deze studie richt ik me tot 1 open source softwarepakket dat gebruikt wordt voor het ontwikkelen van zeer uiteenlopende vormen van websites: Drupal. Myspace en Facebook zijn 2 populaire3 social networking sites. Elk maken ze gebruik van door de gebruiker aangeleverde inhoud: user generated content. Deze inhoud wordt opgeslagen op de websites, is vaak persoonsgebonden, en dus interessant voor hergebruik. Haast elke social networking site werkt volgens volgend herkenbaar patroon4: de gebruiker, zijn of haar netwerk, en netwerk activiteiten. Het gebruik van social networking sites is sterk geografisch gebonden, en is interessant voor onder andere adverteerders. Het is interessant te onderzoeken hoe informatie die door internetgebruikers gegenereerd wordt op social networking sites, vandaag te integreren is in een Drupal omgeving. OpenSocial werd in november 20075 in het leven geroepen door Google. Het is een set van API’s - Application Programmer Interfaces - waardoor applicaties die deze implementeren onder andere met elkaar kunnen communiceren of gegevens uitwisselen. OpenSocial wordt als ontwikkelplatform ook wel eens als het antwoord6 van Google op het succes van het Facebook Developer Platform gezien. Veel belangrijke social networking sites zijn vandaag al deze API gaan ondersteunen. De recent opgerichte OpenSocial Foundation7, waarin Google, Yahoo! en Myspace hun krachten bundelen, maakt zo grote kans stilaan de nieuwe standaard te worden voor sociale applicaties.

1 Bron: http://nl.wikipedia.org/wiki/Web_2 2 Bron: http://www.forrester.com/Research/Document/Excerpt/0,7211,37197,00.html 3 Bron: http://en.wikipedia.org/wiki/List_of_social_networking_websites 4 Bron: http://en.wikipedia.org/wiki/Social_networking 5 Bron: http://www.techcrunch.com/2007/10/30/details-revealed-google-opensocial-to-be-common-apis-for-building-social-apps/ 6 Bron: http://en.wikipedia.org/wiki/OpenSocial 7 Bron: http://pro.tweakers.net/nieuws/52600/google-yahoo-en-myspace-richten-opensocial-foundation-op.html

Page 5: jeroenclerix-drupal-en-social-networking-sites

5 / 81

O N D E R Z O E K

Onderzoeksvraag Hoe is gebruiker gegenereerde inhoud op social networking sites te integreren in een Drupal omgeving? Wat kan OpenSocial hier voor gaan betekenen? In het bijzonder richt ik mijn onderzoek tot de algemeen bekende social networking sites, en concentreer ik mijn onderzoek op Drupal 5, waarvoor op dit moment het meeste contributies beschikbaar zijn. Ik benadruk dat ik niet onderzoek hoe inhoud vanuit Drupal te integreren is in social networking sites. Subvragen:

• Hoe kan User Generated Content in social networking sites herbruikt worden in Drupal websites?

• Waar komt deze informatie vandaag al terug in een Drupal omgeving? • Welke huidige bestaande Drupal modules zijn er voor de integratie

van inhoud van social networking sites in Drupal? • Welke functies vervullen deze modules? • Welke zijn de populairste social networking sites? • Welke trends en technologische ontwikkelingen zijn er op het gebied

van social software en Drupal? • Is er vanuit de Drupal wereld interesse voor een implementatie van

OpenSocial?

Doelgroep

• Drupal gemeenschap: voor informatie, advies en netwerking • Drupal bedrijven: voor advies, vragen, samenwerking, en ontwikkeling • Web techneuten, bloggers met mening over trends

Partners

• Drupal gemeenschap: omdat dit onderzoek en project bijna volledig binnen Drupal kaderen.

• Solide: Solide is gevestigd in Maastricht en richt zich op het ontwikkelen van interactieve webtoepassingen. Solide is ook gespecialiseerd in advies over en het gebruik van open source software en toepassing van open standaarden. Solide realiseerde in het verleden onder andere community websites als psychonaut.com, earma.org, nvon.nl, en projecten als zoekwww.be, en deed een heleboel advisering op het gebied van e-learning.

Page 6: jeroenclerix-drupal-en-social-networking-sites

6 / 81

Methodologie Ik gebruik in mijn onderzoek een combinatie van verschillende onderzoeksmethoden.

• Desk research: het opspeuren, zoeken en filteren van informatie die reeds beschikbaar is gemaakt door anderen

• Referentie conversaties: conversaties met personen uit het doelgebied

• Diepte interviews: conversaties met personen uit het doelgebied die in de diepte gaan over bepaalde materie

• Vergelijkend onderzoek: huidige status van Drupal modules voor de integratie van inhoud van social networking sites in Drupal

Page 7: jeroenclerix-drupal-en-social-networking-sites

7 / 81

D E N K K A D E R S Het onderwerp van deze scriptie komt in aanraking met enkele denkkaders. Sociaal kapitaal Het door Pierre Bourdieu en Robert Putnam hergedefinieerde sociaal kapitaal8 heeft effect op wat gebruikers vandaag op het internet doen. Het sociaal kapitaal stelt ons immers in staat binnen een gemeenschap een sociale organisatie vorm te geven. Gemeenschapsactiviteiten, relaties, participatie, lidmaatschap, gedeelde normen en waarden, vertrouwen, … zijn allemaal te linken aan ons sociaal kapitaal. Open source Het ontstaan van open source software wordt algemeen beschouwd als een goede evolutie. Het stelt immers eindgebruikers in staat te kiezen tussen de vaak dure software pakketten of hun open source varianten. Voor ontwikkelaars opent open source software - letterlijk: software waarvan de broncode beschikbaar is - ook nieuwe wegen waardoor er verder gebouwd kan worden op reeds beschikbare code, tenminste als het eindproduct in dat geval ook als open source verschijnt. Voorlopig valt het nog niet te voorspellen hoe ver open source technologie kan gaan, maar voorspellingen over het einde van Microsoft Windows9 zijn niet nieuw. Eigendomsrecht komt in een heel ander perspectief te staan door open source technologie. Het ontstaan van verschillende licenties, waaronder de GNU GPL10, is een logisch gevolg van het beschermen van open source projecten. Ook Drupal is open source software, en valt onder de GNU GPL licentie, net als de zo vele bijdragen door de community, onder de vorm van modules, thema’s, vertalingen, beschrijvingen, … Ook mijn project zal een bijdrage leveren aan de open source wereld, omdat het als Drupal contributie op Drupal.org zal verschijnen. Open standaarden Open standaarden worden vaak in een adem genoemd met open source software. Open standaarden zijn echter letterlijk: publiek beschikbare specificaties om een bepaalde taak te volbrengen. ‘Open’ wordt ook wel gezien als de marketingterm die de uitwisselbaarheid moet benadrukken bij deze standaarden. ‘Standaard’ suggereert dan weer dat het om software gaat die zijn gegevens kan lezen of schrijven in een bestandsformaat dat ook door andere (externe) programma’s in te lezen of te schrijven is. Open standaarden zorgen dus voor betere interoperabiliteit11 tussen applicaties. Bekende voorbeelden zijn standaarden als HTML/XHTML, SQL, PDF, TCP, … Het gebruik en de goede toepassing van deze standaarden heeft effect op de toegankelijkheid voor de eindgebruiker. Drupal weet als software pakket

8 Bron: http://en.wikipedia.org/wiki/Social_capital 9 Bron: http://www.techworld.com/opsys/news/index.cfm?newsid=11953 10 Bron: http://www.gnu.org/copyleft/gpl.html 11 Bron: http://people.mech.kuleuven.be/~bruyninc/etos/informatie.html

Page 8: jeroenclerix-drupal-en-social-networking-sites

8 / 81

succesvol gebruik te maken van de webstandaarden bepaald door het W3C. Open standaarden worden sinds 2004 door de overheid12 in België gepromoot. Semantische web Het semantisch web13 is een steeds evoluerende extensie van het World Wide Web. Het is een uitwerking van de visie van Tim Berners-Lee over het Web als het universeel medium voor de uitwisseling van gegevens, informatie en kennis. Doel is het uitdrukken van informatie op het internet op zulk een manier dan niet alleen mensen er mee kunnen omgaan, verwerken, linken enz.., maar dat dit ook softwarematig gaat. Bouwstenen van het semantische web14:

Social graph De sociale graph15 wordt aanzien als het globaal in kaart brengen van iedereen die op het internet actief is, en met wie en hoe hij aan anderen gerelateerd is.

12 Bron: http://www.openstandaarden.be/?q=node/7 13Bron: http://nl.wikipedia.org/wiki/Semantisch_Web 14Bron: http://nl.wikipedia.org/wiki/Semantisch_Web 15 Bron: http://www.readwriteweb.com/archives/social_graph_concepts_and_issues.php

Page 9: jeroenclerix-drupal-en-social-networking-sites

9 / 81

B E G R I P P E N Enkele essentiële begrippen om deze scriptie goed te begrijpen. API Een Application Programming Interface16 is een verzameling definities op basis waarvan een computerprogramma kan communiceren met een ander programma of onderdeel (meestal in de vorm van bibliotheken). Benchmark Een benchmark17 is een techniek om de prestatie van verschillende systemen, apparaten of organisaties met elkaar te kunnen vergelijken. Facebook Facebook18 is een wereldwijd populaire social networking site. Gebruikers worden lid van een netwerk (vb: Londen, Universiteit Brussel) en kunnen daar binnen hun persoonlijke netwerk uitbouwen (groepen vormen, vrienden uitnodigen, interageren). Facebook is in 2004 ontwikkeld aan de Harvard University. Een killer feature van Facebook is de mogelijkheid om eigen add-ons te maken. Flock Flock19 is een webbroser die net als FireFox op de gecko-engine gebouwd is. Deze browser onderscheidt zich van alle andere browsers door de ingebouwde mogelijkheden voor typische social networking acties als: foto’s uploaden naar je Flickr account, filmpjes naar je YouTube, bladwijzers naar je del.icio.us, ... Flock ondersteunt ook de meeste standaard FireFox plugins. GNU GPL De GNU General Public License20 of kortweg de GPL is een copyleft licentie voor software die stelt dat je met de software mag doen wat je wil (inclusief aanpassen en verkopen), mits je dat recht ook doorgeeft aan anderen en de auteur(s) van de software vermeldt. Hyves Hyves21 is een social networking tool, vergelijkbaar met Facebook. Hyves bevat veel verschillende functies waardoor de gebruiker veel keuze heeft om te interageren binnen zijn/haar netwerk. Hyves is enorm populair in Nederland, waar het meer dan 5 miljoen leden kent.

16 Bron: http://nl.wikipedia.org/wiki/Application_Programming_Interface 17 Bron: http://nl.wikipedia.org/wiki/Benchmark 18 Bron: http://nl.wikipedia.org/wiki/Facebook 19 Bron: http://nl.wikipedia.org/wiki/Flock 20 Bron: http://en.wikipedia.org/wiki/GNU_GPL 21 Bron: http://en.wikipedia.org/wiki/Hyves

Page 10: jeroenclerix-drupal-en-social-networking-sites

10 / 81

LinkedIn LinkedIn22 is een online sociaal netwerk dat gericht is op professionals. In juli 2007 waren er wereldwijd meer dan 12 miljoen geregistreerde gebruikers. LinkedIn groeit de laatste jaren zeer sterk, en binnen Europa met name in Nederland. Het belangrijkste doel van de site is om geregistreerde gebruikers te laten profiteren van elkaars zakelijke netwerk. Dat gebeurt door zich te verbinden met andere gebruikers die men vertrouwt. Mashup Een mashup23 is een webapplicatie die data of functionaliteit combineert van meer dan 1 bron. Microformats Een microformat24, soms afgekort tot μF or uF, is een webgebaseerd gegevensformaat dat ernaar streeft metadata aan de inhoud van bestaande webpagina’s toe te voegen. Een microformat gebruikt daarvoor de bestaande klassen en attributen van HTML en XHTML. Webbrowsers van de toekomst zullen microformats ondersteunen. MySpace MySpace25 is een enorm populaire social networking site waar gebruikers op verschillende manieren kunnen interageren met hun netwerk. Node In de Drupal wereld is een node26 een inhoudsitem. Dit kan een pagina, blog-post, poll, of ander inhoudstype zijn. Nodes krijgen binnen Drupal een automatisch nummer toegewezen dat zichtbaar kan zijn in de url van de website. De URL die deze nummer vormt is ook de permalink naar het inhoudsitem. OpenID OpenID27 is een gedecentraliseerd authenticatiemechanisme om Single Sign-on op het Internet mogelijk te maken. Als iemand gebruik maakt van OpenID, dan hoeft deze persoon voor het inloggen op een website geen gebruikersnaam en wachtwoord te onthouden, maar dan volstaat het om met de OpenID identiteit in te loggen.

22 Bron: http://en.wikipedia.org/wiki/Linkedin 23 Bron: http://nl.wikipedia.org/wiki/Mashup 24 Bron: http://nl.wikipedia.org/wiki/Microformat 25 Bron: Bron: http://nl.wikipedia.org/wiki/Myspace 26 Bron: http://www.drupal.org 27 Bron: http://en.wikipedia.org/wiki/Open_id

Page 11: jeroenclerix-drupal-en-social-networking-sites

11 / 81

Open Source Opensourcesoftware28 is computerprogrammatuur waarvan de broncode letterlijk in te kijken en te veranderen is. PHP PHP29 is een scripttaal die in 1994 ontwikkeld is om op webservers dynamische webpagina’s te genereren. PHP stond eerst voor Personal Home Page, maar werd later PHP Hypertext Preprocessor. Het is een server-side scripttaal, te vergelijken met Perl, Python, Ruby of asp.net. Repository Een repository30 is een plek waar data opgeslagen en onderhouden worden. Sociaal De eigenschap sociaal31 betekent strikt genomen dat een organisme geneigd is om in groepen te leven. Social software Sociale software32 is te definiëren als software die de online interactie tussen mensen mogelijk maakt, virtuele relaties faciliteert, virtuele omgevingen creëert waar mensen samen kunnen werken of virtuele gemeenschappen kunnen vormen. In brede zin omvat social software ook verouderde media zoals e-mail en instant messaging, maar sommigen beperken de betekenis tot recentere media, zoals blogs, wiki’s en social bookmarking. Web 2.0 De term Web 2.033 verwijst naar wat sommigen zien als de tweede fase in de ontwikkeling van het World Wide Web. Het gaat over de verandering van een verzameling websites naar een volledig platform voor interactieve webapplicaties voor eindgebruikers op het World Wide Web. De positie van de eindgebruiker komt hierbij meer centraal te staan.

28 Bron: http://nl.wikipedia.org/wiki/Open_source 29 Bron: http://nl.wikipedia.org/wiki/Php 30 Bron: http://nl.wikipedia.org/wiki/Repository 31 Bron: http://nl.wikipedia.org/wiki/Sociaal 32 Bron: http://nl.wikipedia.org/wiki/Sociale_software 33 Bron: http://nl.wikipedia.org/wiki/Web_2

Page 12: jeroenclerix-drupal-en-social-networking-sites

12 / 81

D R U P A L

Wat is Drupal? Drupal is een vrij beschikbaar software pakket. Het werd oorspronkelijk ontwikkeld als Bulletin Board Systeem,34 om zo een antwoord te bieden op de vraag naar een goede tool om sociale contacten te onderhouden35. Drupal heeft 7 jaren na de eerste release nog steeds dezelfde basiskenmerken. Met de “Community Plumbing” slogan slaat Drupal de nagel op de kop. Drupal is onder andere

een Content Management System dat er voor zorgt dat het systeem, de inhoud en de presentatie van gegevens gescheiden kunnen worden. Drupal is ook een Content Management Framework36, doordat het flexibel op te bouwen is. Drupal is geschreven in PHP. De naam Drupal werd gevormd op basis van de eerste domeinnaam die voor het project door de stichter werd gekozen: drop.org.

Drupal is open-source software, vrijgegeven onder de GPL (GNU General Public Licence), en wordt onderhouden en gevoed door een gemeenschap van duizenden gebruikers en ontwikkelaars wereldwijd. De laatste versie van Drupal is momenteel 6.237 (juni 2008). De meest gebruikte versie38 van Drupal is op dit moment 5.7.

34 Meer info: http://en.wikipedia.org/wiki/Bulletin_board_system 35 Bron: http://drupal.org/node/769 36 Bron: http://en.wikipedia.org/wiki/Drupal 37 Bron: http://drupal.org/drupal-6.2 38 Bron: http://buytaert.net

Page 13: jeroenclerix-drupal-en-social-networking-sites

13 / 81

Kenmerken Kenmerkend voor Drupal zijn basismogelijkheden als taxonomie, waarbij inhoud logisch kan gedeeld worden; gebruikers en rollen, de mogelijkheid tot het aanmaken van eigen inhoudstypes, de flexibiliteit van het systeem en de uitbreidbaarheid. Het systeem kan op verschillende platformen gedraaid worden, en respecteert de huidige webstandaarden. Enkele basiscomponenten van Drupal schematisch weergegeven39:

39 Bron: http://www.slideshare.net/develoop/general-drupal-presentation-in-dutch

Page 14: jeroenclerix-drupal-en-social-networking-sites

14 / 81

Taxonomie: sterk staaltje Drupal Drupal maakt gebruik van taxonomie40, een systeem voor het organiseren van inhoud. Ieder inhoudsitem binnen een Drupal website is een node. Iedere node is ook altijd gekoppeld aan een bepaald inhoudstype, bijvoorbeeld pagina, post, commentaar, afbeelding, webform, … Op gelijkaardige manier kunnen er aan inhouden ook logische termen gekoppeld worden. Bijvoorbeeld bij het indelen van muziek per genre: klassiek, jazz, rock, dance … Achteraf kan er dan bijvoorbeeld een overzicht41 opgevraagd worden van alle inhouden die aan deze termen gekoppeld worden. Het systeem kan ook wel vergeleken worden met het taggen van posts bij blogs. Een voorbeeld42 van een post op Zatte Vrienden gekoppeld aan 4 termen:

Contributies: Drupal uitbreiden De Drupal installatie bevat een aantal basisfuncties: Drupal Core. Drupal Core kan aangevuld worden met extra modules (contributions) die ook vrij beschikbaar zijn op het web. De belangrijkste uitbreidingen zijn terug te brengen in een van volgende categorieën:

• Modules: extra functies • Vertalingen: interfacevertalingen • Thema’s: bepalen de layout van de website

Verder in deze scriptie wordt er dieper ingegaan op de door de gemeenschap bijgedragen functies in de vorm van modules.

40 Bron: http://drupal.org/handbook/modules/taxonomy 41 Meer info: http://drupal.org/handbook/modules/views 42 Bron: http://www.zv-magazine.be/sfw/computerklavier_vuiler_dan_toilet

Page 15: jeroenclerix-drupal-en-social-networking-sites

15 / 81

Minpuntjes Drupal is nog niet perfect. In vergelijking met andere open source content management systemen is er binnen Drupal zeker ruimte voor verbetering43 op deze vlakken:

• Code: gebruikt momenteel PHP 4 (Drupal 7 gaat PHP 5 gebruiken) • Leerfase: deze is bijvoorbeeld langer dan bij Joomla • Onaantrekkelijke backoffice of administratie panel • Het ontbreken van voldoende bijgedragen thema’s om de layout te

bepalen

Geschiedenis Hoe een dorp44 een druppel werd. Antwerpenaar Dries Buytaert maakte op een dag in 1999 een klein draadloos netwerkje waardoor ineens al zijn vrienden uit de straat op internet konden surfen. Alleen: er was nog geen goede software beschikbaar waardoor ze makkelijk en snel konden converseren over een en ander, maar ook over technologie; dus startte hij met het bouwen van zijn eigen website. De website werd al snel een succes, en na

het afstuderen van Dries Buytaert werd ze verder gezet, zodat de

43 Bron: http://cmsreport.com/node/213 44 Bron: http://drupal.org/node/769

Page 16: jeroenclerix-drupal-en-social-networking-sites

16 / 81

studentenvrienden vanuit Gent in contact konden blijven met mekaar. De website werd stilaan een ontmoetingsplek voor techneuten die over technologie konden discussiëren. Ondertussen registreerde Buytaert ook een domeinnaam: drop.org. Per ongeluk, want hij wilde dorp.org vastleggen - wat een weerspiegeling was van het kleine groepje dat ze in Gent vormden. Twee jaar later, in 2001 lanceert Dries Buytaert de software achter drop.org onder de nieuwe naam Drupal. Buytaert lanceerde Drupal als open source, wat de poort opende voor nieuwe ontwikkelaars, uitbreidingen en updates. Een beknopt overzicht45 van 1999 tot nu:

• 1999: Drupal is een intern berichten systeem in een studentenhuis in Gent, het is een experimenteel platform

• 2001: Drupal wordt als open source project gelanceerd

• 2002-2004: Drupal wordt dynamisch, in plaats van statische systemen als Joomla. Drupal wordt onder andere gebruikt bij een presidentiële campagne

• 2005: Drupal 4.5 verschijnt met usability en module ontwikkeling verbeteringen

• 2006: Drupal 4.7 brengt een explosieve groei van gebruikers mee en bevat belangrijke ontwikkelings -en community modules

• 2007: Drupal 5 wordt gelanceerd. De usability wordt aanzienlijk verbeterd en meer modules worden bijgedragen. Onder andere de CCK en Views module

• 2008: Drupal 6 wordt vrijgegeven. Deze versie bevat een betere usability en betere ondersteuning voor meertalige websites. Voor webdesigners wordt een template systeem ingebouwd

• 2009: Drupal 7: PHP5, Drupal wordt een platform dat content van

andere sites haalt en ook eigen content verspreid. Het semantische web

Drupal kende de laatste jaren een enorme groei en won ook steeds meer prijzen, waaronder in 2007 die van “Beste open source overall cms” in de categorie PHP, voor Joomla, in een wedstrijd van Packt Publishing46. In 2008 stichtte Dries Buytaert, bedenker en starter van Drupal, zijn eigen bedrijfje Acquia in de Verenigde Staten, waarvoor hij 7 miljoen dollar47 wist in te zamelen aan startkapitaal, … In 2008 werd Drupal verkozen tot winnaar in de Webware 10048 wedstrijd van

45 Bron: http://www.slideshare.net/develoop/general-drupal-presentation-in-dutch 46 Bron: http://www.packtpub.com/article/drupal-wins-overall-2007-open-source-cms-award 47 Bron: http://acquia.com/blog/acquia-has-raised-7-million 48 Bron: http://www.webware.com/8301-13546_109-9913290-29.html

Page 17: jeroenclerix-drupal-en-social-networking-sites

17 / 81

Cnet, in de categorie Publishing. Bijna gelijktijdig riep het magazine Businessweek49 stichter Dries Buytaert uit tot top-innovator 2008. Tekenen aan de wand dat Drupal het momenteel niet slecht doet. Drupal wordt wereldwijd dan ook steeds vaker gebruikt door ontwikkelaars en webdesigners. Dat resulteert in een heleboel uiteenlopende websites50 met Drupal als achterliggend framework. Het is niet altijd even simpel te traceren wat een website onder de motorkap heeft, en in het geval van Drupal is dit bijna volledig camoufleerbaar. Drupal kenners weten de applicatie uiteraard wel snel te onderscheiden. Een overzicht van een aantal Drupal websites is verzameld op www.drupalsites.net maar het exacte aantal bestaande Drupal sites lijkt moeilijk te bepalen.

Community Drupal zou wellicht nooit een succes geworden zijn zonder de vele bijdragen van de Drupal gemeenschap. Deze gemeenschap begon zich pas echt rond het jaar 200351 te ontwikkelen, en zorgt er onder andere voor dat de ontwikkeling van Drupal Core steeds verder wordt gezet, dat er nieuwe versies van Drupal verschijnen, ze doen ook bug-reports, schrijven documentatie, ontwikkelen en testen modules, thema’s, nieuwe vertalingen, organiseren Drupal meetings, onderhouden drupal.org, … Twee grafieken die de groei van de Drupal community illustreren aan de hand van de activiteit op drupal.org:

49 Bron: http://www.businessweek.com/technology/content/apr2008/tc20080417_388737.htm?chan=technology_special+report+--+best+young+entrepreneurs_best+young+entrepreneurs 50 Bron: http://www.drupalsites.net 51 Bron: http://groups.drupal.org/node/1980

Page 18: jeroenclerix-drupal-en-social-networking-sites

18 / 81

Een grafiek52 die een overzicht geeft van het steeds stijgende aantal bijgedragen projecten op Drupal.org:

52 Bron: http://www.slideshare.net/develoop/general-drupal-presentation-in-dutch

Page 19: jeroenclerix-drupal-en-social-networking-sites

19 / 81

Features in detail

Algemeen Collaborative Book De Book functie stelt gebruikers in staat samen te werken aan een boek, dat kan bestaan uit meerdere pagina’s en onderdelen. Vriendelijke URL’s Drupal gebruikt de Apache’s mod_rewrite53 functie om aanpasbare URL’s in te geven in plaats van de standaard “node/item-nummer”. Vriendelijke URL’s54 zijn goed voor zoekmachines en zorgen voor logica voor de gebruiker.

• Voorbeeld van een onvriendelijke url: http://www.nl.bol.com/is-bin/INTERSHOP.enfinity/eCS/Store/nl/-/ EUR/BOL_DisplayProductInformation-Start?BOL_OWNER_ID= 1001004002771653&Section=BOOK_EN&lgl=1&plid= ET2R5LdRJloAAAESRgZbWQlJ&lgl_BOL_OWNER_ID=1&lgl_Section=1

• Voorbeeld van een vriendelijke url: http://www.naarvoren.nl/artikel/vriendelijke_urls/

Modules De Drupal gemeenschap heeft ondertussen veel modules55 bijgedragen. Deze leveren extra functionaliteit aan Drupal Core. Online help Drupal heeft een ingebouwd help systeem, maar gebruikers kunnen ook terecht op het Drupal forum of IRC chat kanaal56 voor vragen. Open Source De broncode van Drupal is vrij beschikbaar onder de GNU General Public Licence 2 (GPL). Personalisatie Drupal ontwikkelaars komen terecht in een omgeving die inhoudelijk en ook visueel eenvoudig aangepast kan worden naar de wensen van de gebruiker.

53 Meer info: http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html 54 Meer info: http://www.naarvoren.nl/artikel/vriendelijke_urls/ 55 Bron: http://drupal.org/project/modules 56 Bron: http://www.mirc.com/

Page 20: jeroenclerix-drupal-en-social-networking-sites

20 / 81

Zoeken Alle inhoud van Drupal websites is volledig indexeerbaar en doorzoekbaar.

Gebruikers management Gebruikersauthorisatie Gebruikers kunnen zich lokaal registreren en bekend maken, maar kunnen ook inloggen via een externe bron of OpenID57. Rollen en permissies In Drupal kunnen gebruikers aan instelbare rollen gekoppeld worden. Deze rollen zijn gekoppeld aan bepaalde functies, en bepalen zo wat de gebruiker mag doen op de website. Er zijn minimum 2 rollen binnen een Drupal website:

• Niet-geregistreerde gebruiker (unregistered) • Geregistreerde gebruiker (registrered)

o vb: webmaster o vb: schrijver o vb: groep beheerder o …

Management van inhoud Inhoudstypes Drupal ondersteunt meerdere inhoudstypes en stelt de administrator in staat om via de CCK module eigen inhoudstypes te maken. Taxonomie Taxonomie is de wetenschap van het indelen. Drupal heeft de mogelijkheid logische termen te koppelen aan posts, pagina’s, afbeeldingen, ... Zo kan een gebruiker bepaalde termen – die ook nog eens deel kunnen uitmaken van woordenschat (of groep) – koppelen aan een nieuwe post, afbeelding, … Polls Een poll is een opiniepeiling58 waarmee een organisatie de mening van belanghebbenden in kaart kan brengen. Drupal heeft ingebouwde Poll functionaliteit die admins of gebruikers in staat stelt deze te publiceren, bekijken, resultaten te publiceren, …

57 Bron: http://drupal.org/node/152893 58 Meer info: http://nl.wikipedia.org/wiki/Opiniepeiling

Page 21: jeroenclerix-drupal-en-social-networking-sites

21 / 81

Templates Het ingebouwde theme systeem van Drupal scheidt inhoud van presentatie, en stelt daardoor de gebruiker in staat de look en feel van iedere website volledig zelf te bepalen. Templates worden ontwikkeld op basis van standaard xHTML, CSS en PHP codering. Men hoeft dus geen aparte Drupal template taal te leren. Geneste commentaren Drupal gebruikt een commentaarsysteem dat gebruikers in staat stelt discussies te voeren op basis van gepubliceerde inhoud. Commentaren verschijnen hiërarchisch zoals in een nieuwsgroep of forum. Voorbeeld:

Versiecontrole Het versiecontrole systeem van Drupal slaat details over inhoudsupdates op, zoals wie het veranderd heeft, wat er veranderd is, de datum en tijd van de wijzigingen en meer. Versiecontrole heeft ook de mogelijkheid om logberichten mee te sturen en terug te gaan naar eerdere versies van inhoud.

Page 22: jeroenclerix-drupal-en-social-networking-sites

22 / 81

Bloggen Bogger API ondersteuning De Blogger API stelt een Drupal site in staat om updates uit te voeren via verschillende hulpmiddelen. Inhoudsyndicatie Drupal exporteert de inhoud van de website in RDF of RSS feeds. Dit stelt iedereen met een feed lezer in staat de gesyndiceerde inhoud in te lezen. Niewsaggregator Drupal heeft een nieuws aggregator voor het inlezen van blogfeeds van andere websites. Berichten worden op die manier tijdelijk in de cache opgenomen van de databank. Permalinks Alle inhoud van Drupal websites krijgt een permanente link of permalink59.

Platform Multi-platform Drupal wordt ondersteund op verschillende platforms: Apache, IIS, Unix, BSD, Solaris, Windows, Mac OS X, …. Database onafhankelijk Terwijl de meeste Drupal gebruikers Drupal in combinatie met MySql60 gebruiken, wordt ook PostgreSQL ondersteund. Meertalig Drupal is ontwikkeld met het idee om een internationaal publiek te kunnen dienen. Drupal bevat dan ook een framework waarmee perfect meertalige websites kunnen uitgebouwd worden. Alle teksten kunnen worden vertaald door het importeren van bijvoorbeeld bestaande vertalingen61, of te integreren met andere beschikbare vertaalsystemen.

59 Meer info: http://en.wikipedia.org/wiki/Permalink 60 Meer info: http://www.mysql.com/ 61 Bron: http://drupal.org/project/Translations

Page 23: jeroenclerix-drupal-en-social-networking-sites

23 / 81

Administratie en analyse Analyse, Tracker en Statistieken Drupal kan browser gebaseerde statistieken geven over het websitegebruik waaronder informatie over referrers, aantal paginabezoeken, en welke pagina’s bezocht worden door gebruikers. Logs en verslagen Alle belangrijke activiteiten en systeemevenementen worden opgeslagen in een evenementenlog, die door de website administrator opgevolgd kan worden. Web gebaseerde administratie Drupal kan volledig beheerd worden door het gebruik van een webbrowser, zodat iedere website op ieder moment op iedere plaats ter wereld beheerd kan worden.

Community tools Discussie forums De mogelijkheid om een discussieforum te lanceren via het inhoudstype forum behoort tot de basisfuncties van Drupal. Maar ook op alle andere inhoudstypes kan steeds geneste commentaar gegeven worden. Deze functie gecombineerd met taxonomie zorgt voor een nieuwe benadering hoe discussieplekken ingericht kunnen worden in Drupal.

Performance en schaalbaarheid Cachen Het cache mechanisme van Drupal elimineert overbodige database queries waardoor de laadtijd en serverbelasting tot een minimum beperkt worden.

Page 24: jeroenclerix-drupal-en-social-networking-sites

24 / 81

Types van websites Verschillende duizenden mensen en organisaties gebruiken Drupal anno 2008 voor het ondersteunen van verschillende types62 van websites, waaronder:

• community portals • discussiewebsites • corporate websites • intranetapplicaties • persoonlijke websites of blogs • e-commerce applicaties • bron verzamelingen • social networking sites

62 Bron: http://drupal.org/cases

Page 25: jeroenclerix-drupal-en-social-networking-sites

25 / 81

Toekomst Van 3 tot 6 maart 2008 werd in Boston (VS) een belangrijke conferentie gehouden voor ontwikkelaars en gebruikers: Drupalcon Boston 200863. Stichter en bezieler Dries Buytaert hield er

een belangrijke keynote speech over de toekomst van Drupal, en in het bijzonder Drupal 7. Enkele belangrijke uitspraken: Bron: Network World64

• “Tussen al de dingen die Buytaert vertelde over de toekomst van Drupal en het web, zat een belangrijke uitspraak: Als het web 2.0 meer over gebruiker management en relaties was, dan zal het web 3.0 het web 2.0 plus oneindige operabiliteit worden.”

• “Voor Drupal betekent dat dat het een RDF65 repository wordt voor het importeren en exporteren van data, zodat data gedecentraliseerd worden en kunnen opgevraagd worden door iedereen, in welk formaat dan ook (XTHML, XML, …).”

• “We willen andere mensen toestaan om onze data te hergebruiken… We willen coole dingen doen met grote hoeveelheden data. Dit is pure fun, in mijn visie.”

Bron: Lullablog66

• “ Er zal minder gefocust worden op functionaliteit, maar meer op data: - data integratie van meerdere bronnen - anderen toestaan je data te gebruiken - decentraliseren van data zodat niemand eigenaar is - met veel data kan je veel leuke dingen doen …”

• “De toekomst is hier. Het moet op dit moment enkel nog verspreid worden.”

Een grafisch voorbeeld67 van LinkingOpenData, een W3C SWEO Community Project:

63 Bron: http://boston2008.drupalcon.org 64 Bron: http://www.sitepoint.com/blogs/2008/03/05/drupal-7-a-living-breathing-semantic-web-citizen/ 65 Resource Description Framework, meer info: http://www.w3.org/RDF/ 66 Bron: http://www.lullabot.com/blog/drupalcon-state-dries-buytaert 67 Bron: http://esw.w3.org/topic/SweoIG/TaskForces/CommunityProjects/LinkingOpenData

Page 26: jeroenclerix-drupal-en-social-networking-sites

26 / 81

• “Het grote voordeel is dat iedere Drupal site zijn eigen RDF repository krijgt en we zo kunnen starten met het mashen in het semantische web.”

• “De Social Graph verbindt enkel mensen, maar we willen naar de mogelijkheid waar we alles kunnen verbinden.”

• “We gaan over van het WWW naar de Giant Global Graph (Tim Berners-Lee).”

Page 27: jeroenclerix-drupal-en-social-networking-sites

27 / 81

Bijgedragen modules Drupal Core ondersteunt de mogelijkheid om extra modules te installeren die ieder aparte functionaliteit bieden. Deze modules zijn gemaakt en aangeleverd door leden van de Drupal gemeenschap. Een Drupal module gaat altijd samen met een Drupal versie. Populaire modules zijn door hun ontwikkelaars dan ook uitgebreid voor ondersteuning van meerdere Drupal versies (4, 5, 6). Een lijstje68 van de huidige modulecontributies voor Drupal 5, gegroepeerd per thema:

• Integratie van derden (218) • Administratie (183) • CCK: Kit voor het aanmaken van inhoudstypes (132) • Commercieel / reclame (55) • Community (138) • Inhoud (311) • Inhoud laten zien (355) • Developer tools (126) • E-commerce (40) • Evaluatie / punten-geven (51) • Evenement (31) • Management van bestanden (42) • Filters en editors (121) • Import en export (49) • Javascript (74) • Locatie (26) • Mail(85) • Media (122) • Meertaligheid (20) • Organische groepen (46) • Pagina bladeren (13) • RDF (4) • Zoeken(54) • Veiligheid (48) • Syndicatie van inhoud (46) • Taxonomie (101) • Thema uitbreidingen (94) • Gebruiker toegang / authorisatie (118) • Gebruiker management (113) • Utility (331) • Inhoud weergave (78)

Uit dit overzicht wordt duidelijk dat er een heleboel extra modules beschikbaar zijn waarmee de basisfunctionaliteit van Drupal uitgebreid kan worden. Toch kan met Drupal nog niet alles. In realiteit worden door webdesign-bedrijven vaak Drupal modules aangepast in functie van de opdracht, of aangevuld met maatwerk, wat al dan niet als bijdrage kan verschijnen op www.drupal.org.

68 Bron: http://drupal.org/project/Modules

Page 28: jeroenclerix-drupal-en-social-networking-sites

28 / 81

Modules ontwikkelen voor Drupal Drupal is een open source project waarbij samenwerking binnen de ontwikkelgemeenschap centraal staat. De huidige Drupal Core en haar ondersteunende features zoals modules, documentatie, thema’s, … zijn dan ook volledig het werk van een wereldwijd verspreide gemeenschap van ontwikkelaars. Drupal.org is de thuishaven van alle Drupal ontwikkelaars. Het is de plaats waar alles over Drupal terug te vinden is: van installatiebestanden en extra’s, documentatie, themagroepen, fora voor overleg, … Drupal.org als community site bekeken is een voorbeeld van hoe krachtig haar eigen software eigenlijk wel is. Wellicht heeft het succes van de community website ook rechtstreeks bijgedragen tot het succes van het product. Op Drupal.org staat er een heleboel informatie69 ter beschikking voor mensen die een bijdrage willen leveren aan het Drupal project. Doxygen Drupal maakt gebruik van Doxygen70: een documentatie genererend systeem. Door gebruik te maken van bepaalde syntaxen in de opmaak van typische documentatiecode kan het systeem deze informatie hergebruiken. Zo kan er rechtstreeks vanuit de broncode versie informatie en documentatie meegegeven worden. Het Doxygen principe stelt ontwikkelaars ook in staat grote stukken code overzichtelijk te houden. CVS Het Concurrent Versie Systeem71 is een software onwikkelingstool die gebruikt wordt voor het onderhouden van programma’s en bestanden voor het Drupal project. Het is beschikbaar voor vrijwilligers met ervaring in software ontwikkeling, vertalingen, thema-ontwikkeling, … kortom iedereen die wil bijdragen aan het Drupal project. Met een CVS account op zak kan men nieuwe bijdragen leveren aan het Drupal project. Een projectvoorstel72 moet daarvoor wel eerst goedgekeurd worden door de Drupal CVS administrators. CVS aanvragen kunnen zo bijvoorbeeld steeds geweigerd worden als men een bestaande module wil dupliceren, of als de motivatie van de maker gewoonweg te zwak is. CVS is ook bedoeld om het werken in groep aan een project te vergemakkelijken. Een gekend probleem bij het samenwerken aan een script is wel bij het committen het overlappen of overschrijven van code. CVS lost dit op door een versiesysteem te gebruiken, dat gebruikers op de hoogte houdt over de status of laatste bijdragen aan een product. Dit systeem is vergelijkbaar met het bekende open source versie systeem Subversion73.

69 Bron: http://drupal.org/contributors-guide 70 Meer info: http://www.stack.nl/~dimitri/doxygen/ 71 Meer info: http://en.wikipedia.org/wiki/Concurrent_Versions_System 72 Bron: http://drupal.org/cvs-application 73 Meer info: http://subversion.tigris.org/

Page 29: jeroenclerix-drupal-en-social-networking-sites

29 / 81

Een project starten: niet dupliceren, eerst overleggen Te vaak worden er nieuwe modules bijgedragen die geen nieuwe functies leveren, ze doen het enkel op een andere manier. Drupal CVS administrators moeten in 80% van alle gevallen dan ook de dialoog aangaan met mensen die een project willen toevoegen aan Drupal. De Drupal gemeenschap spoort ontwikkelaars dan ook aan enkele regels74 te volgen:

• Ontwikkelaars kunnen best 1 centrale API gebruiken. • Contacteer ook andere ontwikkelaars uit het domein. Zeker de

ontwikkelaars waar de mogelijke module zou mee moeten samen werken. 2 overlappende modules kunnen voor problemen zorgen, als ze het zelfde willen doen, of wanneer ze bijvoorbeeld dezelfde database-tabellen proberen te gebruiken.

• Dupliceer geen bestaande module omdat je denkt dat je het beter zou kunnen. Beter kan men in zo’n geval huidige modules proberen te verbeteren.

Coding standaarden Drupal spoort ontwikkelaars aan zich te houden aan enkele Drupal conventies75 met betrekking tot het produceren van code. Deze standaarden zijn gebaseerd op de gids die gehanteerd wordt door Pear76. Afspraken over het coderen binnen PHP hebben hun effect opvolgende componenten:

• Indenting (inspringen om code overzichtelijk te houden) • Controle structuren (if, for, while, switch…) • Functie aanroepen • Functie declaraties • Arrays • Commentaar (Doxygen formaat) • Includen van code • PHP code tags • Header commentaar blokken • Het gebruik van CVS • Voorbeeld URL’s • Naam conventies • Helper script • Helper module • String bepaling

Andere afgesproken standaarden hebben hun effect op:

• Module documentatie • Opmaak standaarden • Javascript standaarden • Het gebruik van iconen (icons)

74 Bron: http://drupal.org/node/23789 75 Bron: http://drupal.org/coding-standards 76 Bron: http://pear.php.net/manual/en/standards.php

Page 30: jeroenclerix-drupal-en-social-networking-sites

30 / 81

Het schrijven van veilige code Het schrijven van veilige code77 is uitermate belangrijk om Drupal gezond te houden. Onveilige code die in een live omgeving verschijnt, biedt de mogelijkheid in te breken in het systeem. Binnen Drupal worden ontwikkelaars dan ook aangeraden zich te houden aan 3 basisprincipes:

• Cross site scripting aanvallen kunnen voorkomen worden door de output van de scripts goed te testen

• SQL gerelateerde aanvallen kunnen voorkomen worden door de database abstractie laag te gebruiken

• Toegang tot nodes moet geregeld worden door gebruik te maken van db_rewrite_sql78.

Binnen de Drupal documentatie wordt er verder nog aandacht besteed aan:

• Database toegang • Input • Formulieren om Cross-site Request Forgeries (CSRF) te voorkomen • Bestand uploads, downloads en management • Het gebruik van tekst op een veilige manier • JavaScript • Sessie ID’s • Gebruik van db_rewrite_sql • Configuratie stappen voor een veiligere site

Patches binnen Drupal Patches zijn manieren om veranderingen in bestaande code door te voeren. Deze patches79 gaan samen met beschrijvingen van de voor- en na-status van de verandering. Door een patch toe te passen, kom je dus in de ‘na’ status terecht. Patches toepassen – het uitvoeren van de instructies in de patch file – is werk voor typische patch programma’s als Patch, Eclipse, Xcode, … Patches bevatten vaak ingrijpende veranderingen. Daarom is het af te raden patches toe te passen in een live omgeving. Drupal API’s Op Drupal.org is alle nodige informatie te vinden met betrekking tot de Drupal application programmer interface80. De belangrijkste Drupal componenten worden ieder apart behandeld:

• Module systeem • Database abstractie laag • Menu systeem • Formulieren • Bestands upload systeem

77 Bron: http://drupal.org/writing-secure-code 78 Meer info: http://api.drupal.org/api/function/db_rewrite_sql/5 79 Bron: http://drupal.org/patch 80 Bron: http://drupal.org/node/326

Page 31: jeroenclerix-drupal-en-social-networking-sites

31 / 81

• Zoek systeem • Node toegang systeem • Theme systeem

Handig zijn ook enkele voorbeeld modules:

• Hoe blokken maken • Hoe een inhoudsfilter te maken • Hoe inhoudstypes maken (nodes) • Hoe toegang te weigeren tot nodes • Hoe bestaande inhoudstypes uit te breiden zijn • Hoe weergaves te maken zijn

Het onderhouden van een project op Drupal.org Voor men met een nieuw project kan beginnen op Drupal heeft men zoals gezegd een CVS account nodig. Deze account kan men aanvragen bij de Drupal CVS Administrators. Ieder project op Drupal.org wordt bijgehouden in de contributions repository81. Deze CVS repository staat apart van de Drupal core code, en wordt gebruikt voor modules, thema’s, vertalingen, … van derden. Iedereen kan steeds de databank doorzoeken op: http://cvs.drupal.org/viewvc.py/drupal/contributions/ Als ontwikkelaar is het ook belangrijk te weten dat men hier enkel code mag toevoegen die vrijgegeven is onder de GNU General Public Licence. Vertalingen Het ontwikkelen van de interface vertaling82 is binnen een Drupal een apart proces naast de ontwikkeling van het project zelf. Ontwikkelaars plaatsen speciaal gemarkeerde tekst in de code, die strings aangeven die vertaald kunnen worden. Een programma dat deze code kan omvormen is nodig om de strings te verzamelen en een vertaal template te vormen. Enkel de te vertalen woorden worden zo in de template opgenomen. Op deze manier kunnen er voor meerdere talen templates gemaakt worden, die elk door Drupal geïmporteerd kunnen worden. Drupal maakt gebruik van de GNU Gettext83 toolset, die een oplossing biedt voor de meeste vertaal problemen. Door meerdere vertalingen te implementeren vergroot uiteraard ook het bereik van de module. Vertaalproces Een interface84 van het vertaalproces:

81 Bron: http://drupal.org/node/321 82 Bron: http://drupal.org/translators 83 Bron: www.gnu.org/software/gettext/ 84 Bron: tp://drupal.org/translators

Page 32: jeroenclerix-drupal-en-social-networking-sites

32 / 81

Vertalingen van Drupal core Bij iedere Drupal release worden ook Drupal core template files vrijgegeven. Deze voorgegenereerde templates zijn geschikt voor bewerking door de ontwikkelaar. Het opzetten van een ontwikkel omgeving voor Drupal Drupal heeft een server-omgeving nodig85 om te kunnen werken. Deze kan live zijn op een server die ergens een fysieke locatie heeft. Of deze kan ook lokaal opgezet zijn op een pc of laptop. Benodigdheden86:

• Browser met add-ons: o Microsoft Internet Explorer

Internet Explorer Developer Toolbar

85 Bron: http://drupal.org/node/147786 86 Bron: http://drupal.org/node/147789

Page 33: jeroenclerix-drupal-en-social-networking-sites

33 / 81

o Mozilla Firefox Firebug

o Opera, Safari, Camino, …

• Tekstbewerking-tools o Dreamweaver o Notepad ++ o Textwrangler, jEdit, …

• IDE’s: Integrated development environments

o Bluefish Editor o Eclips o Greany, …

• SQL en database tools

o MySQL GUI Tools Bundle o FlySpeed SQL Query

• Andere tools als

o PuTTy: ssh + telnet client o 7zip o Filezilla: ftp client

Het opzetten van een locale server Een locale server87 biedt vrijheid en stabiliteit voor ontwikkelaars en designers. Het ontwikkelen en testen van een product kan nu gebeuren zonder afhankelijk te zijn van een internetverbinding, zonder rekening te houden met mogelijke problemen, of gebroken code. Ook worden op deze manier veel wachttijden weggewerkt, die anders verbonden waren aan het uploaden van bestanden via FTP. Het opzetten van een lokale server-omgeving vergt wat voorkennis, maar is noodzakelijk voor professionele ontwikkelaars. Er zijn 2 aanpakken die ontwikkelaars meestal hanteren:

• Het manueel downloaden en installeren van de afzonderlijke componenten zoals Apache, MySQL en PHP en dan alles zelf configureren.

• Het installeren van speciale pakketten die alle componenten omvatten. Wamp, Lamp, Xampp Wamp (Windows) en Lamp (Linux) en zijn de voorlopers88 van Xampp, dat beschikbaar is voor Linux, Windows, MacOS en Solaris. Iedere lokale server maakt gebruik van 4 steeds terugkerende componenten:

• Besturingssysteem: vb. Windows, Linux, Mac • Webserver: vb. Apache • Database-server: vb. MySQL

87 Bron: http://drupal.org/node/157602 88 Bron: http://nl.wikipedia.org/wiki/XAMPP

Page 34: jeroenclerix-drupal-en-social-networking-sites

34 / 81

• Scripttaal: vb. PHP, Python, Perl

Drupal vs OOP programmeren Drupal werd in het verleden misschien wel eens bekritiseerd89 omdat het niet volledig de beginselen van Object Georiënteerd Programmeren zou bevatten. Dit vraagt om wat opheldering. Het originele design van Drupal is gebaseerd op PHP4, waar toen nog niet heel veel functionaliteit beschikbaar was voor object georiënteerd programmeren. Een gevolg daarvan is dat Drupal nu niet de PHP constructie ‘class’ gebruikt, een beslissing die gebaseerd is op de volgende argumenten:

• Toen Drupal ontwikkeld werd, waren de mogelijkheden van PHP beperkt vergeleken met de mogelijkheden voor OOP in PHP5.

• De code van Drupal is opgedeeld in modules, die allen een set van functies bevatten. Door het opnemen van functies in hogere omgevingen, is de performance van Drupal optimaal. Het gebruik van classen zou in dit geval een beperking betekenen voor Drupal.

Ondanks het ontbreken van expliciet gedeclareerde classen in Drupal, bevat Drupal veel objectgeoriënteerde structuren90 in zijn ontwerp. Toekomst: PHP5 Technologie evolueert en dus moet ook Drupal evolueren. Tot en met de huidige versie draait Drupal op PHP 4. De Drupal gemeenschap heeft dan ook besloten91 in het belang van Drupal met de volgende versie het roer om te gooien naar PHP 5. De voordelen van het gebruik van PHP 5.2 zijn:

• Verbeterde performance en een accurater gebruik van geheugen • Betere veiligheid door de filteruitbreiding • Een zip extentie voor het maken en bewerken van zip bestanden • Hooks voor het traceren van bestands uploads • DateTime en DateTimeZone objecten met bepaalde methodes • SQLite is nu gebundeld met PHP • Sterk verbeterde XML ondersteuning • Vernieuwende mogelijkheden voor OOP

89 Bron: http://api.drupal.org/api/file/developer/topics/oop.html/5 90 Bron: http://drupal.org/node/19964 91 Bron: http://drupal.org/gophp5

Page 35: jeroenclerix-drupal-en-social-networking-sites

35 / 81

CMS vergelijking Drupal doet het goed in een vergelijking92 met andere typische open source content management systemen. Het valt op dat Drupal hoog scoort op belangrijke domeinen als webstandaarden,

gebruiksgemak, schaalbaarheid en aanpasbaarheid, … Het software pakket kreeg in 2007 dan ook de Overall 2007 Open Source CMS Award93 voor beste open source content management systeem, in een wedstrijd van Packt Publishing.

Legende:

• vol = maximum score • halfvol = de helft van de punten • leeg = minimum score

92 Bron: http://www-128.ibm.com/developerworks/ibm/library/i-osource1/#N10245 93 Bron: http://www.packtpub.com/article/drupal-wins-overall-2007-open-source-cms-award

Page 36: jeroenclerix-drupal-en-social-networking-sites

36 / 81

Voorbeelden van Drupal sites Internationale websites

• Greenpeace.org • Amnesty.org • Corp.aol.com • Ostatic.com (blog over OS software) • Fastcompany.com (business magazine) • PopSci.com (community) • Mikebloomberg.com (burgemeester New York) • Rockband.com (Sony game) • Extensions.services.opensoffice.org • Research.yahoo.com • Macworldexpo.com • Avrillavigne.com • Harvardscience.harvard.edu • Britney.com • Myplay.com (Sony) • Motogp.com • Pinkspage.com • Research.yahoo.com • Forbes.com • Ubuntu.com • Hillaryclinton.com • Playboy.de • Bright.nl

Belgische websites

• Indymedia.be • Stubru.be • Donna.be • Invest.belgium.be • Premier.be • Filipkowlier.be • Zattevrienden.be • 9lives.be • Pcwereld.be • Brusselsjournal.com • Studentstart.be • 16plus.be

Page 37: jeroenclerix-drupal-en-social-networking-sites

37 / 81

I N T E R N E T A N N O 2 0 0 8 Het internet is anno 2008 een interessantere plek geworden dan pakweg een decennium geleden. Voor een heleboel functies94 bestaan er vandaag websites die de gebruiker in staat stellen acties te ondernemen. Het web is socialer95 geworden, en stelt de gebruiker in staat om op verschillende manieren te interageren met andere gebruikers. Social media en social software spelen dan ook voor velen een belangrijke rol bij het onderhouden van sociale contacten. Social networking sites zijn een voorbeeld, maar ook blogs, wiki’s, feeds, podcasts, micro-blogging (vb. Twitter), webservices met open API enz. zijn vaak bekend bij de internetgebruiker.

Online identiteit Uit een onderzoek96 van Ruigrok|Netpanel blijkt dat heel wat Nederlanders vandaag actief zijn op het web. Persoonlijke informatie online stapelt zich op De massa rukt op bij het sociale web. Het gevolg van deze ontwikkeling is dat van een toenemend aantal mensen steeds meer persoonlijke informatie online te vinden is. Een aantal feiten op een rij:

• 52% maakt gebruik van sociale netwerksites (waarvan 30% soms, 22% vaak)

• 57% uploadt foto’s (waarvan 39% soms, 18% vaak) • 33% plaatst reacties op discussiefora (waarvan 24% soms, 9% vaak) • 18% uploadt video’s (waarvan 15% soms, 3% vaak)

Met name jongeren tot 35 jaar zijn vaak online present. Verschillen tussen 35-54 jarigen en 55-plussers zijn hierin kleiner. Googelen als online spiegelbeeld

Naast het zoeken van informatie is googelen een snelle manier om te weten te komen hoe het met je online identiteit staat. Een kwart van de online Nederlanders (27%) googelt zichzelf wel eens. Ook familieleden (25%), vrienden (27%) of mensen die

net zijn ontmoet (18%) worden wel eens gegoogeld. Opvallend is dat vier van de tien Nederlanders nooit iemand googelen. Wel bewustzijn en controle, maar weinig belang Een ruime meerderheid (79%) van de online Nederlanders is selectief in wat wel en niet online gezet wordt aan persoonlijke zaken. De meeste

94 Bron: http://www.clickz.com/showPage.html?page=3625146 95 Bron: http://en.wikipedia.org/wiki/Social_Web 96 Bron: http://www.frankwatching.com/archive/2008/04/29/ik-ben-online-zichtbaar-dus-ik-besta/

Page 38: jeroenclerix-drupal-en-social-networking-sites

38 / 81

Nederlanders (64%) vinden dat ze hun online alter ego zelf in de hand hebben. Mannen profileren, vrouwen zijn sociaal Als het gaat om de online identiteit zijn mannen en vrouwen even verschillend van elkaar als in het werkelijke leven, blijkt uit het onderzoek. Mannen zijn zich vaker dan vrouwen bewust van hun online identiteit (61% versus 52%), hechten er vaker belang aan en (30% versus 25%) en zijn actiever bezig om een digitaal alter ego te creëren (13% versus 8%). Vrouwen hebben er vaker dan mannen moeite mee dat persoonlijke informatie voor iedereen zichtbaar is (71% versus 61%) en zijn vaker selectief in wat wel en niet online wordt gezet (88% versus 82%).

Web 2.0 en Open Source De evolutie van web 1.0 naar web 2.0 gaat ook gepaard met technologische evoluties waaronder Ajax, blogs, rss, ... Ajax - Asynchronous JavaScript en XML - geeft internetgebruikers bijvoorbeeld het gevoel dat men met locale software werkt, maar toch communiceert men steeds met een server. Ook het gebruik van open source software is in opmars. Mark Driver van Gartner97 voorspelde in

2005 reeds dat tegen 2008 een heleboel open source software op de markt zou zijn die direct zou kunnen concurreren met de dure gesloten pakketten. Een voorspelling die … uit kwam. Denken we even aan producten als Apache, FireFox, OpenOffice of Gimp (fotobewerking) ... Het zou dan ook niet slecht zijn mochten overheden het gebruik van open source software nog meer gaan stimuleren. Een voorbeeld waar dit reeds langer gebeurt is Nederland. Hier werd in 2002 al een motie gestemd - de zogenaamde Motie Vendrik98 - waardoor bij overheidsinstellingen het aanschaffen van closed software steeds afgewogen moet worden ten opzichte van beschikbare open source toepassingen. Ook met het actieplan “Nederland Open in Verbinding”99 uit 2007 maakt de Nederlandse regering een duidelijk statement. Enkele voordelen van open source100 software:

• Open source code kan geanalyseerd101, bewerkt en verbeterd worden door duizenden mensen wereldwijd

• De flexibiliteit van het eindproduct is vaak groter102 dan bij gesloten pakketten

97 Bron: http://www.gartner.com/it/products/research/asset_129504_2395.jsp 98 Bron: http://nl.wikipedia.org/wiki/Motie_Vendrik 99 Bron: http://www.ososs.nl/node/65250 100 Meer info: http://www.opensource.org/ 101 Bron: http://www.albion.com/security/intro-7.html 102 Bron: http://computerworld.co.nz/news.nsf/devt/2B9B1FE8678CC680CC257299000A233F

Page 39: jeroenclerix-drupal-en-social-networking-sites

39 / 81

• De software is gebaseerd op het principe van samen ontwikkeling wat vaak een aantal problemen uitsluit

• Open Source staat synoniem voor modulair ontwikkelen en volgens de webstandaarden

• Open Source software heeft veel zakelijke voordelen103 Sites als www.sourceforge.net of dichter aan huis www.ossos.nl proberen een overzicht te bieden van beschikbare softwarepakketten. Recentelijk werd Ohloh104 in het leven geroepen: een community voor open source ontwikkelaars.

Open Source vs Closed Source De basis105 van de piramide van beschikbare programma’s (in welk domein dan ook) zal hoe langer hoe meer ingenomen worden door open programmatuur. Open en commerciële ontwikkelingen stimuleren elkaar in positieve zin: commerciële bedrijven kunnen nuttig gebruik maken van alles wat in de Open wereld voorhanden is en van alle baanbrekende experimentele systemen die in

universiteiten en onderzoekslabo’s ontwikkeld worden (zoals bijvoorbeeld het internet of e-mail), terwijl de Open wereld zich inspireert op goede commerciële voorbeelden. Op die manier worden de commerciële ontwikkelaars voortdurend aangespoord om beter te doen. De technische verschillen tussen open en gesloten software zijn niet belangrijk op lange termijn: beide werelden groeien op veel gebieden naar elkaar toe, omdat ze (ieder op zijn manier) evolueren op basis van dezelfde technologieën. Het fundamentele verschil tussen open en gesloten is terug te brengen in de achterliggende filosofie van deze 2 werelden. Een overzicht van de belangrijkste verschillen106:

OPEN SOFTWARE GESLOTEN SOFTWARE

Ontwikkeling gebeurt open en bloot via internet

Ontwikkeling gebeurt in strikte geheimhouding

Ontwikkelaars doen hun best om goede software te schrijven, aangezien iedereen hun code kan lezen

Tijdsdruk en financiële factoren zorgen ervoor dat de ontwikkelaar zich inspant om werkende software te maken

Soms ontbreekt een coherente lange Soms ontbreekt wel eens de

103 Bron: http://www.informationweek.com/news/software/linux/showArticle.jhtml?articleID=196901596 104 Meer info: http://www.ohloh.net/ 105 Bron: http://people.mech.kuleuven.be/~bruyninc/etos/informatie.html 106 Bron: http://people.mech.kuleuven.be/~bruyninc/etos/informatie.html en http://wisdomofganesh.blogspot.com/

Page 40: jeroenclerix-drupal-en-social-networking-sites

40 / 81

termijn visie luisterbereidheid naar de echte wensen van de gebruikers

Behoefte aan grote hoeveelheid geinteresseerde vrijwilligers

Behoefte aan voldoende kapitaal om betaalde programmeurs aan te trekken

Resultaats-verbintenissen bestaan niet

Resultaats-verbintenissen bestaan wel

Creativiteits-beperkingen bestaan niet

Creatviteits-beperkingen bestaan wel

Medewerking is gebaseerd op: - fierheid om zijn naam te zien verschijnen in software - idealisme en gemeenschapszin - noodzaak om probleem snel op te lossen, zonder afhankelijk te zijn van een leverancier - noodzaak van bedrijf om een ICT probleem op te lossen dat niet cruciaal is voor de competitieve bedrijfs-knowhow

Medewerking is gebaseerd op: - betaling - fierheid om met bepaald bedrijf of industrietak geassocieerd te worden

Een belangrijk deel van de ontwikkeling gebeurt of is gelinkt aan universiteiten

Er is een tekort aan ICT geschoolden

Doel is de vrije verspreiding van kwaliteitssoftware die voldoet aan de noden van de gebruikers

Doel is winst – en/of marktaandeel maximalisatie

Innovatie werkt unificerend: een nieuwe ontwikkeling kan zonder problemen overgenomen worden in andere programma’s

Innovatie werkt splitsend: een nieuwe ontwikkeling door een software bedrijf is een aansporing voor dit bedrijf om af te wijken van wat andere bedrijven aanbieden, met het oog op korte termijn winst

Verschillende goede projecten kunnen naast elkaar blijven bestaan, zelfs al bieden ze vrijwel dezelfde functionaliteit aan: het voortbestaan is immers enkel afhankelijk van de beschikbaarheid van voldoende vrijwilligers-mankracht, niet van voldoende ‘verkoop’. Dit leidt tot meer keuzevrijheid voor de consument

Het voortbestaan van projecten hangt af van hun commercieel succes, niet in de eerste plaats van hun technische kwaliteiten

Weinig afhankelijk van computer hardware en beheerssysteem software

Zeer afhankelijk van computer hardware en beheerssysteem software

Legt nadruk op modulariteit van software. Voordeel: kleinere programma’s, beter beheersbare complexiteit, makkelijker herbruikbaar in andere

Legt nadruk op integratie van software. Voordeel: gebruiker werkt maar met 1 programma (of familie van samenwerkende programma’s)

Page 41: jeroenclerix-drupal-en-social-networking-sites

41 / 81

projecten Nadeel: gebruiker moet zelf connecties tussen programma’s kennen

Nadeel: veel meer onderhevig aan storingen, omwille van hogere complexiteit

Software heeft geen eigenaar Voordeel: niemand kan de software uit roulatie brengen of afschermen met licenties of patenten Nadeel: wie vervolgen als software het laat afweten?

Software is exclusieve eigendom van een bedrijf of persoon

Geeft de gebruiker veel meer keuzevrijheid Voordeel: monopolies zijn onmogelijk Nadeel: gebruiker weet niet altijd goed wat kiezen

Wil de gebruiker vasthouden aan 1 leverancier. Voordel: twijfelaars hoeven nooit te kiezen Nadeel: monopolies zijn niet ondenkbaar

Gebruikt open standaarden Probeert gesloten standaarden op te leggen. Dit zijn per definitie geen standaarden, daar ze door 1 enkel bedrijf bepaald of veranderd worden

Stimuleert ontwikkelingen vanuit de basis

Bemoeilijkt uitbreidingen door gebruikers

Stimuleert maatschappijzin Stimuleert persoonlijke verrijking met economische motieven

Verantwoording wordt enkel afgelegd aan de gebruikers

Verantwoording wordt enkel afgelegd aan de aandeelhouders

Open Educatieve software van hoge kwaliteit bestaat nog (zo goed als) niet, omdat de hoofdleveranciers hiervan (leerkrachten) nog onvoldoende deelnemen aan de Open Software activiteiten

Educatieve software bestaat wel, maar blijft gesloten, en dus niet-aanpasbaar aan lokale noden

Vermindert het tekort aan ICT specialisten door: - vermindering van de noden (het wiel niet steeds opnieuw uitvinden) - verbetering van het aanbod: studenten en scholieren die met open software in contact komen doen meer kennis op van computers en programma’s dan hun collega’s die enkel voorgekauwde icoontjes leren aanklikken - vermindering van de “overhead”: er worden geen tijd en middelen verspild aan administratie (facturatie, licentiegegevensbank, betwistingen voor rechtbanken, oprichten van bedrijven, …)

Vergroot het tekort aan ICT specialisten omdat alles in volstrekte geheimhouding gebeurt, en overdracht van broncode naar andere bedrijven quasi onbestaande is

Installatie van een open besturingssysteem is meestal

Installatie van besturingssysteem is irrelevant, want meestal is dit

Page 42: jeroenclerix-drupal-en-social-networking-sites

42 / 81

moeilijk omdat er zich reeds een commercieel besturingssysteem op de computer bevindt. Installatie van open toepassingsprogrammatuur is meestal makkelijk, door de geavanceerde installatie tools, door de onmiddellijke beschikbaarheid via het Internet en door het ontbreken van alle beslommeringen met licenties

bijgeleverd met de computer Installatie van toepassingsprogrammatuur wordt vertraagd door licenties en leveringstermijnen

Verhoogt de veiligheid van computersystemen, omdat iedereen de gebruikte beveiligingen kan bestuderen en verbeteren, en omdat oplossingen voor problemen onmiddellijk beschikbaar zijn van zodra ze bestaan

Belemmert verbeteringen aan beveiliging, omdat de gebruikte methodes niet aan de kritiek van iedere mogelijke specialist worden blootgesteld

Bekendmaken van nieuwe ontwikkelingen (updates, bugs, …) gebeurt via het Internet, en heeft relatief weinig zichtbaarheid voor de gewone gebruiker

Reusachtige marketingbudgetten zijn beschikbaar, om eenzijdig positieve informatie te verspreiden. Tegenstrijdige opinies worden onderdrukt

Page 43: jeroenclerix-drupal-en-social-networking-sites

43 / 81

S O C I A L N E T W O R K I N G S I T E S Reeds bij het ontstaan van de eerste computernetwerken speculeerde men al over hoe het sociale aspect in netwerken naar voren zou kunnen komen. Arpanet, Usenet en ook BBS (Bulletin Board Services) bevatten reeds sporen van sociale interactiemogelijkheden. Toch is de term “social networking site” pas vele decennia later ontstaan nadat er een boom aan websites ontstond die de gebruiker in staat stelden te interageren met zijn of haar omgeving. Een “sociaal netwerk” kan van interne aard zijn, bijvoorbeeld voor privégebruikers binnen 1 bedrijf of groep. Daartegenover staan externe netwerken, waar iedereen zich op kan aansluiten. Deze laatste groep is erg aantrekkelijk voor adverteerders.

De voorlopers107 van de huidige Facebooks of Myspaces waren websites als Classmates.com (1995) en SixDegrees.com (1997). Beide sites bevatten reeds enkele interessante basisfuncties voor social networking:

gebruikers konden een profiel aanmaken, er kon gecommuniceerd worden met gebruikers in het netwerk (vriendenlijst), gebruikers konden doorzocht worden op basis van interessegebieden enz … Een decennium later is het aantal social networking sites bijna niet meer te overzien. Kern In de kern van bijna iedere social networking site zijn volgende componenten te onderscheiden:

• De gebruiker: wie ben ik, hoe zie ik er uit, wat doe ik? • Het netwerk van de gebruiker: wie zijn mijn vrienden of collega’s? • Activiteiten: wat doe ik met mijn vrienden binnen mijn netwerk?

Het gebruik van social networking sites is globaal gezien sterk geografisch108 gebonden. In de Verenigde Staten staat MySpace op nummer 1 in aantal leden, in vergelijking met bijvoorbeeld Live Journal in Rusland. In Nederland is Hyves, en in Frankrijk Skyblog het populairst. Een belangrijke moment in de geschiedenis van het internet was in 2005 toen MySpace in de maand juli meer page-views109 trok dan Google: een bewijs dat het gebruik van social networking sites in opmars was. Facebook, een andere social networking gigant, stelde in 2007 het gebruik van door de gebruiker gemaakte Facebook add-ons toe. De Facebook Markup Language110 (FBML) - die enkele typische HTML elementen bevat - liet gebruikers immers toe eigen Facebook widgets/gadgets te maken.

107 Bron: http://jcmc.indiana.edu/vol13/issue1/boyd.ellison.html 108 Bron: http://www.lemonde.fr/web/infog/0,47-0@2-651865,54-999097@51-999297,0.html 109 Bron: http://www.businessweek.com/technology/content/jul2005/tc20050719_5427_tc119.htm 110 Bron: http://wiki.developers.facebook.com/index.php/FBML

Page 44: jeroenclerix-drupal-en-social-networking-sites

44 / 81

De belangrijkste trend111 die bij social networking sites vandaag vast te stellen is, is dat men stilaan overgaat naar een vorm waar meer interoperabiliteit beschikbaar is. Deze trend is een logisch gevolg van de introductie van OpenID en OpenSocial. Big brother is wachting you

Toch roept het verschijnsel van social networking sites ook steeds vaker vragen op. Gebruikers genereren vaak persoonlijke informatie, of toch informatie die aan hun persoon te linken is. Steeds meer van deze informatie wordt opgeslagen op database servers, en is doorzoekbaar en bereikbaar voor de rest van de wereld. Ook andere gebruikers genereren informatie over jou. Ook steeds meer verhalen raken bekend waar sollicitanten gescreend worden aan de hand van de informatie die ze zelf beschikbaar hebben gesteld op het internet, of die beschikbaar is gemaakt door anderen in hun netwerk. Name searching, waarbij men letterlijk de naam van de sollicitant in een

zoekmachine typt, wordt dan ook aangevuld met name searching in social networking sites. Veel gebruikers112 staan er immers niet bij stil dat het roekeloos verstrekken van informatie schadelijk kan zijn. Facebook Apps: gevaar! Om te illustreren hoe Facebook omspringt met privacy hebben onderzoekers van de universiteit van Virginia vastgesteld113 dat 91% van 150 onderzochte populaire Facebook apps onnodig toegang verstrekken tot privé informatie van de gebruiker. Deze data worden opgeslagen, en worden interessant voor hergebruik, eventueel met het oog op adverteren.

Gebruikers worden door applicaties sluw gevraagd om hen toegang te geven tot hun privé gegevens. Zoniet kan je de applicatie niet gebruiken. Voorbeeld van Facebook Karma Poke applicatie:

111 Bron: http://en.wikipedia.org/wiki/Social_networking 112 Bron: http://reputationxchange.com/2007/12/28/managing-your-rep-online/ 113 Bron: http://www.cs.virginia.edu/felt/privacy/

Page 45: jeroenclerix-drupal-en-social-networking-sites

45 / 81

Privacy Ook de privacy114 van gebruikers van (social networking) sites wordt steeds vaker op de proef gesteld. Niet enkel is de informatie vaak beschikbaar voor anderen maar ook nuttig en herbruikbaar. Google en Facebook maken zich beiden ‘schuldig’ aan het hergebruik, of het strategisch inzetten van gebruikersinformatie voor commerciële doeleinden. Zo voegde Facebook in 2007 Beacon115 toe aan haar diensten, waarmee adverteerders gericht hun doelgroep kunnen bereiken. De discussie over deze problematiek zal in de toekomst wellicht enkel toenemen. Een belangrijke speler in de strijd tegen Google is Google Watch116.

114 Bron: http://www.cnet.com/8301-13739_1-9854409-46.html 115 Meer info: http://www.facebook.com/business/?beacon 116 Meer info: http://www.google-watch.org

Page 46: jeroenclerix-drupal-en-social-networking-sites

46 / 81

T R E N D : O P E N S O C I A L Ontstaan

Onder de slogan “het web is beter wanneer het sociaal is” lanceerde Google op 1 november 2007 het OpenSocial platform. “Het web is interessanter voor ontwikkelaars wanneer men applicaties kan ontwikkelen waarbij men eenvoudig kan interageren met vrienden en collega’s.” Meer en meer sociale applicaties zijn de voorbije jaren ontstaan, waardoor er ook een hele lijst van website specifieke API’s

ontstond, die allemaal bestudeerd en begrepen moesten worden door ontwikkelaars vooraleer men er iets mee kon doen. OpenSocial117 definieert een gemeenschappelijke API voor sociale applicaties op meerdere websites. Met standaard JavaScript en HTML kunnen ontwikkelaars applicaties schrijven die eenvoudig toegang geven tot netwerkcontacten binnen een sociaal netwerk, en bijvoorbeeld ook feeds updaten. Verschillende websites, een API Het voordeel van een gezamenlijke API is dat ontwikkelaars minder moeten leren om voor meerder websites te kunnen ontwikkelen. OpenSocial is momenteel ontwikkeld door een brede set van mensen uit de webgemeenschap. Het ultieme doel is dat iedere sociale website de API zou implementeren en zo zijn eigen sociale applicatie kan hosten. Op dit moment ondersteunen reeds veel sociale websites de OpenSocial API waaronder Engage.com, Friendster, hi5, Hyves, LinkedIn, MySpace, Ning, Orkut, Plaxo, … Hieronder volgt een grafiek die gebaseerd is op een veronderstelling118 uit begin 2007 die ondertussen is uitgekomen, want ook MySpace is OpenSocial gaan ondersteunen. De grafiek geeft het verschil aan in marktaandeel van deze 2 belangrijke spelers op het gebied van social networking.

117 Bron: http://code.google.com/apis/opensocial/ 118 Bron: http://venturebeat.com/2007/11/01/myspace-joining-googles-opensocial/

Page 47: jeroenclerix-drupal-en-social-networking-sites

47 / 81

(Google: bovenste lijn | Facebook: onderste lijn)

API documentatie De OpenSocial API119 is een set van gemeenschappelijke API’s voor het maken van sociale applicaties op verschillende websites. Op twee manieren kan er toegang gemaakt worden met de OpenSocial API:

• Client-side door het gebruik van de JavaScript API • Server-side door het gebruik van de RESTful data API

JavaScript API De JavaScript API geeft toegang tot 3 primaire gebieden van functionaliteit:

• Mensen: informatie over individuele gebruikers en hun relaties met anderen

• Activiteiten: de mogelijkheid tot het posten en updates bekijken van wat mensen aan het doen zijn

• Persistence: een eenvoudige key-value data opslag plaats om server-loze applicaties toe te staan

Wat kan men met deze JavaScript API doen:

• Applicaties maken zonder een eigen server te onderhouden • Applicaties maken die een server-side component bevatten • Het maken van volledig nieuwe applicaties • Het exposeren van bestaande webapplicaties in de context van

bestaande sociale websites

119 Bron: http://code.google.com/apis/opensocial/docs/index.html

Page 48: jeroenclerix-drupal-en-social-networking-sites

48 / 81

• Toevoegen van sociale mogelijkheden aan Google gadgets • Het schrijven van 1 applicatie die kan verschijnen in de context van

meerdere verschillende sociale netwerken De JavaScript API is ontwikkeld om de huidige standaarden op het gebied van webtechnologieën te ondersteunen:

• De API is verpakt als een set van mogelijkheden uit de opensocial * namespace

• De API stelt de ontwikkelaar in staat gebruik te maken van de standaard JavaScript programmeertechnieken en ook bibliotheken van derde partijen.

• De API bevat een asynchroon callback systeem voor de ondersteuning van AJAX interactiviteit.

RESTful API De RESTful Data API’s120 bieden aanvullende functionaliteit aan de JavaScript API, zodat er toegang kan verkregen worden tot mensen, activiteiten en data van de server. De RESTful Data API is ontwikkeld om de huidige webstandaarden te ondersteunen:

• Server interactie op basis van het RESTful AtomPub protocol • Authorisatie wordt afgehandeld door Oauth.

People and Friends data API De People and Friends data API stelt applicaties aan de client zijde in staat tot het bekijken (en updaten) van de gebruikersprofiel-informatie en relaties. De client applicatie kan in dat geval requests sturen om lijsten van een gebruiker zijn vrienden te bekijken, en inhoud uit een bestaand profiel op te vragen. Enkele acties die men met deze API kan uitvoeren:

• Een gestructureerde versie opvragen van een gebruikersprofiel in een OpenSocial dienst

• Een lijst opvragen van het netwerk van een gebruiker in een OpenSocial dienst

• Het opvolgen van netwerk connecties om gedetailleerde profielen te bekijken in een OpenSocial dienst

Activities API De Activities API stelt applicaties aan de client zijde in staat tot het bekijken en publiceren van acties in het OpenSocial platform. De client applicatie kan

120 Bron: http://code.google.com/apis/opensocial/docs/dataapis.html

Page 49: jeroenclerix-drupal-en-social-networking-sites

49 / 81

in dat geval de API gebruiken om nieuwe posts aan te maken, bestaande posts te bekijken in lijsten en te bewerken. Enkele acties die men met deze API kan uitvoeren:

• Het publiceren van informatie over de acties van de gebruiker, zoals bijvoorbeeld wanneer een gebruiker een video uploadt naar een website

• Het maken van een desktop applicatie of plugin die gebruikers in staat stelt te zien wat hun netwerk aan het doen is in realtime

Persistence API De Persistence API stelt applicaties aan de client zijde in staat tot het bekijken of updaten van key/value inhoud voor hun applicaties. De applicatie kan in dat geval inhoud bewerken of verwijderen van een bestaande applicatie, gebruiker, of gadget instance. Enkele acties die men met deze API kan uitvoeren:

• Data globaal beschikbaar maken voor al de applicatie gadgets, en deze laten hosten door Google

• Het pushen van inhoud die specifiek te linken is aan de gebruikers van je gadgets op een eigen server

• Het inlezen van data die geschreven is door gebruikers, om later te analyseren

Nota: De RESTful data API’s worden momenteel (juni 2008) nog verder ontwikkeld121 en besproken binnen de OpenSocial gemeenschap.

121 Bron: http://code.google.com/apis/opensocial/docs/dataapis.html

Page 50: jeroenclerix-drupal-en-social-networking-sites

50 / 81

OpenSocial API Ontwikkelaars Gids De OpenSocial API Developers Guide122 is gemaakt om ontwikkelaars te helpen bij het bouwen van OpenSocial applicaties. De gids is er gekomen voor ontwikkelaars die feeling hebben met JavaScript en de Google Gadgets API, maar bevat ook links naar andere bronnen. Het document is opgesteld voor de laatste versie van de OpenSocial API: versie v0.7.d Onderwerpen in de gids:

• Het schrijven van een sociale applicatie • Het importeren van de OpenSocial bibliotheek • Toegang verkrijgen tot mensen en profielen

o Het verkrijgen van basisinformatie o Complete code voor lijsten van vrienden

• Werken met persistente data • Het posten van activiteiten • Interageren met de Container

o Navigeren van een view naar de andere o Het uitvoeren van query’s op de omgeving o Het includen van verschillende inhoudssecties

• Het aan elkaar plakken van remote content o Caching o XML voorbeeld o JSON voorbeeld o Het gebruik van de POST methode o Het opzetten van een autorisatie-type

• Permissie controle • Meer leren

OpenSocial API specificatie De OpenSocial API specificatie123 is ontwikkeld om programmeurs te hulp te staan bij het ontwikkelen van hun sociale applicatie. Het document beschrijft de concepten en principes die gebruikt worden in de OpenSocial JavaScript API’s. Het is complementair aan de JavaScript API Reference, die vooral over de specifieke methoden en parameters gaat. Onderwerpen:

• Overview • Overeenstemming met standaarden • Achtergrond

o Key concepts Mensen

122 Bron: http://code.google.com/apis/opensocial/docs/0.7/devguide.html 123 Bron: http://code.google.com/apis/opensocial/docs/0.7/spec.html

Page 51: jeroenclerix-drupal-en-social-networking-sites

51 / 81

Relaties Activiteiten Persistence Views

o API patronen Het maken van requests Het ontdekken van mogelijkheden Actie requests en permissies Profiel velden Het verzenden van inhoud naar remote servers

o Het gebruik van de API reference Virtueel typen Parameter maps

OpenSocial API referentie De OpenSocial JavaScript API Reference124 bevat 2 naamruimten:

• opensocial.* • gadgets.*

Deze naamruimten bevatten volgende componenten:

• opensocial o Activity

Field Media item

• Field • Type

o Address Field

o Body Type Field

o Collection o CreateActivityPriority o DataRequest

FilterType Groep PeopleRequestFields PersonID SortOrder

o DataResponse o E-mail

Field o Enum

Drinker Gender Smoker

o Environment

124 Bron: http://code.google.com/apis/opensocial/docs/0.7/reference/

Page 52: jeroenclerix-drupal-en-social-networking-sites

52 / 81

Object Type o Message

Field Type

o Name Field

o Orgnisation Field

o Permission o Person

Field o Phone

Field o ResponseItem

Error o Url

Field • Gadgets (core)

o Prefs o Io

AuthorizationType ContentType MethodType RequestParameters

o Json o Util

• Gadgets (feature-specific) o MiniMessage o Tab o TabSet o Flash o Rpc o Views

View ViewType

o Skins Property

o Window

Page 53: jeroenclerix-drupal-en-social-networking-sites

53 / 81

Voorbeeld Een voorbeeld van de integratie van LinkedIn informatie in Gmail, het e-mail systeem van Google, wellicht via de OpenSocial API. Deze nieuwe feature werd in April 2008 door Gmail toegevoegd:

Langs het (van:) email adres verschijnt een klein “info” knopje. Als men hier op gaat staan met de muisaanwijzer, verschijnt er een informatievenster met gegevens van de verzender. In het voorbeeld verschijnen een aantal gegevens gerelateerd aan Liesbeth Huybrechts, die zij verstrekt heeft op haar LinkedIn account, waaronder:

• Naam: Liesbeth Huybrechts • Functie: Researcher • Werkgever: Catholic University Leuven • Werkgever 2: Media and Design Academy • Werkplaats: Brussels Area • Land: Belgium • Aantal connecties op LinkedIn: 79 • Graad van connectie met ontvanger: 1ste graad

Page 54: jeroenclerix-drupal-en-social-networking-sites

54 / 81

C O N C L U S I E S

Vooronderzoek

• Drupal is een van de sterkste open source content management platformen die momenteel beschikbaar zijn ter wereld

• Er worden steeds meer Drupal websites ontwikkeld, dit is onder andere af te leiden van de activiteit op Drupal.org en talloze bekende voorbeelden

• Social networking sites zijn tegenwoordig zeker populair • Steeds meer gebruikers genereren inhoud op social networking sites • Enkele belangrijke trends zoals Microformats, sociale applicaties, en

OpenSocial raken het onderwerp van deze scriptie • Steeds meer mensen stellen ook vragen bij social networking sites,

onder andere privacy wordt als mogelijk probleem omschreven

Technisch onderzoek huidge modules

• 19 bijgedragen modules (core + contributies) genereren vandaag al inhoud van social networking sites in Drupal

• De meerderheid van deze modules zijn 1 op 1 relaties: 1 module zorgt voor integratie van inhoud van 1 social networking site

• De meerderheid van deze modules hebben betrekking op gebruikers activiteiten: Flickr foto uploaden, YouTube film uploaden, nieuwe Twitter of blog post doen, …

• Er is nog een ruime markt voor modules die iets willen doen met gebruikersinhoud van de huidige niet-integreerbare social networking sites in Drupal, vooral op het gebied van de gebruiker zelf

Trends onderzoek

• Het lanceren van het Facebook Developer Platform voor het ontwikkelen van gadgets en vergroten van de gebruikersgemeenschap, was een meesterzet van Facebook

• Google brengt met OpenSocial tegengewicht en wil op termijn de nieuwe standaard worden voor het ontwikkelen van sociale applicaties

• Beide bedrijven zijn grote concurrenten op het gebied van data controle en advertisement

• OpenSocial wordt sinds haar release door steeds meer social networking sites of applicaties ondersteund, met het oog op latere integratie

• De OpenSocial Foundation, opgericht in maart 2008 door zwaargewichten als Google, Yahoo! en MySpace, wordt algemeen beschouwd als de bevestiging dat de OpenSocial standaard in de toekomst een gevestigde waarde zal worden binnen het domein van sociale applicaties

Page 55: jeroenclerix-drupal-en-social-networking-sites

55 / 81

• Open source software en het gebruik ervan is in opmars • Microformats worden vandaag nog niet door browsers ondersteund,

maar bieden een nieuwe kijk op het structureren van data op basis van meta-data. Wordt verwacht125 in FireFox 3 en Internet Explorer 8.

Drupal en OpenSocial

• De interesse van Drupal voor OpenSocial is uitgesproken door verschillende community leden

• Een OpenSocial projectpagina, inclusief enkele gebruikers die interesse tonen voor het ontwikkelen van een OpenSocial module, is bekend

• OpenSocial kan op verschillende manieren binnen Drupal geïmplementeerd worden, maar beperking tot enkele functies per module is aangeraden, om zeker geen bestaande functies te dupliceren

• Een implementatie van OpenSocial voor Drupal op het niveau van gebruikersprofiel-informatie is gewenst, en vormt een nieuwe functie binnen het Drupal project

125 Bron: http://en.wikipedia.org/wiki/Microformats

Page 56: jeroenclerix-drupal-en-social-networking-sites

56 / 81

P R O J E C T

Mijn afstudeerproject126 biedt een nieuwe bijdrage aan het Drupal project en wordt officieel gelanceerd onder de GNU General Public Licence. Het integreert de OpenSocial RESTful API – met in het bijzonder de People and Friens data API - in Drupal. Dit maakt data transport naar Drupal mogelijk via een server – server protocol127. De People and Friends data API maakt onder andere mogelijk128 dat:

• Men een gestructureerde versie van een gebruiker zijn/haar profiel kan opvragen

• Men een lijst van een gebruiker zijn vrienden kan opvragen • Men van deze vrienden gedetailleerde profielinformatie kan opvragen

Een belangrijke wetenswaardigheid is dat de RESTful data API momenteel nog niet officieel gelanceerd is, maar wel de belangrijkste huidige specificaties129 zijn vrijgegeven. Op basis van deze specificaties is het mogelijk een realistische inschatting te maken van wat deze API uiteindelijk zal worden. Op 28 mei 2008 - in de eindfase van dit thesis traject – werd versie 0.8 vrijgegeven. Deze specificatie-update bevatte een grote vooruitgang, maar is momenteel (nog) niet volledig geïmplementeerd in dit project. Omdat er op dit moment nog geen enkele social networking site de RESTful API ondersteunt is het ook niet mogelijk om nu al live data te integreren. Om dit ongemak op te lossen werd met behulp van Casco130, een PHP developers framework, een mock131 server omgeving ingericht waarbij een social networking site gesimuleerd wordt, waardoor data transmissie en module testen mogelijk wordt.

126 Meer info: http://drupal.org/project/opensocial-container 127 Meer info: http://nl.wikipedia.org/wiki/Protocol 128 Bron: http://code.google.com/apis/opensocial/docs/dataapis.html 129 Bron: http://sites.google.com/a/opensocial.org/opensocial/Technical-Resources/opensocial-specification----implementation-version-08/restful-api-specification 130 Meer info: http://www.ohloh.net/projects/casco 131 Meer info: http://en.wikipedia.org/wiki/Mock_object

Page 57: jeroenclerix-drupal-en-social-networking-sites

57 / 81

Kern Doordat steeds meer internetgebruikers inhoud leveren aan het web is het interessant na te denken hoe deze inhoud (her)gebruikt kan worden. Een aantal van deze door gebruikers gegenereerde inhoud is persoonsgebonden en bevat vaak profielinformatie. Deze informatie is te linken aan 1 belangrijke component van social networking: de gebruiker. Het idee van dit project is dat Drupal eindgebruikers profielinformatie kunnen laten genereren op basis van de informatie die door de gebruiker verstrekt is binnen een of meerdere social networking sites. Het is een weloverwogen keuze me met dit project te concentreren op het binnenhalen van profielgegevens, daar het niet de bedoeling mag zijn tegen de beginselen van Drupal in te gaan (duplicatie). In maart 2008 werd bijvoorbeeld een Drupal module bijgedragen waarbij vooral activiteiten - informatie van social networking sites binnen gehaald kunnen worden in Drupal. Dit gebeurt in de vorm van gebruikers posts via een rss of atom feed. Deze module heet Activity Stream132, en werkt voorlopig (nog) niet met de OpenSocial API.

Doelstellingen

• Als eerste de OpenSocial RESTful data API (People and Friends API) mogelijk maken voor Drupal (versie 5)

• De toekomstige sign-on procedure voor Drupal website eindgebruikers vereenvoudigen

• Met dit project de weg openen voor verdere uitbreidingen met betrekking tot de OpenSocial API binnen Drupal

• Als project, een voorbeeldfunctie voor andere open source ontwikkelaars fungeren binnen de globale open source en OpenSocial wereld

Het moet duidelijk zijn dat dit project mijn afstudeerproject overstijgt, daar het integreren van echte data uit social networking sites vandaag nog niet mogelijk is.

Publieke opinie Een aantal ontwikkelaars lijkt het er mee eens te zijn dat de OpenSocial API van Google een stap is in de goede richting133 voor ontwikkelaars en eindgebruikers van sociale applicaties. De snelheid van adoptie door grote spelers als bijvoorbeeld MySpace, Engage, Friendster, Orkut, LinkedIn in de beginfase na release was indrukwekkend. Ondertussen, ongeveer een half jaar na lancering lijkt het wel dat OpenSocial goed op weg is de nieuwe standaard te worden voor communicatie tussen sociale applicaties.

132 Meer info: http://drupal.org/project/activitystream 133 Bron: http://googleblog.blogspot.com/2007/11/opensocial-makes-web-better.html

Page 58: jeroenclerix-drupal-en-social-networking-sites

58 / 81

Het ontstaan van de OpenSocial Foundation134 in maart 2008, gevoed door zwaargewichten als Google, MySpace en Yahoo!, bevordert de verdere ontwikkeling en bevestiging van OpenSocial als potentiële standaard.

134 Bron: http://arstechnica.com/news.ars/post/20080325-opensocial-foundation-launches-with-google-yahoo-myspace.html

Page 59: jeroenclerix-drupal-en-social-networking-sites

59 / 81

Interesse vanuit Drupal Sinds de OpenSocial release op 1 november 2007 heeft de Drupal community interesse135 getoond voor OpenSocial als product, als ook voor een module die OpenSocial mogelijk maakt voor Drupal. Begin 2008 werd dan ook de OpenSocial project pagina136 toegevoegd aan Drupal door gebruiker FirmIdea, zodat deze als startplek kon fungeren voor ontwikkelaars met Interesse voor OpenSocial. Toch is er op 6 maanden tijd nog geen bijdrage geleverd binnen dit Drupal project. Ook andere gebruikers, waaronder Slantview, [email protected], Chatcharin en Sugree gingen reeds de dialoog137 aan over OpenSocial binnen Drupal.org, maar helaas tot vandaag zonder kenbaar resultaat. Het bestuderen van de OpenSocial API en het beheersen van de Drupal API zijn arbeidsintensieve bezigheden. Dit is echter minimumkennis waarover de ontwikkelaar moet beschikken alvorens een module te kunnen ontwikkelen die OpenSocial mogelijk maakt binnen Drupal. De OpenSocial API is overigens goed en breed gedocumenteerd.

Project op drupal.org Ieder projectvoorstel dient eerst goedgekeurd te worden door een Drupal administrator, alvorens het toegevoegd kan worden tot de project repository. Mijn voorstel en motivatie voor een nieuwe bijdrage en CVS account zijn goedgekeurd. Het project is terug te vinden, en op te volgen op: http://drupal.org/project/opensocial-container

135 Bron: http://drupal.org/node/188731 136 Bron: http://drupal.org/project/opensocial 137 Bron: http://groups.drupal.org/node/9540

Page 60: jeroenclerix-drupal-en-social-networking-sites

60 / 81

DUG Brussel Op maandag 19 mei 2008 werd in Brussel de tweede Belgische Drupal User Group138 georganiseerd. Het doel van de organisatoren was een fysieke ontmoetingsplek te vormen voor ontwikkelaars, kenners of gewone geïnteresseerden. Het thema van de avond was Drupal 6: de laatste release van het Drupal Project. Roel de Meester, hier op de foto, gaf een interessante presentatie over de nieuwigheden aan Drupal 6. Omdat de doelgroep divers was (onder andere ondernemers, IT’ers, studenten, geïnteresseerden)

werd er ook ingegaan op basis kenmerken en componenten van Drupal. Onder andere bij de Taxonomy, CCK en Views modules werd langer stilgestaan. Persoonlijk heb ik deze D.U.G. als een fijne gelegenheid ervaren om andere Drupal gebruikers of ontwikkelaars te leren kennen. Deze ontmoeting bleek ook een geschikte plek om ook mijn project onder de schijnwerpers te brengen. Meer foto’s van de Drupal User Group zijn terug te vinden op Flickr: http://www.flickr.com/photos/develoop/sets/72157605153531652/

138 Bron: http://www.drupal.be/node/1267

Page 61: jeroenclerix-drupal-en-social-networking-sites

61 / 81

Partners

Solide BV139 is gericht op advisering over en ontwikkeling van interactieve webtoepassingen. Het cliënteel bestaat voornamelijk uit kennisintensieve organisaties en bedrijven (profit en non-profit) binnen en buiten Limburg. Solide is gespecialiseerd in advisering over en het

gebruik van open source software en toepassing van open standaarden. Solide is vanaf het begin graag als partner in mijn onderzoek opgetreden, daar de mashup van Drupal met sociale software zeker een interessante piste is die verder onderzocht diende te worden. Ook bij Solide worden op regelmatige basis social networking sites of communities gebouwd op basis van Drupal. De relevantie en de interesse voor een mogelijke implementatie van OpenSocial voor Drupal lag voor hen dan ook voor de hand. Het partnerschap heeft gedurende verschillende maanden effect gehad op:

• Onderzoek: door het maken van aanbevelingen, het sturen van het onderzoek in de juiste richting, en helpen afbakenen van de onderzoeksvraag, het aanbevelen van interessante websites

• Ondersteuning: door het aanbieden van een real-life omgeving met concrete Drupal projecten, algemene ondersteuning in het leren van Drupal, advies over open source software en open standaarden

• Realisatie: door het aanbieden van expertise op het gebied van de technische realisatie van Drupal modules, en algemene technische ondersteuning

Contactpersoon:

• Dhr. Eric Sol • Solide BV • Oxfordlaan 70 • Maastricht, Nederland • http://www.solide-ict.nl

Enkele voorbeelden van websites140 in het verleden gelanceerd door Solide:

• Earma.org • Nvon.nl • Zoekwww.be • Psychonaut.com

139 Bron: http://www.solide-ict.nl 140 Bron: http://www.solide-ict.nl/portfolio

Page 62: jeroenclerix-drupal-en-social-networking-sites

62 / 81

Technische omschrijving Met dit project kunnen eindgebruikers van Drupal websites in de toekomst profielgegevens laten genereren op basis van de door hun gegenereerde inhoud op social networking sites. Als Drupal website gebruiker kan men dan door middel van autorisatie - door het ingeven van de unieke gebruikers id - de link leggen met zijn profiel op Hyves, MySpace, Facebook, ... Afhankelijk van zijn voorkeur kan de gebruiker er voor kiezen de profiel informatie 1 keer te importeren, en dan eventueel manueel bij te werken, of er voor kiezen om de data automatisch te laten bijwerken. De mate van up to date data is te bepalen door de website administrator. Afhankelijkheid De OpenSocial Container module is afhankelijk van de Drupal Profile module want hiermee worden de velden bepaald die in het Drupal gebruikers profiel verschijnen. Doordat dit een core module is beschikt iedere basis Drupal installatie over deze functie. Daarnaast wordt er aangeraden een cron module in te zetten voor het manueel instellen van cron taken in Drupal (voor het updaten van live profielinformatie). Hierbij wil ik graag Poormanscron141 aanraden. Op deze manier kan de website administrator cron instellen tot op de minuut. Profiel velden Op basis van de beschikbare RESTful API specificatie (0.7) bij aanvang van dit project werd er voor gekozen enkele typische profielvelden te gebruiken zoals Naam, Adres, Locatie, Postcode, ... om de functionaliteit aan te tonen. Ondertussen werd in de 0.8 specificatie van 27 mei 2008 al verteld welke velden en veldtypes mogelijk beschikbaar zouden worden gesteld om aan de gebruiker component te koppelen. Enkele voorbeelden142 zijn: name, nickname, heroes, music, movies, religion, turn-off’s, tv-shows, url’s, ...

141 Bron: http://drupal.org/project/Poormanscron 142 Bron: Bron: http://sites.google.com/a/opensocial.org/opensocial/Technical-Resources/opensocial-specification----implementation-version-08/restful-api-specification

Page 63: jeroenclerix-drupal-en-social-networking-sites

63 / 81

Module: bestanden

Drupal module Voor het bouwen van de Drupal project module werden alle benodigde stappen doorlopen. De module is momenteel ook al beschikbaar met een ‘po’ map en 1 Nederlandstalige vertaling.

In bijlage zijn de bronbestanden terug te vinden van deze module.

Mock social networking site

De Mock server, die hier gebruikt wordt voor het aanleveren van data in plaats van een social networking site, geeft live profiel informatie in XML formaat. De bouw van deze server werd gedaan met behulp van Casco, een framework voor ‘Rapid Application Development’ dat ontwikkeld wordt bij Solide.

Ook Casco143 is een open source project, waarvan de eerste officiële release in de zomer van 2008 wordt verwacht. De broncode is vanaf dat moment vrij beschikbaar.

143 http://www.ohloh.net/projects/casco

Page 64: jeroenclerix-drupal-en-social-networking-sites

64 / 81

Use cases

Use case: stappen voor Drupal website Administrator

1. De module downloaden op http://drupal.org/project/opensocial-container

2. De module uitpakken en onder de Drupal mappenstructuur plaatsen (onder modules/)

3. De module aanzetten via admin/build/modules

4. De Drupal core profile module aanzetten

5. Via de Profile instellingen een aantal gebruikersprofiel velden aanmaken, en deze eventueel indelen in groepen (vb. persoonlijk, zakelijk, vrije tijd, ...)

6. De aangemaakte profielvelden verbinden (mappen) met beschikbare velden uit bronnen (de uiteindelijke social networking sites)

Page 65: jeroenclerix-drupal-en-social-networking-sites

65 / 81

7. Rollen en permissies configureren via admin/user/access (geregistreerde gebruikers toegang geven tot gebruikersprofielen)

8. Naar wens een cron module downloaden en configureren (om de frequentie van live data updates aan te geven)

Page 66: jeroenclerix-drupal-en-social-networking-sites

66 / 81

Use case: stappen voor Drupal eindgebruiker

1. De gebruiker is lid van een of meerdere social networking sites en heeft gegevens over zichzelf gepubliceerd op het gebruikersprofiel. In de toekomst - en op sommige websites kan dit immers vandaag al – zullen sites met een OpenSocial integratie gebruikers laten opgeven welke informatie publiek beschikbaar wordt gesteld (“Open Social”).

Page 67: jeroenclerix-drupal-en-social-networking-sites

67 / 81

2. De gebruiker wordt lid of is lid (geregistreerde gebruiker) van een Drupal website

3. Bij de nieuwe registratie of het bewerken van zijn/haar account:

a. De gebruiker kan er voor kiezen de beschikbaar gestelde profiel velden manueel of automatisch in te laten vullen

b. Indien de gebruiker publieke profielen heeft op social networking sites kan hij/zij er voor kiezen de velden te laten invullen en automatisch te laten bijwerken op basis van de ingevulde data in Hyves, Myspace, LinkedIn, ...

c. De gebruiker kan in de toekomst van verschillende bronnen profielinformatie binnenhalen

d. De gebruiker kan aangeven de informatie een keer binnen te halen of deze automatisch te laten bijwerken

4. Op basis van cron144 taken zal Drupal de gegevens automatisch bijwerken.

5. De gebruiker kan achteraf steeds de instellingen wijzigen. Nota: Bij de officiële release van het project in juni 2008 zal er enkel gebruik gemaakt kunnen worden van het streamen van gegevens vanuit de OpenSocial Mock Server. Later zullen er social networking sites toegevoegd worden aan de module.

144 Meer info: http://en.wikipedia.org/wiki/Cron

Page 68: jeroenclerix-drupal-en-social-networking-sites

68 / 81

Demonstratie

Op www.opensocial-container.net kan men terecht voor een demonstratie van de huidige module functionaliteit.

De eerste reacties145 - vlak voor het afsluiten van dit document - op de module en demonstratie website zijn positief. Onder andere Robert Douglas van Acquia – het bedrijf van Drupal stichter Dries Buytaert - en Roel de Meester van Krimson hebben nu al hulp en assistentie aangeboden bij het vervolg traject van dit project.

145 Meer info: zie bijlage 3.8

Page 69: jeroenclerix-drupal-en-social-networking-sites

69 / 81

B R O N N E N

Boeken

• Pro Drupal Development

2007, John K. VanDyk en Matt Westgate

http://www.drupalbook.com

• Participative Web and User-created Content: Web 2.0, Wikis and Social Networking

2007, Graham Vickery en Sacha Wunsch – Vincent

http://books.google.com/books?id=q7PNRZvqhkwC&printsec=frontcover&dq=social+networking&ei=h14tSNquMozizASC8JjOAw&hl=nl&sig=NUWqBhfxw2-jmMu49RaPTCYpbK0

• Career building through Social Networking

2007, Alex Goetchius

http://books.google.com/books?id=yV9r5k2Tt5UC&pg=PA4&dq=social+networking&lr=&as_brr=0&ei=E2YtSKrqJ6DsygSt08jXAw&hl=nl&sig=d3XE2iqzHf3yqsSBDxJrSyjRcM8#PPT1,M1

Page 70: jeroenclerix-drupal-en-social-networking-sites

70 / 81

• Social Capital: Theory and Research

2007, Nan Lin, Karen S. Cook, Robert S. Burt

http://books.google.com/books?id=VSqg1rvjz3EC&printsec=frontcover&dq=social+network&lr=&as_brr=0&ei=v2ctSNvyK4quygS1hrDOAw&hl=nl&sig=uPDuZS-PIJ8urhuRiUiSgPLpEY4#PPR5,M1

• Facebook: The missing manuaal

2007, Emily A. Vander Veer

http://books.google.com/books?id=B022r2Cic44C&printsec=frontcover&dq=facebook&lr=&as_brr=0&ei=gGktSL7lOJDAygS78unMAw&hl=nl&sig=pi9xlNNPKVpkzNLkL0tTuIRNtS4#PPP1,M1

• Unleashing Web 2.0: from concepts to creativity

2007, Gottfried Vossen en Stephan Hagemann

http://www.amazon.com/Unleashing-Web-2-0-Concepts-Creativity/dp/0123740347

Gidsen

• Aan de slag gaan met Drupal 5 Drupal community http://drupal.org/files/getting-started_2.pdf

Websites

Begrippen

Page 71: jeroenclerix-drupal-en-social-networking-sites

71 / 81

• Definitie API http://nl.wikipedia.org/wiki/Application_Programming_Interface

• Definitie GNU General Public Licence http://nl.wikipedia.org/wiki/GNU_General_Public_License

• Definitie Hyves http://nl.wikipedia.org/wiki/Hyves

• Definitie LinkedIn

http://nl.wikipedia.org/wiki/LinkedIn

• Definite Microformat http://nl.wikipedia.org/wiki/Microformat

• Definite OpenID http://nl.wikipedia.org/wiki/OpenID

• Definitie Open Source http://nl.wikipedia.org/wiki/Open-source

• Definitie Sociaal http://nl.wikipedia.org/wiki/Sociaal

• Definitie Sociaal kapitaal http://nl.wikipedia.org/wiki/Sociaal_kapitaal

• Definitie Sociale Software

http://nl.wikipedia.org/wiki/Sociale_software

• Definitie Web 2.0 http://nl.wikipedia.org/wiki/Web_2.0

• Definitie MySpace http://en.wikipedia.org/wiki/Myspace

• Definitie Facebook http://en.wikipedia.org/wiki/Facebook

• Definitie Benchmark http://nl.wikipedia.org/wiki/Benchmark

• Definitie Mashup http://en.wikipedia.org/wiki/Mashup

Drupal

• Drupal.org (Mondiale community) http://www.drupal.org

Page 72: jeroenclerix-drupal-en-social-networking-sites

72 / 81

• Drupal.be (Nederlandstalige community) http://www.drupal.be

• Wat is Drupal http://drupal.org/about

• Drupal Groepen http://groups.drupal.org

• Drupal Groep: Social Networking Sites http://groups.drupal.org/social-networking-sites

• Drupal Groep: Open Social http://groups.drupal.org/opensocial

• Drupal Project: Open Social http://drupal.org/project/opensocial

• Drupal: Drupal activiteit http://groups.drupal.org/node/1980

• Drupal: website van stichter http://www.buytaert.net

• Drupal: verzameling van websites http://www.drupalsites.net

• Drupal community: evoluties http://groups.drupal.org/node/1980

• Drupal: geschiedenis http://drupal.org/node/769

• Drupal wint Webware Award 2008 http://drupal.org/Drupal-wins-2008-webware-100-award

• The business of start-ups is business: aanstelling Dries Buytaert http://www.businessweek.com/technology/content/apr2008/tc20080417_388737.htm?chan=technology_special+report+--+best+young+entrepreneurs_best+young+entrepreneurs

• Presentatie/slides Tom Jacobs en Roel de Meester http://www.slideshare.net/develoop/general-drupal-presentation-in-dutch

Drupal Modules

• Overzicht Drupal contributies http://drupal.org/handbook/config/contribmodules

Page 73: jeroenclerix-drupal-en-social-networking-sites

73 / 81

• Lijst van Drupal contributie modules http://drupal.org/project/modules

• Lijst van Drupal contributie modules, gerangschikt op naam http://drupal.org/project/modules/name

Drupal: ontwikkelen voor Drupal

• Gids voor contributors http://drupal.org/contributors-guide

• Doxygen formaat conventies http://drupal.org/node/1354

• Bijdragen aan de ontwikkeling http://drupal.org/node/10259

• Standaarden voor schrijven van code http://drupal.org/coding-standards

• Schrijven van veilige code http://drupal.org/writing-secure-code

• CVS http://drupal.org/handbook/cvs

• Patches http://drupal.org/patch

• Toepassen van patches http://drupal.org/node/60108

• Drupal API’s

http://drupal.org/node/326

• Drupal 5 API overzicht http://api.drupal.org/api/5

• Krachten bundelen met anderen

http://drupal.org/node/23789

• Module onwikkeling gids http://drupal.org/node/508

• Updaten van modules http://drupal.org/update/modules

• Gids voor vertalingen + GNU Gettext http://drupal.org/translators

Page 74: jeroenclerix-drupal-en-social-networking-sites

74 / 81

• Installatie profiel configureren http://drupal.org/node/159730

• Test suite: hoe tests schrijven voor een module http://drupal.org/node/11521

• Benchmarking van Drupal http://drupal.org/node/79237

• Het opzetten van een ontwikkel omgeving http://drupal.org/node/147786

• Ontwikkelings tools http://drupal.org/node/147789

• Het opzetten van een locale server http://drupal.org/node/157602

• Startpagina Drupal API http://api.drupal.org

• CVS en CVS accounts http://drupal.org/cvs-account

• CVS Handboek http://drupal.org/handbook/cvs

• Inschrijven voor een CVS account http://drupal.org/node/59

• Het onderhouden van een project op Drupal.org http://drupal.org/node/7765

• Drupal contributions repository http://drupal.org/node/321

• Drupal contributions CVS repository http://cvs.drupal.org/viewvc.py/drupal/contributions/

• Drupal: vertalingen http://drupal.org/translators

• Drupal: vertalingen downloaden http://drupal.org/project/Translations

• Drupal: vertalingen voor Drupal core http://drupal.org/project/drupal-pot

• Drupal vs OOP http://api.drupal.org/api/file/developer/topics/oop.html/5

Page 75: jeroenclerix-drupal-en-social-networking-sites

75 / 81

Standaarden

• Pear Standaarden http://pear.php.net/manual/en/standards.php

• World Wide Web Consortium http://www.w3c.org

• PHP http://www.php.net

Software

• Subversion versie controle http://subversion.tigris.org

• XAMPP http://www.apachefriends.org/en.xampp.html

• WAMP http://www.en.wampserver.com

• MAMP http://www.mamp.info/en/index.php

Social networking sites

• Facebook http://www.facebook.com

• MySpace http://www.myspace.com

• LinkedIn http://www.linkedin.com

• Hyves http://www.hyves.nl

• Flickr http://www.flickr.com

• Definitie Social network http://en.wikipedia.org/wiki/Social_network

• Definitie Social networking http://en.wikipedia.org/wiki/Social_networking

Page 76: jeroenclerix-drupal-en-social-networking-sites

76 / 81

• Wikipedia: lijst van social networking sites http://en.wikipedia.org/wiki/List_of_social_netwoking_websites

• Mashable: lijst van social networking sites http://mashable.com/2007/10/23/social-networking-god/

• Frankwatching:de beste social networking sites http://www.frankwatching.com/archive/2007/01/04/de-beste-social-sites/

• Traffikd.com: lijst van social media en social networking sites http://traffikd.com/social-media-websites/

• Definitie FBML / Facebook Developers Wiki

http://wiki.developers.facebook.com/index.php/FBML

• Unavoidable ethical questions about social networking http://www.scu.edu/ethics/publications/submitted/social-networking.html

• Facebook en Beacon, een privacy nachtmerrie?

http://gigaom.com/2007/11/06/facebook-beacon-privacy-issues/

• Advertisement networks for Facebook & MySpace http://www.web-strategist.com/blog/2007/11/06/myspace-and-facebook-launch-new-advertising-products-why-hyper-targeting-social-ads-and-rise-of-the-fan-sumer%e2%80%9d-matter-to-brands/

• Geografische spreiding gebruik van social networking sites

http://www.lemonde.fr/web/infog/0,47-0@2-651865,54-999097@51-999297,0.html

• Myspace meer pageviews dan Google

http://www.businessweek.com/technology/content/jul2005/tc20050719_5427_tc119.htm

• Top 10 verhalen van Facebook 2007

http://www.insidefacebook.com/2007/12/18/top-10-facebook-stories-of-2007/

• Privacy protection for Social Networking API’s

http://www.cs.virginia.edu/felt/privacy/

OpenSocial

• OpenSocial Algemeen http://sites.google.com/a/opensocial.org/opensocial/Home

• OpenSocial http://code.google.com/apis/opensocial/

Page 77: jeroenclerix-drupal-en-social-networking-sites

77 / 81

• OpenSocial Documentatie http://code.google.com/apis/opensocial/docs/index.html

• OpenSocial API gebruikers http://code.google.com/apis/opensocial/partners.html

• OpenSocial mashup voorbeelden http://opensocial-examples.googlemashups.com

• OpenSocial: FAQ – Vaak gestelde vragen http://code.google.com/apis/opensocial/faq.html

• OpenSocial: bouwen van sociale applicaties http://code.google.com/apis/opensocial/gettingstarted.html

• OpenSocial: API ontwikkelaars gids http://code.google.com/apis/opensocial/docs/0.7/devguide.html

• OpenSocial: API referentie gids http://code.google.com/apis/opensocial/docs/0.7/reference/

• OpenSocial: API specificatie gids http://code.google.com/apis/opensocial/docs/0.7/spec.html

• OpenSocial: API release nota’s

http://code.google.com/apis/opensocial/docs/releasenotes.html

• Wikipedia definitie OpenSocial http://en.wikipedia.org/wiki/OpenSocial

• 6 essential things you need to know about OpenSocial http://web2.socialcomputingmagazine.com/the_6_essential_things_you_need_to_know_about_googles_opens.htm

CMS vergelijking

• CMS Matrix http://www.cmsmatrix.org

• OpenSource CMS http://www.opensourcecms.com

• Using Open Source Software to desing, develop, and deploy a collaborative Web site http://www-128.ibm.com/developerworks/ibm/library/i-osource1/#N10245

• They Hate Drupal, They love Drupal http://cmsreport.com/node/213

Page 78: jeroenclerix-drupal-en-social-networking-sites

78 / 81

Referentie conversaties

• Eric Sol Eigenaar Solide, bestuurslid Open Source platform Limburg http://www.solide-ict.nl

• Boris Mann Eigenaar Boris Mann Consulting, drupal contributor http://www.bmannconsulting.com http://drupal.org/user/4426

• Roel De Meester

Krimson-teamlid, mede-oprichter Drupal.be http://www.krimson.be http://drupal.be/user/53 http://develoop.be

• Bert Boerland

Medewerker drupal.be, blogger http://willy.boerland.com/myblog http://www.drupal.be/user/9

• Robert Douglas Manager Social Networking Sites groep op Drupal.org, auteur http://groups.drupal.org/user/169

Drupal nodes en posts

• Projectpagina OpenSocial Container door Jeroen Clerix http://drupal.org/project/opensocial-container

• Drupal loves Opensocial door Jeroen Clerix

http://groups.drupal.org/node/10561

• Projectpagina OpenSocial door Firmidea http://drupal.org/project/opensocial

• Open social google integration bookmarklet door chatcharin http://groups.drupal.org/node/9540

Drupal: interessante bloggers

• Dries Buytaert blog http://www.buytaert.net

• Acquia (bedrijf Dries Buytaert) blog http://www.acquia.com

Page 79: jeroenclerix-drupal-en-social-networking-sites

79 / 81

• Boris Mann Consulting http://bmannconsulting.com

Technologie

• Definitie van Ajax http://nl.wikipedia.org/wiki/Asynchronous_JavaScript_and_XML

• Frankwatching: community over webtrends http://www.frankwatching.com

• Tweakers: community over trends, technologie http://tweakers.net

• Artikel: Hyves leunt met nieuwe api zwaar op open standaarden http://tweakers.net/nieuws/52118/hyves-leunt-met-nieuwe-api-zwaar-op-open-standaarden.html

• Artikel: Google, Myspace en Yahoo richten OpenSocial Foundation op http://pro.tweakers.net/nieuws/52600/google-yahoo-en-myspace-richten-opensocial-foundation-op.html

OpenSource

• SourceForge, bron voor open source http://www.sourceforge.net

• OSSOS, gebruik van open standaarden en open source software http://www.ossos.nl

• Conferentie Mark Driver van Gartner over Open Source in IT http://www.gartner.com/2_events/conferences/os1_section.jsp

• Motie Vendrik over gebruik open source software in Nederland. http://nl.wikipedia.org/wiki/Motie_vendrik

• Open Overheid http://www.openoffice.nl/articles/2007/09/open-overheid

• Het web is beter als het sociaal is (Knossos) http://www.knosos.be/node/3022

• Educatieve toepassingen van Open Software, prof. Bruyninc http://people.mech.kuleuven.be/~bruyninc/etos/informatie.html

• Ohloh: social networking site voor Open Source ontwikkelaars http://www.ohloh.net

Page 80: jeroenclerix-drupal-en-social-networking-sites

80 / 81

Andere

• Flock, de sociale web browser

http://www.flock.com

Page 81: jeroenclerix-drupal-en-social-networking-sites

81 / 81

B I J L A G E N

• Bijlage 1: Overzicht technisch onderzoek Drupal modules • • Bijlage 2: Tijdschema onderzoekstraject

• Bijlage 3: Overzicht referentie conversaties (Gmail prints)

• Bijlage 4: Bestanden Drupal project module (Textwrangler prints)

• Bijlage 5: Recentste versie RESTful API specificatie (0.8)