Archive

Archive for June, 2007

KDE 4: Plasma

June 22nd, 2007 Wesley 3 comments

KDE 4 wordt de nieuwe incarnatie van de KDE desktopomgeving. De ontwikkelaars achter KDE zijn druk bezig met het ontwikkelen van deze nieuwe versie. KDE 4 zal bestaan uit verscheidene subprojecten.

De belangrijkste projecten voor KDE 4 zijn: Plasma, Phonon, Solid, Decibel, Kross, Dolphin, Oxygen en een nieuwe versie van KWin.

Vandaag bekijken we wat Plasma precies is
en wat de nieuwste ontwikkelingen zijn in Plasma.

Wat is Plasma?

PlasmagikPlasma is een combinatie van Kicker (panelen), KDesktop (desktop root venster) en SuperKaramba (widget systeem). In KDE 4 zullen deze drie programma’s omgevormd worden tot Plasma. Plasma is in principe het belangrijkste onderdeel van KDE 4, want zonder Plasma heb je eigenlijk geen desktopomgeving.

Innovatie

Plasma belooft een revolutionaire omgeving te worden. De desktopomgeving is volgens de KDE ontwikkelaars al 13 jaar hetzelfde en het wordt tijd om nieuwe concepten uit te werken. Eén van de belangrijkste punten in Plasma is de integratie van widgets. Alles in Plasma zal bestaan uit widgets. Deze widgets krijgen de naam Plasmoids.

Widgets: Plasmoids

Plasmoids kunnen in Javascript, Python of Ruby worden geschreven via het Kross scripting framework van KDE 4. Eén van de standaard plasmoids zal een vervanger zijn voor de KMenu knop. Plasma zal echter ook backwards compatibel zijn met oude SuperKaramba applets, hoewel het sterk wordt aanbevolen om nieuwe Plasmoids te schrijven omdat echte Plasmoids veel moderner zijn. Ze kunnen op een makkelijke manier geanimeerd worden en kunnen gebruik maken van Scalable Vector Graphics voor een mooie herschaalbare weergave van de widgets.

Plasmoids werken via een resourcevriendelijk systeem dat uit drie delen bestaat: Display Canvas (weergave), Data Provisioning (gegevensvoorziening) en Support library (voorziet in een aantal nodige functies).

Het Display Canvas is verantwoordelijk voor de weergave van de Plasmoids. Via het Display Canvas wordt een grafische interface ontworpen voor een Plasmoid. Besturingselementen en animaties (via Phase/Animator – zie volgende punt) moeten worden toegevoegd via dit Display Canvas.

Het Data Provisioning System is verantwoordelijk voor gegevensvoorziening. We noemen afzonderlijke elementen die voorzien in gegevens DataEngines. Deze DataEngines bevatten gegevens die dan gedeeld kunnen worden tussen meerdere Plasmoids. Zo kan er bijvoorbeeld een DataEngine bestaan die voorziet in systeemstatistieken en kunnen er twee verschillende Plasmoids zijn die de gegevens van deze DataEngine delen.

Animatie framework: Phase/Animator

Aaron Seigo, één van de topontwikkelaars van KDE is begonnen met het schrijven van een animatie framework – gebaseerd op nieuwe mogelijkheden die recent zijn geïntroduceerd in Qt 4 (meer bepaald Qt 4.2/4.3) en die vergelijkbaar zijn met Core Animation op Mac OS X. Via dit animatie framework dat bekend staat als Phase/Animator kunnen ontwikkelaars op een heel eenvoudige manier Plasmoids schrijven die geanimeerd zijn.

Phase beheert de registratie en duur van grafische effecten in de Plasmoids en laadt een Animator om de animatie daarna daadwerkelijk uit te voeren. Animaties kunnen op deze manier makkelijk aangepast of uitgeschakeld worden door eindgebruikers, want er zijn verschillende animatievormen die op verschillende manieren geanimeerd kunnen worden.

Voorbeeld: een Plasmoid maakt gebruik van Phase::ElementAppear om een element van de Plasmoid op het scherm te weergeven. Er kunnen hiervoor verschillende Animators gebruikt worden: bijvoorbeeld een vervagingseffect of gewoon zichtbaar/onzichtbaar maken.

Links:
Video van Aaron Seigo over Phase/Animator (Flash)
Video: preview van icon hovering (Flash)

Integratie van Plasmoids in Plasma

Alle Plasmoids hebben twee verschillende weergaves: een desktopweergave en een paneelweergave. Plasmoids kunnen van de desktop naar het paneel worden gesleept en omgekeerd. De plasmoid zal dan automatisch zijn weergave aanpassen.

