Inlägg märkta ‘utveckla’

API till musiktjänsten Demolåtar.se

fredag, 11 maj, 2012

Nyheter för alla utvecklare som vill skapa nya musikappar. Nu släpper Demolåtar.se ett API till sin populära musiktjänst: API Demolåtar.se. Använd och skapa!

Webbtjänster – så fungerar det

tisdag, 13 oktober, 2009

Introduktion

För att skapa en kommersiell webbtjänst krävs kompetens inom flera väldigt skilda områden, allt från tekniska lösningar till affärsmodeller. Denna artikel belyser de tekniska vägvalen och dess för- och nackdelar samt affärsmodeller och uppföljning för sajten.

Innehållsplattform

En central fråga i tjänstens utformning är hur innehållet, dvs. informationen, ska hanteras. En första fråga är om sidan ska vara statisk eller dynamisk? Idag görs nästan bara dynamiska sidor vilket därför är fokus för denna artikel. Många tjänster är helt enkelt dynamiska i sin natur, t.ex. där användare bidrar med eget innehåll och konsumerar andras. Även för mer statiskt material som t.ex. artiklar vill användare ändå ha möjligheten att kommentera, betygsätta mm (dvs. dynamiska funktioner). De valen som finns är att antingen utveckla en egen plattform eller utgå från en färdig plattform som laddas ner och installeras.

Befintlig plattform

Det finns mängder med CMS (Content Management Systems), både open source och helt kommersiella produkter. På open source-fronten är det största CMS idag: Joomla, Drupal och Mambo med hänseende till antal sidor som använder dem. Dessa system är mer eller mindre flexibla och modulärt uppbyggda. Detta innebär att moduler kan laddas ner och läggas till grundinstallationen. Modulerna innehåller olika funktionalitet som t.ex. kalender, röstning med statistik, inloggningsformulär etc. och givetvis kan även egna moduler utvecklas.

När det gäller mer specifika CMS som bloggar och forum är forumet PunBB och bloggen WordPress störst i respektive genrer.

Fördelen med ett färdigt system är att mycket av jobbet redan är gjort och oftast av väldigt hög kvalité. Nackdelen är att de ibland innehåller mer än vad som efterfrågas och att de kan vara mer resurskrävande och därmed ge en något långsammare upplevelse för användarna. Om plattformen behöver anpassas och inga lämpliga moduler finns tillgängliga måste egen utveckling göras. Det kan vara ganska stora plattformar (Joomla består av drygt 5000 filer) och det tar ofta längre tid att sätta sig in i kod man inte har utvecklat själv.

Egenutvecklad plattform

Om man väljer att utveckla en egen tjänst och inte utgår från ett befintligt CMS, forum, blogg etc., måste ett antal designval göras. Om sidan är statisk kan vanlig html användas vilkets stöds av alla webbhotell. Ska den vara dynamisk krävs någon form av script som står för logiken som gör att rätt dynamiskt innehåll visas. Vanliga programmeringsspråk för detta är asp, php, cgi, python, java, ruby, coldfusion m.fl. Alla dessa stöds inte av alla webbhotell utan man måste välja ett som stöder (dvs. har en server som tolkar) det aktuella språket. Val av språk beror på kompetens hos utvecklarna, kostnad, funktionalitet och support. PHP m.fl. är open source (med dess för och nackdelar) och kostar ingenting att använda medan ASP-servrar kostar pengar vilket i sin tur gör att vissa webbhotell tar extra betalt för detta.

Utvecklingen av webbtjänsten kan ske online eller offline. Om det görs online rekommenderas det att man jobbar i en version av sidan som inte publicerats och används av användarna eller har indexerats av Google. Då slipper de ta del av utvecklingsprocessen och alla felmeddelanden. Att jobba offline kräver att en liknande miljö sätts upp på den lokala datorn som den miljö som finns på webbhotellet. För den vanligaste open source-lösningen (PHP och MySQL) är programmet WampServer och bra sätt att komma igång på en Windowsdator. Detta erbjuder en lokal installation av SQL-server, PHP-server, Apache-webbserver och administrationssystemet phpMyAdmin vilket räcker för att utveckla en ny tjänst. Viktigt är dock att göras samma inställningar i de lokala servrarna som webbhotellets har på sina servrar. Annars är risken att scripten inte fungerar som de ska när de väl laddas upp i den skarpa miljön.

Webbhotell

Vid valet av webbhotell bör projektets eller webbtjänstens totala behov ses över. Viktiga parametrar vid valet beskrivs nedan.

Transmissionskapacitet. Kräver tjänsten mycket bandbredd, dvs. kommer mycket data skickas eller tas emot? De flesta seriösa webbhotell har en uttalat begränsad mängd data som får skickas upp/ner per månad. De webbhotell som påstår sig har obegränsad kapacitet har givetvis också begränsningar, skillnaden är att kunden inte vet exakt vad den får. Detta kan i vissa fall vara betydligt sämre än att veta hur mycket kapacitet man har även om den är liten.

Lagringskapacitet. Hur mycket data finns det behov av att spara? Relativt mycket kapacitet ingår oftast och för att detta ska vara en flaskhals måste tjänsten ha ett stort antal användare och/eller hantera olika mediafiler.

Antal domäner per konto. Har ditt företag flera domäner/webbtjänster som ni vill ha samlade under ett konto hos ett webbhotell? Oftast är detta att föredra ur kostnadsperspektiv. De flesta billigare hotell har dock begränsningar på antal domäner per konto, dvs. bara ett visst antal (oftast en) domän/er får dela på ett visst kontos lagringsutrymme. Notera att detta inte har med tekniska begränsningar att göra utan endast är en begränsning som är en del av webbhotellets affärsmodell.

