nrk.no

Den beste XMPP-tjeneren

Kategori: Software


apple_serial_terminal--irc_via_weechat_50
Creative Commons Lisens http://creativecommons.org/licenses/by/3.0/us/

XMPP er svaret til deg som vil bygge den neste store sosiale tjenesten, eller et samarbeidsverktøy som skal ta over etter Lotus eller IT’s Learning. XMPP er bare en standard i seg selv, men den er implementert i flere smaker.

Jeg jobber med å sette opp en tjener for kommunikasjon mellom brukere. Spesifikt såkalt Multi User Chat (MUC). Da har jeg bestemt meg for å ha en tjener som støtter/følger XMPP-standarden. Her er det noen alternativer:

Jabberd 2, ejabberd, Openfire og Tigase. Jeg tror de to siste er mest aktuelle fordi de er Java, og vi har tyngre Javakompetanse enn C og Erlang. Og til tross for manges lovnader om at Erlang er enkelt, tror jeg ikke det er noen god idé å innføre det her. Det holder lenge med Java, .net og PHP. Det er greit å kunne  lage en plugin eller noe. Her er en fin gjennomgang: http://metajack.wordpress.com/2008/08/26/choosing-an-xmpp-server/

Men de har ikke gjennomgått Tigas og Openfire skikkelig. Derfor henvender jeg meg til dere, kloke lesere; er det noen som har noen erfaring med Openfire eller Tigase?

Det jeg bekymerer meg mest for er selvfølgelig ytelsen og skaleringen. Selve funksjonaliteten vi krever er forholdsvis enkel. Samtidig vil jeg gjerne ha en så funksjonsrik tjener som mulig med tanke på utvidede bruksområder på sikt, og et godt adminverktøy er viktig.

Så langt leder Openfire i mine øyne, men det kan være fordi det var den jeg fant først og den eneste jeg faktisk har installert og prøvd. Det virker også som den har det mest aktive forumet og den enkleste hjemmesiden. Tigase har for eksempel et potensielt sikkerhetshull i søkeboksen sin, som er et litt dårlig tegn. Grunnen til at jeg ber om hjelp er at jeg har sett en del Tigase fanboys som mener Tigase skalerer mye bedre enn Openfire.

Ellers kan jeg nevne at jeg har tenkt å bruke Javascript-klienten Strophe. Hvis noen kjenner til den, tar jeg mer enn gjerne imot erfaringer.