Zooming User Interface

Aaron Seigo liet ons weten dat er deze week een heleboel werk wordt gestoken in een nieuwe gebruikersinterface, een zogenaamde ZUI of Zooming User Interface. Gebruikers kunnen objecten sorteren in groepen en in- of uitzoomen op de objecten. Er is momenteel echter nog maar weinig bekend over deze Zooming User Interface, maar de KDE ontwikkelaars lieten weten dat ze zich baseren op onderzoek van Jeff Raskin.

Prestaties

Je zou kunnen zeggen dat al deze nieuwe dingen de prestaties behoorlijk verlagen, maar dan heb je het mis. In zijn huidige vorm is Plasma reeds sneller dan de oude elementen van KDE 3 en er werd nog niet veel werk gestoken in optimalisatie, dus het zal nog sneller worden.

Er zijn twee redenen voor de goede prestaties van Plasma: Enerzijds wordt Plasma ontwikkeld door gebruikmaking van de nieuwe Qt 4 toolkit die veel sneller is dan de vorige versie (Qt 3) en anderzijds speelt er een resource vriendelijke ideologie bij de KDE ontwikkelaars. Ook kunnen – door toedoen van Phase/Animator – effecten die een snellere computer nodig hebben verminderd of uitgeschakeld worden

Na de releasedatum

Na de releasedatum van KDE 4 (staat gepland voor 23 oktober) zal er nog steeds worden verdergewerkt aan KDE 4. Aaron Seigo wil onder andere een physics engine implementeren om een meer realistische interactie met objecten in Plasma te kunnen verkrijgen. Ook zal er nog veel werk worden gestoken in het blijven optimaliseren van Plasma.

Een ander belangrijk punt zal de integratie met KDE programma’s worden. Stel je het volgende voor: je sleept een contactnaam in Kopete (KDE’s multi-protocol instant messenger) naar de Plasma desktop en er verschijnt een SVG weergave van die persoon en zijn online status op de desktop (of op een laag van de Zooming User Interface).

Ook wordt er druk gewerkt aan Media Center integratie.

PS: Volgende week zullen we het hebben over de nieuwe incarnatie van KWin (vensterbeheerder met composite ondersteuning).

Bronnen: Linux.com, Aaron Seigo’s blog, Planet KDE

VN:F [1.6.3_896]
Rating: 0 (from 0 votes)
Categories: KDE, Linux

Europees onderzoek bevestigt: Websites op Linux sneller dan op Windows

June 22nd, 2007 Wesley 1 comment

Websites die draaien op Linux in combinatie met Apache presteren beter dan websites die draaien op Windows in combinatie met IIS en hebben tevens een hogere uptime.

Dat is gebleken uit een Europees onderzoek dat werd uitgevoerd door Watchmouse. “Een Linux-website in combinatie met een Apache-webserverplatform is hierdoor de beste keuze voor professionele webpagina’s“, aldus Watchmouse.

De landen Polen en Duitsland kiezen voornamelijk voor Linux/Apache. Groot-Brittannië en Zweden kiezen eerder voor Windows/IIS.

Hoewel de bedrijven in ons onderzoek Windows boven Linux lijken te prefereren, toont ons onderzoek aan dat zij beter af zouden zijn met op Linux met Apache gebaseerde websites“, zegt Mark Pors van Watchmouse. Hij voegt daar nog aan toe: “Onderzoek heeft aangetoond dat de meeste webgebruikers erg ongeduldig zijn en niet langer dan vier seconden zullen wachten op het laden van een site.

Oorspronkelijke bron: Webwereld artikel

VN:F [1.6.3_896]
Rating: 0 (from 0 votes)
Categories: Linux, Microsoft

Mijn visie over de Microsoft deals

June 19th, 2007 Wesley 5 comments

Wat horen we tegenwoordig toch veel van Linux in de media. En dat hebben we allemaal te danken aan Microsoft. Ik heb het inderdaad over de vermeende ‘patentdeals’ die Microsoft sluit met allerlei linuxproducenten. Ik wil jullie kort uitleggen wat zo’n deal meestal inhoudt en waarom Ubuntu (en RedHat) een deal met Microsoft weigeren.

Volgens Microsoft schenden een aantal populaire open-sourceproducten (waaronder de Linux-kernel, Openoffice.org en de desktopomgevingen GNOME en KDE) patenten die in het bezit zijn van Microsoft. (Belangrijke noot: softwarepatenten zijn onbestaand in Europa!)