Support. Hur bra support har webbhotellet? Det kan vara allt från dygnet runt support via telefon eller via chatt (endast engelska eller på lokalt språk), till informationssidor för självstudier och problemlösning.

Säkerhet. Dels kommunikationssäkerhet (stöds https-protokollet?) och dels säkerhet i form av skydd mot intrång och mot andra användare på samma webbhotell.

Backup. Tas det någon backup på dina filer? Detta kan vara allt från ingen backup alls till dagliga backuper och möjlighet att återställa filer om felaktiga ändringar har gjorts.

Driftsäkerhet. Hur ofta ligger webbhotellet nere? Det går ofta att läsa statistik över detta hos seriösa företag. Det är också viktigt att kunden blir informerad direkt när detta händer via t.ex. mail.

Tekniker. Vilka programmeringsspråk och databaser stöder hotellet? Detta sätter den absoluta ramen för vilka programmeringsspråk och databaser som kan användas. Se till att era designval går att realisera på det aktuella webbhotellet. Detta kan även kräva en djupdykning i vilka tekniska inställningar som finns för de olika servrarna. Ett vanligt exempel: är PHP ”safe mode” aktiverat eller ej?

Tillbehör. Vilka pluggins och tillbehör finns tillgängliga? Detta är oftast olika förinstallerade (s.k. one-click installs) CMSer, hemsidegeneratorer, bloggar, bildhanteringssystem mm. Detta kan vara väldigt praktsikt för den otekniska kunden, för den mer teknikvana kunden kan dessa laddas ner och installeras manuellt och de är ofta gratis.

Administration. Vilka administrationsverktyg finns att tillgå? Enkla grafiska verktyg för databashantering och övrig domänhantering underlättar arbetet väldigt mycket. De flesta webbhotell har bra lösningar för detta då det finns ett antal standardverktyg.

Det rekommenderas att göra en snabb bedömning av webbhotellets affärsmodell eller nisch. Olika av ovan nämnda parametrar kan variera mycket i pris från företag till företag. Oftast har de nischad sig och pressat priserna på mycket lagring, mycket transmission, många domäner per konto etc. Sällan kan man få allt detta utan att köpa en betydligt dyrare tjänst.

Licenser

Om man använder open source i olika utsträckning är det viktigt att veta vilka licenser som gäller för dessa plattformar. Det påverkar i sin tur vilka licenser som gäller på ditt företags eventuella vidareutvecklade plattform. Här presenteras några av de vanligaste open source licenserna. De har alla gemensamt att arbete licensierat under dessa får vidareutvecklas, s.k. deriverat arbete, och även säljas kommersiellt. Deriverat arbete innebär den vidareutveckling man själv har gjort, det går aldrig att ändra licens på kod som man inte äger. Licenserna skiljer sig i hur källkoden distribueras, attribuering (hur arbetet tillskrivs någon) och hur licenstexten är utformad. Licenserna BSD (Berkeley Software Distribution), MIT (Massachusetts Institute of Technology) och Apache liknar varandra och är ganska tillåtande. De kräver attribuering av använd kod i sin egen kod och/eller i dokumentation mm. GPL (GNU General Public License) har också liknande krav men skiljer sig markant på en punk: allt arbete som använder någon form av GPL-arbete (kan vara några rader kod) måste också licensieras under GPL eller likvärdig licens. Detta omöjliggör för utvecklare att skapa deras egna deriverade program med en annan licenstyp. LGPL (GNU Lesser General Public License) används generellt för mjukvarubibliotek och inte program. Derivat av LGPL måste också licensieras under LGPL eller likvärdig licens, men kompilerade mjukvarubibliotek kan länkas in till ett projekt utan att detta behöver licensieras under LGPL.

Licens Namnge deriverat arbete? Måste deriverat arbete vara open source? Annan licenstyp på deriverat arbete? Sälja deriverat arbete?
Apache License 2.0 ja nej ja Ja
CDDL (Common Development and Distribution License) ja nej ja, till kompatibel licens. Ja
GPL (GNU General Public License 2.0) ja ja, men bara om det publiceras. ja, till kompatibel licens eller enligt överenskommelse med ägare. Ja
LGPL (GNU Lesser General Public License) ja ja, men bara om det publiceras. Kan länka kompilerade bibliotek direkt till icke-open source mjukvara. ja, till kompatibel licens. Ja
Ms-PL (Microsoft Public License) ja, men kan ej använda ”owner’s trademark” nej nej Ja
Ms-RL (Microsoft Reciprocal License) ja, men kan ej använda ”owner’s trademark” ja nej Ja
MPL (Mozilla Public License 1.1) ja nej nej Ja
BSD License ja nej ja Ja
MIT License ja nej ja Ja

Nedan visas vilka open source-licenser som används av ett antal välkända CMSer, OS, applikationer etc.

CMS:

  • Joomla: OMS (Open Source Matters). Licensen hanteras av en icke-vinstdrivande organisation i USA som skapats för att stödja Joomla.
  • Drupal:  GPL
  • Mambo: GPL

Bloggar & forum:

  • PunBB: GPL
  • WordPress: GPL

OS:

  • Linux Kernel: GPL
  • Google Android: Apache 2.0.

Applikationer:

  • Mozilla: Mozilla Public License, GPL, LGPL. Mozillas källkod är licensierad under tre licenser varav användaren får möjlighet att välja en av dem.
  • Open Office: LGPL
  • VLC Media Player: GPL

Programmeringsspråk:

  • PHP: PHP License. Licensen hanteras av den icke-vinstdrivande organisationen PHP Group.

Källor

http://www.newmediarights.org/open_source/new_media_rights_open_source_licensing_guide

http://khason.net/blog/open-source-licenses-comparison-table/

http://en.wikipedia.org/wiki/Comparison_of_free_software_licenses