35 kommentarer

  1. Satte opp eJabberd på gamlejobben, til tross for en viss skepsis mot å innføre Erlang. Jeg synes den var suverent enkel å konfigurere, i alle fall i forhold til jabberd2 som jeg prøvde først.

    At det var Erlang hadde til syvende og sist ingenting å si. Serveren var suverent stabil, og krevde aldri noe ekstra dillemikk.

    Svar på denne kommentaren

  2. Håvard Pedersen

    Du trenger vel like lite å kunne C++ for å bruke en XMPP server skrevet i C++ som du trenger det for å bruke en webserver skrevet i C++, og det vil jeg tippe den dere bruker er. 🙂

    Svar på denne kommentaren

  3. Andreas Wiik (NRK)

    Takk for innspill! Ja, jeg er klar over at Google bruker XMPP, og det er veldig kult. Og vi vil bestrebe å følge XMPP slik at vår tjeneste og Wave (og andre) kan samarbeide. Har prøvd dette med Google-talk, og det fungerer utmerket. Noen problemer jeg ser med å bruke Wave er

    1. Det er ikke åpnet for alle ennå, og API-et er ikke ferdig.
    2. Jeg vet ikke hvor stor frihet man har, eller hvor enkelt det vil være å tilpasse det til vårt bruk. Men det er det som er så fint med en standard som XMPP. Så lenge vi og Google følger den, vil vi kunne flette sammen, utvide og bytte ut som vi vil.
    3. Vi er litt skeptiske til å la en ekstern kommersiell aktør eie våre brukeres data.

    Svar på denne kommentaren

  4. Andreas Wiik (NRK)

    @Håvard Pedersen Helt sant. Og jeg tror egentlig ikke det ville vært et stort problem. Men så vidt jeg vet har ingen av tjenerne implementert hele XMPP-standarden, og da kunne det vært kjekt å implementert det sjøl ved behov.

    Svar på denne kommentaren

  5. Knut-Olav Hoven

    @Tollef Fog Heen, at Openfire-prosjektet ikke lenger er aktivt under utvikling fra JiveSoftware er bekymringsverdig.

    Vi ser for oss en integrering mot egen brukerbase, både for registrering og autentisering. Dette vekter for å velge et produkt skrevet i Java framfor et produkt skrevet i Erlang.

    Svar på denne kommentaren

  6. Henrik Lied (NRK)

    Høres ut som eit spennande prosjekt!

    Har ikkje så mykje erfaring med XMPP sjølv, men har eksperimentert litt med div. Comet-baserte teknologier. Ein av karane bak GitHub holdt eit foredrag om «The Real Time Web» på DjangoCon i år, presentasjonen er på Slideshare. Den kan kanskje være relevant. 🙂

    Svar på denne kommentaren

  7. Har satt opp Openfire hos noen kunder, og det har fungert veldig fint. Det mest positive er vel et meget intuitivt og enkelt web-grensesnitt, og utrolig enkelt å integrere med Active Directory.

    Svar på denne kommentaren

  8. Uno, har nok ikke satt opp for så store kunder, maks 100. Har testet på Windows, men kjører det i Ubuntu Linux hos kunder som virtuell maskin i VMWare ESX 3.x. Fungerer også smertefritt over forholdsvis trege VPN-forbindelser.

    Bruker Pidgin eller Spark som klient.

    Svar på denne kommentaren

  9. Mats Taraldsvik

    Vi er litt skeptiske til å la en ekstern kommersiell aktør eie våre brukeres data.

    Slik jeg forstår det, skulle vel Google Wave være en åpen protokoll. Da trenger dere ikke ha dataene på Google sine servere i det hele tatt, og heller ikke gi bort noen av (eier)rettighetene.

    Eller har jeg misforstått fullstendig nå?

    Svar på denne kommentaren

  10. Mats Taraldsvik

    @Andreas :

    Det blir i mine øyne litt feil å sammenlikne å sette opp en egen xmpp-tjener med å integrere med Googles Wave-tjener (og omvendt). Både Wave og XMPP kan plasseres på en ekstern tjener, like mye som begge kan (evt. skal kunne) brukes på egen tjener.

    Dataproblematikken er dermed like aktuell for begge tjenester om de plasseres på en ekstern server.

    Når det er sagt er Google Wave en sjanse å ta, all den tid det er lite utbredt og i alpha. Støtten for xmpp er også mye bredere, så det er et sikrere valg.

    Svar på denne kommentaren

  11. Nå ble jeg litt nysgjerrig på hva dere har i tankene når ytelese og skalering bekymrer…

    En enkelt ren ejabberd-node med ett ordentlig operativsystem og standard moderne servermaskinvare i bunn drar lett ett par titalls tusen samtidige tilkoblinger. Nå kjenner jeg ikke til noen som har særlig større oppsett enn dette, men diverse benchmarks ser ut til å vise at heller ikke hundre tusen tilkoblinger skal være noe problem. Om da kanskje 10% av brukerene er online til en hver tid vil det si at en enkelt boks da kan håndtere 1/5 av Norges befolkning. Noe som derimot kan være en flaskehalls eller vanskelig å skalere kan være backend for autentisering eller eksterne komponenter (f.eks. transporter, roboter, Google Wave) etc.

    Men om det er MUC som behøves vil kanskje god gammeldags IRC gjøre jobben like bra? Det burde ihvertfall skalere. jabberd2 har vel heller ikke enda noe MUC-komponent inkludert?

    Ejabberd er forøvrig rimelig stabile greier. Har selv to ejabberd-noder som kjører på en enkelt maskin. XMPP for dette domenet har så og si vært oppe 100% i snart 5 år nå (om en ser bort fra 2-3 rebooter for oppgradering av kjerne og noe nettverksproblemer).

    Svar på denne kommentaren

  12. Stian B. Barmen

    Heisann, jeg har kjørt ejabberd siden versjon 0.9 på http://www.jabber.no, dønn hakke stabilt, 200-300 samtidige brukere på en virtuell server. Drøyt 5000 registrerte brukere.

    Ejabberd kan absolutt anbefales, men det er helt klart gode alternativer der ute. Jabber.org har akkurat migrert til M-Link .. noe å tenke på? Største jabber server for øyeblikket. De har også kjørt en del år på ejabberd …

    Gøy å høre at NRK er med på XMPP… plutselig litt mer glad for lisenspengene nå (etter noen nedturer fra Tore på sporet!!!)

    Svar på denne kommentaren

  13. Av gpl crap er dJabberd helt ok (til gpl software å være)

    Om du skal gjøre det ordentlig bruker du soapbox eller sun javas communication suite.

    Men follow up spørsmål da:
    Hva skal dere med dette ?
    Holder ikke nrk på å teste ut ordentlige im servere ? For live/office communicator ?
    (kanskje en dårlig ide å sende brukere til det onde selskapet microsoft? men dere gjør jo det samme med apple/facebook så hvorfor ikke?)

    Og om man insisterer på steinalder im, hva med en god gammeldags irc server ? som inspircd eller snircd. Og så bruke en av de mange java irc klienta. Evnt mekk en selv (er jo bare fancy telnet)

    Infact,
    hvorfor stresse med å sette opp egen server? hvorfor ikke sende brukere til quakenet på egen kanal,
    quakenet/efnet/newnet/dalnet/ircnet/whatever blir sikkert bare glad for flere brukere, nrk slipper å kaste bort penger/båndbredde på hosting.

    Dere får full kontroll over «rommet» med chan-op.

    Og folk kan bruke ordentlige klienter istedenfor å forces til å bruke latterlig mye ressurser på crappy nettleser klienter som uansett har veldig begrenset funksjonalitet.

    Svar på denne kommentaren

  14. Mats Taraldsvik

    @Krunk : Forsøker du å erte på deg oss floss-evangelister nå, da? 😉

    Problemet oppstår når man vil lage en tjeneste, et nettsted e.l med instant messaging som en (tilleggs)funksjon. Da blir det vanskelig å bruke lukkede løsninger, men veldig enkelt – og potensielt billig – med frie løsninger.

    Det er i hvert fall slik jeg har oppfattet artikkelen, at det snakkes om å lage en tjeneste, og at første steg er å sette opp en skikkelig instant messaging-server / -tjeneste. Så det er nok pga. fleksibiliteten valget har falt på xmpp i stedet for løsningene du foreslår, antar jeg.

    Svar på denne kommentaren

  15. Andreas Wiik (NRK)

    Kan nevne at vi vurderte IRC, en utvikler på UT hadde en Flash-klient liggende. Det ville sikkert fungert, men ville ikke gitt samme mulighetene som ligger i XMPP. Ved å følge XMPP åpner det seg mange spennende ting i form av de mange funksjonalitetene som allerede ligger der og muligheter for interaksjon med eksterne XMPP-tjenere.

    PS. Med ekstern mener jeg ikke at tjeneren bare ligger utenfor huset men at det er en annen organisasjon som eier tjenesten. Som for eksempel wave.google.com eller jabber.no

    Svar på denne kommentaren

  16. Artig at dere vurderte irc, savner gode gamle irc.nrk.no
    (som nå bare redirekter til 195.159.0.90/homelien som er en del av efnet)
    Den ble brukt til chatting på div nrk2 program, spider/direkte sexy osv.

    Men begrensningene med ircr ligger jo i begrensningene til klienten, så delt tegnebrett/webcamchat/direkte ip chat via dcc/filservere/deling av bilder osv allerede i 1995-96.
    Imo, stort sett det samme som gwave er, bare at de fleste brukere hadde modem så ting tok riktignok lengre tid.

    Men forstår avgjørelsen, utviklingen av en skikkelig klient ville kostet mye penger. Og dere vil være med på den neste hypen, som ikke nødvendigvis er en dårlig ting.

    Dumt follow up spørsmål da.
    Vil dette si at om jeg bruker jabber, blir å kunne kjøre videokonferanse/webcamchat med folk som bruker nrks interne im ?
    For dere har en intern IM for ansatte right ?

    Isåfall kan det da endelig bli slutt på de tullete telefonlyd+stillsene på dk/utenriks sendinger ? Og slutt på telefonintervju på radio ?
    Kjør lyden via inet og den nye klienten deres istede, bedre kvalitet, billigere.

    Hver gang jeg ser disse på tv får jeg asosiasjoner til 80 tallet, noen har clearly misset at det har skjedd en utvikling.
    Og når jeg hører de telefonintervjuene på radio, ender jeg ofte opp med å lure på hvem som har sagt hva, og hva som egentlig ble sagt.

    Når tilogmed operah bruker skype, må vel en såpass oppegående teknisk bedrift som nrk klare å finne en løsning også ?

    Svar på denne kommentaren

  17. Syns det er synd at dagens programvare som folk generelt bruker til kommunikasjon er så svake på mange-til-mange kommunikasjon i realtime. Det er mange som bruker kommunikasjonsprogrammer som Messenger, diskuterer på Twitter eller Facebook, men den uhøgtidelege plapringa og det sosiale på IRC har ikkje heilt blitt erstatta av desse. Er der fortsatt sjølv, men er ikkje mange igjen….Ser fram til å teste Google Wave.

    Svar på denne kommentaren

  18. Odin Omdal Hørthe / Velmont

    Underskog hev jo XMPP-tilkopling på meldingssystemet deira. So dei må hava ein del erfaring med å skalera det.

    Dessutan var det utruleg ustabilt i byrjingi, men fungerer greitt no.

    Svar på denne kommentaren

  19. Grats, dere tok en god løsning, bare synd dere tvinger brukerne til å ha facebook konto for å koble seg til!
    Legg ut serverinfo så vi kan bruke andre klienter og ikke trenger facebookkonto.

    Quote Andreas Wiik:
    «1. Det er ikke åpnet for alle ennå, og API-et er ikke ferdig.
    2. Jeg vet ikke hvor stor frihet man har, eller hvor enkelt det vil være å tilpasse det til vårt bruk. Men det er det som er så fint med en standard som XMPP. Så lenge vi og Google følger den, vil vi kunne flette sammen, utvide og bytte ut som vi vil.
    3. Vi er litt skeptiske til å la en ekstern kommersiell aktør eie våre brukeres data.»

    Men å gjøre tjenesten tilgjengelig kun via en facebook app. det har han ingen problemer med.
    Snakker om dobbeltmoraliserende drittprat.

    Svar på denne kommentaren

Legg igjen en kommentar til Thomas Eriksen Avbryt svar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *. Les vår personvernserklæring for informasjon om hvilke data vi lagrer om deg som kommenterer.