Microsoft weigert echter te zeggen welke patenten precies geschonden worden. Hieruit kan ik enkel concluderen dat het één grote hoop FUD is: Fear, Uncertainty & Doubt. Met andere woorden: Microsoft wil de gebruikers en de producenten schrik aanjagen en ze onzekerheid en twijfel geven over de producten die ze gebruiken.

Indien Microsoft wel patenten zou kunnen aanhalen die ook werkelijk geschonden worden, dan kan er nieuwe code geschreven worden waardoor de claims van Microsoft komen te vervallen.

Het gebruik van linux groeit, en dat is tegen de zin van Microsoft. En als je linux niet kan opkopen, wat doe je dan? Negatieve reclame rondstrooien, maar dat hielp ook niet, en had zelfs een negatieve impact. De volgende stap (waar we nu zitten) is dreigen met (wellicht onbestaande!) patentschendingen.

Microsoft tracht deals met linuxproducenten te sluiten om geld van hen los te peuteren en om ze te vrijwaren van onbestaande patentschendingen. (Voor mij bestaan deze patentschendingen niet totdat ik een lijst krijg aangeboden door Microsoft met daarop een opsomming van alle patentschendingen) Toegegeven: ook interoperabiliteit speelt een rol bij de deals, en dat kan wel een positief punt zijn.

De volgende linuxproducenten hebben reeds een overeenkomst gesloten met Microsoft: Novell, Xandros en Linspire. De deals van Microsoft zijn volgens mij in eerste instantie bedoeld om FUD rond te strooien. Het geld dat ze toebedeeld krijgen voor de vrijwaring van onbestaande patentschendingen is maar bijzaak voor Microsoft.

Ubuntu en RedHat buigen niet

Mark Shuttleworth van Ubuntu weigert een deal met Microsoft over de vermeende patentschendingen. Volgens hem zijn de dreigementen van Microsoft loos.

Ook volgens RedHat houdt zo’n deal helemaal geen steek. RedHat heeft hieraan zelfs een hele webpagina geweid die wel de moeite waard is om door te nemen: http://www.redhat.com/promo/believe/

VN:F [1.6.3_896]
Rating: 0 (from 0 votes)
Categories: Linux, Microsoft

Geautomatiseerde smplayer compilatie met Bash en chroots

June 8th, 2007 Wesley 4 comments

Vollen bak examens! En daardoor heb ik beseft dat het te lang duurt om elke week zeven nieuwe smplayer pakketten te compileren (zeven verschillende versies) Het is echt geen pretje om dit handmatig te doen. Er moeten telkens heel wat files aangepast/verplaatst worden etc. En een menselijke fout is ook nogal snel gemaakt :)

Konsole (Bash)

Dus wat doe je dan als oplossing?

  • Je stelt chroots in voor een dapper en edgy compileeromgeving zodat je geen andere computers (of een reboot naar een andere installatie) nodig hebt om pakketten voor dapper en edgy te compileren. (dit had ik al vanaf het begin gedaan, maar voor de volledigheid vermeld ik het nog een keer)
  • Je maakt een krachtig Bash script om de pakketten te compileren in jouw plaats.

Chroots

Een chroot is een map op je systeem waarin je kan chrooten, dat wil zeggen dat je als root directory dan die bepaalde map gebruikt. Chroots worden vaak gebruikt als een effectieve sandbox methode (om bijvoorbeeld een server optimaal te beveiligen door de webserver op die server te chrooten; hierdoor kan de webserver niets doen wat buiten de chroot omgeving ligt)

In mijn geval heb ik een hele lichte basisversie van Ubuntu Dapper Drake en Ubuntu Edgy Eft in een chroot gestoken, en daarna in elke installatie de nodige libraries (softwarebibliotheken) en compileerprogramma’s geïnstalleerd. Hierdoor kan ik software compileren voor Dapper Drake en Edgy Eft op een Feisty Fawn systeem.

Bash script

Hieronder bevindt zich het bash script dat ik gebruik om mijn pakketten te compileren. Het is maar heel snel in elkaar geflanst, maar het doet zijn werk goed genoeg :)

#!/bin/bash

## Little custom hacked together bash script to compile
## SMPlayer in every possible way for Ubuntu
##
##   - Feisty: qt3; qt3/kde; qt4
##   - Edgy: qt3; qt3/kde (needs chroot)
##   - Dapper: qt3; qt3/kde (needs chroot)
##
##   Usage: create-smplayer-packages sourcecode.tar.gz
##
##               -- Wesley Stessens (wesley@ubuntu.com)

echo -e "\e[1;34mPREPARING SCRIPT...\e[0m"

p="$@"

# strip .tar.gz extension
d=${p:0:${#p}-7}

# figure out deb package names
deb=`echo $d|sed 's/-/_/'`_i386.deb
kdeb=`echo $d|sed 's/-/-kde_/'`_i386.deb
q4deb=`echo $d|sed 's/-/-qt4_/'`_i386.deb

echo -e "\e[1;34mCOPYING PACKAGES...\e[0m"

# copy package to dev dirs
cp $p /media/exthome/dev/$p
cp $p /media/exthome/dapper/media/dev/$p
cp $p /media/exthome/edgy/media/dev/$p

echo -e "\e[1;34mEXTRACTING PACKAGES...\e[0m"

# extract packages
cd /media/exthome/dev
tar zxf /media/exthome/dev/$p
cd /media/exthome/dapper/media/dev
tar zxf /media/exthome/dapper/media/dev/$p
cd /media/exthome/edgy/media/dev
tar zxf /media/exthome/edgy/media/dev/$p

# cd + rename debian directory
cd /media/exthome/dev/$d
mv debian-rvm debian

echo -e "\e[1;34mBUILDING SMPLAYER FOR FEISTY/QT3...\e[0m"

if [ -e "/media/exthome/dev/packages/feisty/$deb" ]; then
	echo -e "\e[1;31mFile $deb already exists in /media/exthome/dev/packages/feisty... Skipping.\e[0m"
else
	# build feisty: qt3
	debian/rules binary > /dev/null
	mv /media/exthome/dev/$deb /media/exthome/dev/packages/feisty/$deb
fi

echo -e "\e[1;34mBUILDING SMPLAYER FOR FEISTY/QT3/KDE...\e[0m"

if [ -e "/media/exthome/dev/packages/feisty/$kdeb" ]; then
	echo -e "\e[1;31mFile $kdeb already exists in /media/exthome/dev/packages/feisty... Skipping.\e[0m"
else
	# build feisty: qt3/kde
	cd /media/exthome/dev/$d
	# backup rules file to rules.orig
	cp debian/rules ../rules.orig
	# remove old compile files
	rm -Rf src/.moc src/.obj src/.ui
	cd src
	make clean
	cd ..
	make clean
	# add kde support to rules file
	sed 's/$(MAKE) PREFIX=\/usr/$(MAKE) PREFIX=\/usr KDE_SUPPORT=1 KDE_INCLUDE_PATH=\/usr\/include\/kde/' < ../rules.orig > debian/rules
	debian/rules binary > /dev/null
	mv /media/exthome/dev/$deb /media/exthome/dev/packages/feisty/$kdeb
fi

echo -e "\e[1;34mBUILDING SMPLAYER FOR FEISTY/QT4...\e[0m"

if [  -e "/media/exthome/dev/packages/feisty/$q4deb" ]; then
	echo -e "\e[1;31mFile $q4deb already exists in /media/exthome/dev/packages/feisty... Skipping.\e[0m"
else
	# build feisty: qt4
	cd /media/exthome/dev/$d
	# remove old compile files
	rm -Rf src/.moc src/.obj src/.ui
	cd src
	make clean
	cd ..
	make clean
	# add qt4 support to rules file; remove qt3 support
	sed 's/# Qt 3/$(MAKE) prep/' < ../rules.orig > debian/rules
	sed -i 's/$(MAKE) PREFIX=\/usr/$(MAKE) PREFIX=\/usr QMAKE=qmake-qt4/' debian/rules
	debian/rules binary > /dev/null
	mv /media/exthome/dev/$deb /media/exthome/dev/packages/feisty/$q4deb
fi

echo -e "\e[1;34mBUILDING SMPLAYER FOR EDGY/QT3...\e[0m"

# Fix directory names
mv /media/exthome/edgy/media/dev/$d/debian-rvm /media/exthome/edgy/media/dev/$d/debian
mv /media/exthome/dapper/media/dev/$d/debian-rvm /media/exthome/dapper/media/dev/$d/debian

if [ -e "/media/exthome/dev/packages/edgy/$deb" ]; then
	echo -e "\e[1;31mFile $deb already exists in /media/exthome/dev/packages/edgy... Skipping.\e[0m"
else
	# build edgy: qt3
	# prepare script for chroot
	echo "cd /media/dev/$d" > /media/exthome/edgy/usr/local/bin/bsmplayerqt3
	echo "debian/rules binary > /dev/null" >> /media/exthome/edgy/usr/local/bin/bsmplayerqt3
	echo "exit 0" >> /media/exthome/edgy/usr/local/bin/bsmplayerqt3
	# do chroot
	chroot /media/exthome/edgy /bin/bash bsmplayerqt3
	# move package out of chroot
	mv /media/exthome/edgy/media/dev/$deb /media/exthome/dev/packages/edgy/$deb
fi

echo -e "\e[1;34mBUILDING SMPLAYER FOR EDGY/QT3/KDE...\e[0m"

if [ -e "/media/exthome/dev/packages/edgy/$kdeb" ]; then
	echo -e "\e[1;31mFile $kdeb already exists in /media/exthome/dev/packages/edgy... Skipping.\e[0m"
else
	# build edgy: qt3/kde
	# prepare script for chroot
	echo "cd /media/dev/$d" > /media/exthome/edgy/usr/local/bin/bsmplayerqt3kde
	echo "cp debian/rules ../rules.orig" >> /media/exthome/edgy/usr/local/bin/bsmplayerqt3kde
	echo "rm -Rf src/.moc src/.obj src/.ui; cd src; make clean; cd ..; make clean" >> /media/exthome/edgy/usr/local/bin/bsmplayerqt3kde
	echo "sed 's/\$(MAKE) PREFIX=\/usr/\$(MAKE) PREFIX=\/usr KDE_SUPPORT=1 KDE_INCLUDE_PATH=\/usr\/include\/kde/' < ../rules.orig > debian/rules" >> /media/exthome/edgy/usr/local/bin/bsmplayerqt3kde
	echo "debian/rules binary > /dev/null" >> /media/exthome/edgy/usr/local/bin/bsmplayerqt3kde
	echo "exit 0" >> /media/exthome/edgy/usr/local/bin/bsmplayerqt3kde
	# do chroot
	chroot /media/exthome/edgy /bin/bash bsmplayerqt3kde
	# move package out of chroot
	mv /media/exthome/edgy/media/dev/$deb /media/exthome/dev/packages/edgy/$kdeb
fi

echo -e "\e[1;34mBUILDING SMPLAYER FOR DAPPER/QT3...\e[0m"

if [ -e "/media/exthome/dev/packages/dapper/$deb" ]; then
	echo -e "\e[1;31mFile $deb already exists in /media/exthome/dev/packages/dapper... Skipping.\e[0m"
else
	# build dapper: qt3
	# prepare script for chroot
	echo "cd /media/dev/$d" > /media/exthome/dapper/usr/local/bin/bsmplayerqt3
	echo "debian/rules binary > /dev/null" >> /media/exthome/dapper/usr/local/bin/bsmplayerqt3
	echo "exit 0" >> /media/exthome/dapper/usr/local/bin/bsmplayerqt3
	# do chroot
	chroot /media/exthome/dapper /bin/bash bsmplayerqt3
	# move package out of chroot
	mv /media/exthome/dapper/media/dev/$deb /media/exthome/dev/packages/dapper/$deb
fi

echo -e "\e[1;34mBUILDING SMPLAYER FOR DAPPER/QT3/KDE...\e[0m"

if [ -e "/media/exthome/dev/packages/dapper/$kdeb" ]; then
	echo -e "\e[1;31mFile $kdeb already exists in /media/exthome/dev/packages/dapper... Skipping.\e[0m"
else
	# build dapper: qt3/kde
	# prepare script for chroot
	echo "cd /media/dev/$d" > /media/exthome/dapper/usr/local/bin/bsmplayerqt3kde
	echo "cp debian/rules ../rules.orig" >> /media/exthome/dapper/usr/local/bin/bsmplayerqt3kde
	echo "rm -Rf src/.moc src/.obj src/.ui; cd src; make clean; cd ..; make clean" >> /media/exthome/dapper/usr/local/bin/bsmplayerqt3kde
	echo "sed 's/\$(MAKE) PREFIX=\/usr/\$(MAKE) PREFIX=\/usr KDE_SUPPORT=1 KDE_INCLUDE_PATH=\/usr\/include\/kde/' < ../rules.orig > debian/rules" >> /media/exthome/dapper/usr/local/bin/bsmplayerqt3kde
	echo "debian/rules binary > /dev/null" >> /media/exthome/dapper/usr/local/bin/bsmplayerqt3kde
	echo "exit 0" >> /media/exthome/dapper/usr/local/bin/bsmplayerqt3kde
	# do chroot
	chroot /media/exthome/dapper /bin/bash bsmplayerqt3kde
	# move package out of chroot
	mv /media/exthome/dapper/media/dev/$deb /media/exthome/dev/packages/dapper/$kdeb
fi

echo -e "\e[1;34m  -- ThE EnD --  \e[0m"
exit 0
VN:F [1.6.3_896]
Rating: 0 (from 0 votes)
Categories: Linux, Multimedia, Ubuntu