<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>A Quiet Place</title>
	<atom:link href="http://drfav.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://drfav.wordpress.com</link>
	<description>Life is what you make it, that's why I'm trying my best</description>
	<lastBuildDate>Tue, 01 Dec 2009 15:17:35 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='drfav.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/5a132e2f4ffc09a3dbe662d6393610a3?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>A Quiet Place</title>
		<link>http://drfav.wordpress.com</link>
	</image>
			<item>
		<title>Introducing Shaman, a new universal package management frontend</title>
		<link>http://drfav.wordpress.com/2009/12/01/introducing-shaman-a-new-universal-package-management-frontend/</link>
		<comments>http://drfav.wordpress.com/2009/12/01/introducing-shaman-a-new-universal-package-management-frontend/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 14:20:03 +0000</pubDate>
		<dc:creator>drfav</dc:creator>
				<category><![CDATA[Arch]]></category>
		<category><![CDATA[Chakra]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[KDEmod]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[Shaman]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[aqpm]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[package management]]></category>
		<category><![CDATA[packagekit]]></category>
		<category><![CDATA[pacman]]></category>
		<category><![CDATA[policykit]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[yum]]></category>

		<guid isPermaLink="false">http://drfav.wordpress.com/?p=188</guid>
		<description><![CDATA[Hello people,
yes, you can shiver at the title: we have (are still, actually) done a new package management frontend. Why? Because KDE missed a great one. Maybe some of you using Arch Linux will recognize the name Shaman: it is the default package manager frontend in Chakra, and my very first project with Qt. As [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=188&subd=drfav&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Hello people,</p>
<p>yes, you can shiver at the title: we have (are still, actually) done a new package management frontend. Why? Because KDE missed a great one. Maybe some of you using Arch Linux will recognize the name Shaman: it is the default package manager frontend in Chakra, and my very first project with Qt. As such, it has grown quite old, and it&#8217;s showing the limits of my early programming skills, which made it almost unmaintainable by now. So me and Lukas (boom1992) decided to take it on a whirl and rewriting it from the ground up, with a more ambitious goal. We had some clear goals in mind:</p>
<ul>
<li>It should have been extensible to any package management system and integrated with it</li>
<li>It should remain simple, and be extendable to the sky throughout plugins</li>
<li>It should be completely asynchronous to bring the user the best possible experience</li>
<li>It should be scriptable, to lower the barrier of the contributors and open up more possibilities to backends not in the C realm</li>
</ul>
<p>There is one platform which actually makes this all possible, and it&#8217;s KDE <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  So we created Shaman 2. What is it?</p>
<p><strong>Chapter 1: Shaman for Developers</strong></p>
<p>Before being a package manager, it is a library. Think about it as the Solid or the Phonon of package management. This library provides an easy to use interface to implement frontends, and an abstraction layer for building plugins and backends. A backend is an interface to a package management system, such as apt, yum, packagekit, alpm, whatever. It is implemented as a static plugin that will be chosen upon build. People who need to implement a backend have to reimplement Shaman::BackendInterface and Shaman::Package, and make it work. It&#8217;s really easy to do: the current packagekit backend weights ~900 lines of code (and a lot of them are made of strings) and it&#8217;s almost feature complete.</p>
<p>Also, in the spirit of giving the backend developers the maximum flexibility, not forcing them into workarounds and getting the best possible performance/user experience ratio, you can implement delayed loading, custom caching of the information, custom progress reporting (soon), custom searching implementations and more. Shaman comes already preloaded with &#8220;Insane rockstar settings&#8221; (cit.), a backend for PackageKit and one for Aqpm (pacman), but we are looking forward to people who would like to port Shaman 100% natively on platforms not fully supported by PackageKit. For example, Shaman will support soon streaming transaction questions with custom widgets and creating scripted backends. Did you see any references to apt and/or debconf here? I did not.</p>
<p>At the moment all the code in Shaman runs unprivileged: in the near future, though, it will be given the possibility to create a backend with root privileges just by giving a switch to Shaman at compile time. Thanks to some PolicyKit+DBus magic, the backend (and only the backend) will be run privileged and will require authorization to perform any actions. You still have the option of running Shaman as root, but these days it&#8217;s really nonsense. You can also simply bypass such a possiblity and implement this straight into the backend (as Aqpm and PackageKit do), but this boils down to be your choice.</p>
<p>What is extremely cool about Shaman, though, is its plugin system. Almost any functionality can be implemented through plugin, from the GUI or the core side. In fact, the 2 main widgets of the Shaman interface are plugins as well. Plugins have a very important role in Shaman, and can also play an active part in transactions. Every plugin, in fact, can register some &#8220;Hook&#8221;, that can be run after and/or before a transaction. Pre transaction hooks have also the power of reporting fatal errors and aborting the upcoming transaction before it even starts. As you can imagine, there&#8217;s a lot of room for making Shaman fully integrated with the underlying distribution and perform some annoying tasks not belonging to the package management system. For example, what about a plugin that after a transaction checks if the kernel was upgraded, and in case rebuilds the VirtualBox kernel module?</p>
<p>Scripting support, as I told you, is a priority. Even if it&#8217;s not working right now due to constant changes in the API, it will be made ready as soon as we reach a semi-stable API, and it will use Kross. The basics are already there and ready, so it&#8217;s just a matter of time. Help welcome on this side, especially from some Kross masters around <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The API is still unstable but it&#8217;s stabilizing as I write this. You know where to reach me, if you&#8217;re interested, we can have a chat and you can bug me with some questions <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I look forward to plugin and backend developers</p>
<p><strong>Chapter 2: Shaman for users</strong></p>
<p>Anyway, what about the user interface? The user interface is meant to be non-modal when and where possible, simple &amp; easy to use yet detailed, still remaining beautiful. How does it look like as of today? (Some screenshot here on Arch, some on Fedora, using Aqpm and PackageKit)</p>

<a href='http://drfav.wordpress.com/2009/12/01/introducing-shaman-a-new-universal-package-management-frontend/shaman1/' title='Shaman on Arch'><img width="150" height="95" src="http://drfav.files.wordpress.com/2009/12/shaman1.png?w=150&#038;h=95" class="attachment-thumbnail" alt="Shaman as it appears on Arch now" title="Shaman on Arch" /></a>
<a href='http://drfav.wordpress.com/2009/12/01/introducing-shaman-a-new-universal-package-management-frontend/shaman2/' title='Shaman is loading'><img width="150" height="77" src="http://drfav.files.wordpress.com/2009/12/shaman2.png?w=150&#038;h=77" class="attachment-thumbnail" alt="Shaman is loading itself" title="Shaman is loading" /></a>
<a href='http://drfav.wordpress.com/2009/12/01/introducing-shaman-a-new-universal-package-management-frontend/shaman3/' title='Shaman waiting for a lock'><img width="150" height="77" src="http://drfav.files.wordpress.com/2009/12/shaman3.png?w=150&#038;h=77" class="attachment-thumbnail" alt="Shaman on Fedora waiting for a lock" title="Shaman waiting for a lock" /></a>
<a href='http://drfav.wordpress.com/2009/12/01/introducing-shaman-a-new-universal-package-management-frontend/shaman4/' title='Shaman on Fedora'><img width="150" height="77" src="http://drfav.files.wordpress.com/2009/12/shaman4.png?w=150&#038;h=77" class="attachment-thumbnail" alt="Shaman on Fedora" title="Shaman on Fedora" /></a>
<a href='http://drfav.wordpress.com/2009/12/01/introducing-shaman-a-new-universal-package-management-frontend/shaman6/' title='Shaman downloading packages'><img width="150" height="77" src="http://drfav.files.wordpress.com/2009/12/shaman6.png?w=150&#038;h=77" class="attachment-thumbnail" alt="Package download" title="Shaman downloading packages" /></a>
<a href='http://drfav.wordpress.com/2009/12/01/introducing-shaman-a-new-universal-package-management-frontend/shaman8/' title='Shaman processing queue'><img width="150" height="77" src="http://drfav.files.wordpress.com/2009/12/shaman8.png?w=150&#038;h=77" class="attachment-thumbnail" alt="After download, queue processing takes place" title="Shaman processing queue" /></a>
<a href='http://drfav.wordpress.com/2009/12/01/introducing-shaman-a-new-universal-package-management-frontend/shaman9/' title='Packages installed'><img width="150" height="77" src="http://drfav.files.wordpress.com/2009/12/shaman9.png?w=150&#038;h=77" class="attachment-thumbnail" alt="Transaction completed" title="Packages installed" /></a>

<p>P.S.: The interface is changing by the minute and the default dialog sizes are much smaller than shown. Hey, this is a preview footage after all <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>You might or might not have noticed some small differences in the PackageKit and Aqpm UI. This is because Shaman adapts its UI depending on the capabilities of the backend. So you will never be shown something your backend does not know about. Well, unless the backend developer is cheating, of course <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Shaman implements also some neat stuff: for example, your queue is retained on exit. This means that if you mark some packages to be processed, then your girlfriend calls you and you realize being already 30 minutes late for your date, just don&#8217;t worry: close Shaman and turn off your PC: the next time you will start Shaman, it will automagically restore the last queue, which will be ready to be processed. There is also a transaction logger ready for you, so that you won&#8217;t lose any bit of history.</p>
<p>There is also security: Shaman is meant to be run as a standard user, using technologies such as PolicyKit and KAuth for granting authorizations for privileged actions.</p>
<p>And it installs, removes and upgrades your packages too!</p>
<p><strong>Near future development</strong></p>
<p>Shaman as the frontend is only the first product in our quest to provide a fully integrated and KDE branded experience for package management. Those of you who used/tried Chakra might have run into, and hopefully loved, Chase, the automatic update system. Chase will be improved and ported over to libshaman (not a lot of work actually), to provide automatic updates in a fully integrated way. And there is also some stuff boiling in our minds to bring to Plasma some of the package management: we are planning on a Plasmoid which will serve as a global visualizator for transactions done through libshaman, and will also provide some very basic package management functions. All the three tools (Automatic updates, plasma widget/engine, Shaman) will be tightly integrated and cooperating, instead of conflicting (just as it happens with Shaman 1 and Chase in Chakra right now), to provide users an easy and integrated way of managing their software.</p>
<p><strong>That&#8217;s all, folks</strong></p>
<p>And I sincerely hope I raised some interest <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I am actually looking forward to distribution developers to get excited and use Shaman in their own distros. Up to now I have a VM for Fedora and Debian where Shaman runs great using the PackageKit backend.</p>
<p>The most important thing, is that Shaman is still not ready to be used. But for the brave souls and curious developers, playground/sysadmin/shaman is the place to be</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/drfav.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/drfav.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/drfav.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/drfav.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/drfav.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/drfav.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/drfav.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/drfav.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/drfav.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/drfav.wordpress.com/188/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=188&subd=drfav&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://drfav.wordpress.com/2009/12/01/introducing-shaman-a-new-universal-package-management-frontend/feed/</wfw:commentRss>
		<slash:comments>45</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/01faf7015408f7f3e252055682e5f8ef?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drfav</media:title>
		</media:content>
	</item>
		<item>
		<title>Small update: Power management bug week(s)</title>
		<link>http://drfav.wordpress.com/2009/11/27/small-update-power-management-bug-weeks/</link>
		<comments>http://drfav.wordpress.com/2009/11/27/small-update-power-management-bug-weeks/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 16:37:31 +0000</pubDate>
		<dc:creator>drfav</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PowerDevil]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[power]]></category>
		<category><![CDATA[powerdevil]]></category>
		<category><![CDATA[powermanagement]]></category>
		<category><![CDATA[solid]]></category>

		<guid isPermaLink="false">http://drfav.wordpress.com/2009/11/27/small-update-power-management-bug-weeks/</guid>
		<description><![CDATA[Hello people, long time no blog.
I have a lot of interesting news for you, I will write a couple of posts in the next days about them. Today I just wanted to give out a small quick update on Power Management, following the drill of Sebastian
So, for the next 2 weeks (and given the freeze [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=185&subd=drfav&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Hello people, long time no blog.</p>
<p>I have a lot of interesting news for you, I will write a couple of posts in the next days about them. Today I just wanted to give out a small quick update on Power Management, following the <a href="http://vizzzion.org/blog/2009/11/battery-improvements-in-kde-plasma-4-4/">drill of Sebastian</a></p>
<p>So, for the next 2 weeks (and given the freeze time) I happily try to declare and organize the Power Management bug weeks! 2 weeks in which I will dedicate to clear out the list of bugs in Powerdevil and Solid::PowerManagement. Of course I will need your help. It would be nice to have a &#8220;central&#8221; day, like a small powermanagement bug day in the middle of that. Since I never did such a thing, it would be nice to have some info/help from our bugsquad.</p>
<p>In the meanwhile, if you feel like closing some duplicates, reproducing and providing more information on existing bugs, it would be an extremely valuable help.</p>
<p>More news on completely different stuff coming up soon, stay tuned <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/drfav.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/drfav.wordpress.com/185/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/drfav.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/drfav.wordpress.com/185/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/drfav.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/drfav.wordpress.com/185/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/drfav.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/drfav.wordpress.com/185/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/drfav.wordpress.com/185/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/drfav.wordpress.com/185/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=185&subd=drfav&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://drfav.wordpress.com/2009/11/27/small-update-power-management-bug-weeks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/01faf7015408f7f3e252055682e5f8ef?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drfav</media:title>
		</media:content>
	</item>
		<item>
		<title>KAuth in use: privileged KCModules</title>
		<link>http://drfav.wordpress.com/2009/09/15/kauth-in-use-privileged-kcmodules/</link>
		<comments>http://drfav.wordpress.com/2009/09/15/kauth-in-use-privileged-kcmodules/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 10:09:28 +0000</pubDate>
		<dc:creator>drfav</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[kauth]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[policykit]]></category>
		<category><![CDATA[stuff]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://drfav.wordpress.com/2009/09/15/kauth-in-use-privileged-kcmodules/</guid>
		<description><![CDATA[Hello people,
Today I want to write a more extensive introduction and how-to, with the KAuth API being finalized, on writing a privileged KCModule. Please note that this information will be soon on Techbase as well.
So, before we start, why should you read this post?

Because you&#8217;re a developer who needs to develop an application requiring high [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=183&subd=drfav&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Hello people,</p>
<p>Today I want to write a more extensive introduction and how-to, with the KAuth API being finalized, on writing a privileged KCModule. Please note that this information will be soon on Techbase as well.</p>
<p>So, before we start, why should you read this post?</p>
<ul>
<li>Because you&#8217;re a developer who needs to develop an application requiring high privileges</li>
<li>Because you&#8217;re a developer who needs to develop an application requiring authorization</li>
<li>Because you&#8217;re a curious developer</li>
<li>Because you&#8217;re a curious user</li>
</ul>
<p>So, defined the target audience, here we go <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Back in the KDE3 days, we had an &#8220;Administration mode&#8221; button, that basically removed the kcm widget, XEmbedded another widget running as root into the kcmshell, and that&#8217;s it. Pretty ugly and unsecure, but still working. Most of all, the developer did not know what was happening under the hood, since what happened is in no way different than issuing right now &#8220;sudo kcmshell4 &lt;module&gt;&#8221;. In KDE4(.4), things are different.</p>
<p>We do not have an &#8220;Administrator mode&#8221; button, neither widgets being embedded. We do have small helper applications running in the background with high privileges, performing the requested action only if explicitely authorized by the underlying policy system. And we have an easy API, that extends throughout KDEUI and KCModule to make things transparent, customizable, yet extremely easy to the developer.</p>
<p>So let&#8217;s start. We are trying to create &#8220;fookcm&#8221;, a kcmodule for writing to /etc/foo the lines &#8220;foo&#8221;. So important. As you, experienced developer should know, the first lines will look like this:</p>
<p><code>K_PLUGIN_FACTORY(FooKCMFactory, registerPlugin&lt;FooKCM&gt;();) K_EXPORT_PLUGIN(FooKCMFactory("fookcm")) <br />FooKCM::FooKCM(QWidget *parent, const QVariantList &amp;)<br />: KCModule(FooKCMFactory::componentData(), parent)<br />{<br />KAboutData *about =<br />new KAboutData(I18N_NOOP("fookcm"), 0, ki18n("Da foo KCM"),<br />0, KLocalizedString(), KAboutData::License_GPL, ki18n("(c) foo"));</code></p>
<p>Remember well the name we gave to the module (fookcm), we will need it later. So you wonder what we need to add to the constructor to make the magic happen. A single line: </p>
<p>setNeedsAuthorization(true);</p>
<p>What does that do? A variety of things:</p>
<ul>
<li>It maps the KCM to the action org.kde.kcontrol.&lt;modulename&gt;.save. So our save action is named org.kde.kcontrol.fookcm.save. Keep this in mind, we&#8217;ll need it later</li>
<li>It turns kcmshell/and or systemsettings Ok and Apply buttons authAction property to the newly mapped action, so that buttons reflect the action state (eg: they are disabled, show a key instead of the icon, etc)</li>
<li>It sets some additional visual feedback to the kcmodule.</li>
</ul>
<p>After this line, your header (obviously after the action install phase, which I&#8217;ll show you later on) when you are required to authenticate will look something like this:</p>
<p><img src="http://drfav.files.wordpress.com/2009/09/snapshot1.png" title="The header" alt="This is how the header will look like" /></p>
<p>Neat, isn&#8217;t it? But to achieve this, a small thing needs to be done. We need to create an action file. So let&#8217;s just open your favorite editor on fookcm.actions (the &#8220;actions&#8221; extension is mandatory to let scripty translate your file successfully) and let&#8217;s write this down:</p>
<p><code>[Domain]<br />Name=Foo configuration<br />Icon=foo</p>
<p>[org.kde.kcontrol.fookcm.save]<br />Name=Save the foo<br />Description=Authentication is required for saving the foo<br />Policy=auth_admin</code></p>
<p>It is pretty straightforward, but let&#8217;s see this in detail. The structure is a standard ini file. You can define an unlimited number of actions in each actions file, provided they belong to the same domain (in this case org.kde.kcontrol.fookcm). The group name is the action name, Name is what will appear when you will browse the PolicyKit Authorization module, and Description is the message that will appear in the auth dialog. Policy is mandatory as well, and defines the default policy. It can be yes, no, auth_self or auth_admin. There is also an optional field, Persistence, that will define the default persistence of the authentication. There is also a special &#8220;Domain&#8221; group: this defines some additional settings that will affect all the actions under the domain you&#8217;re configuring. You can set the Name, that will appear as the folder name in the PolicyKit authorization module, and an icon that will be shown both in the authorization module and dialog. The whole Domain group is advised for better feedback, but not mandatory.</p>
<p>Done that, we need a small magic in our CMakeLists.txt. We need to register the actions like this:</p>
<p>kde4_install_auth_actions(org.kde.kcontrol.fookcm fookcm.actions)</p>
<p>Straightforward as well. Just define the helper ID (which basically is the action domain) and the action file. This will take care of generating and installing the actions for you.</p>
<p>So now we have our beautiful kcmodule with all bells and whistles and our save() function will be called just if the user is authorized to save the module. But we&#8217;re missing one step, huh? We actually want to save stuff in /etc, so we need high privileges. Then it&#8217;s time to create our helper.</p>
<p>Creating an helper is really easy with KAuth, since with the tools the library provides you, you won&#8217;t even know another application is running in the background. The helper has also remote debugging, so if you issue a qDebug() from the helper application, you will see the output in your main application. So you really don&#8217;t have to care about the fact it&#8217;s separate. But let&#8217;s get to the point.</p>
<p>Let&#8217;s create a new class for the helper, let&#8217;s name it FooHelper. The header file would look like this:</p>
<p><code>#include &lt;kauth.h&gt; </p>
<p>using namespace KAuth; </p>
<p>class FooHelper : public QObject<br />{<br />Q_OBJECT</p>
<p>public slots:<br />ActionReply save(const QVariantMap &amp;map);<br />};</code></p>
<p>There are some small but important details here. For every action our helper implements, we need to define a slot that has EXACTLY the same name as the action itself (so save), returns an ActionReply and accepts a QVariantMap. It&#8217;s EXTREMELY important that the return type is an ActionReply and not a KAuth::ActionReply, eg you have to use using namespace KAuth. Short explaination: otherwise things won&#8217;t work. Long explaination: we&#8217;re using QMetaObject::invokeMethod for calling the actions, and it is extremely picky about namespaces.</p>
<p>To understand better the arguments, let&#8217;s have a look at how to implement save() in our kcm</p>
<p><code>void FooKCM::save() {<br />KAuth::Action *action = authAction();<br />QVariantMap args;<br />args["path"] = "/etc/foo";<br />args["contents"] = "foooooo";<br />action-&gt;setArguments(args);<br />KAuth::ActionReply reply = action-&gt;execute(); </code></p>
<p>I did not write the followup, where you actually check the result of the reply and act accordingly. So what we do here is grabbing the authAction of our KCModule, attaching some arguments, and executing it synchronously. I think you can now realize the reason for the arguments of the save function of the helper. ActionReply can also carry a QVariantMap, so you have a way of returning data back from the helper. In any case, returning ActionReply::SuccessReply will just tell the main application that everything went well.</p>
<p>Almost done (I&#8217;m just skipping the save implementation in the helper, as it is really stupid). We need two more small things, one in the helper implementation (our foohelper.cpp) and one of course in cmake. The first one is a macro, and it goes like this:</p>
<p>KDE4_AUTH_HELPER_MAIN(&#8220;org.kde.kcontrol.fookcm&#8221;, FooHelper)</p>
<p>What does it do? It accepts our helper ID (so the actions&#8217; domain), and the class which represents the helper itself. Under the hood, it creates a main function for the helper instantiating and registering your class. CMake stuff is pretty straightforward as well:</p>
<p><code>kde4_add_executable(fookcmhelper foohelper.cpp)<br />target_link_libraries(fookcmhelper ${KDE4_KDECORE_LIBS})<br />install(TARGETS fookcmhelper DESTINATION ${LIBEXEC_INSTALL_DIR})<br />kde4_install_auth_helper_files(fookcmhelper org.kde.kcontrol.fookcm root)</code></p>
<p>It adds a new executable, that has to be installed (this is mandatory) in LIBEXEC_INSTALL_DIR. Installing it elsewhere will make things fail. The additional macro you surely spotted takes as arguments the target, the helper ID associated to it, and the user under which the helper will run on. Yes, you can also create helpers not running as root! This can be extremely useful to improve security in some cases. Under the hood, this macro generates and installs a lot of files. It creates a dbus policy for your helper, so that it will be able to be exposed on the system bus, and an activation file, to make it start up automatically. As you probably have realized by now, the helper ID is nothing else but the service name of the helper. But as you noticed, you (as a developer) do not even know that DBus is running under the hood, as you don&#8217;t see/have to write a single line of DBus related code.</p>
<p>That&#8217;s it. You now have a nicely integrated, rock-solid, clean and extremely secure KCModule that saves data with high privileges. I&#8217;m not covering why it is secure (you can read about Polkit and/or Authorization Services if you are interested) as this post is already long enough.</p>
<p>Also, what I&#8217;ve shown you is just a very basic usage of KAuth. You can, for example, execute actions asynchronously, and stream progress of an action, and even data from your helper. To learn more about KAuth, go now to the <a href="http//api.kde.org" title="KDE API Documentation" target="_blank">KDE API Documentation</a> for a complete overview of KAuth and its capabilities, and be sure to have a look at the <a href="http://api.kde.org/4.x-api/kdelibs-apidocs/kdecore/html/namespaceKAuth.html" target="_blank">KAuth namespace documentation</a>, which features a really extensive introduction/tutorial that will be reformatted as well to be included in Techbase.</p>
<p>Now, before you start yelling this is the best thing you&#8217;ve ever seen, there are also some caveats you might want to be aware of and, of course, avoid:</p>
<ul>
<li>If you are using a non-standard type in your QVariant, Q_DECLARE_METATYPE is not enough. Data is streamed through the bus in a binary datastream, so you have to implement custom operator&lt;&lt; and operator&gt;&gt; of QDataStream for your class. Please read QDataStream documentation for more details about this.</li>
<li>KAuth needs to install some files in privileged and specific locations. In particular, if you are installing stuff in a different prefix than /usr, things will not work out of the box. You have to tweak DBus configuration and move PolicyKit files to /usr (even though the PolicyKit guys are fixing that) to make things work. But be careful in editing DBus configuration as you might end up screwing your system. More details on that will follow on the TechBase tutorial. If you are installing KDE from packages you can simply ignore this, or blame your packager.</li>
<li>I noticed (at least here) that sometimes DBus does not recognize immediately new policies/autostart services. Before screaming about things not working, you might want to try restarting DBus first.</li>
</ul>
<p>That&#8217;s all, folks. Hope you enjoyed this, please give me some feedback before I push a refined version of this tutorial on TechBase.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/drfav.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/drfav.wordpress.com/183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/drfav.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/drfav.wordpress.com/183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/drfav.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/drfav.wordpress.com/183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/drfav.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/drfav.wordpress.com/183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/drfav.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/drfav.wordpress.com/183/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=183&subd=drfav&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://drfav.wordpress.com/2009/09/15/kauth-in-use-privileged-kcmodules/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/01faf7015408f7f3e252055682e5f8ef?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drfav</media:title>
		</media:content>

		<media:content url="http://drfav.files.wordpress.com/2009/09/snapshot1.png" medium="image">
			<media:title type="html">The header</media:title>
		</media:content>
	</item>
		<item>
		<title>Bilbo blogger Test</title>
		<link>http://drfav.wordpress.com/2009/09/14/bilbo-blogger-test/</link>
		<comments>http://drfav.wordpress.com/2009/09/14/bilbo-blogger-test/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 17:46:12 +0000</pubDate>
		<dc:creator>drfav</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://drfav.wordpress.com/2009/09/14/bilbo-blogger-test/</guid>
		<description><![CDATA[Just testing Bilbo Blogger.
Looks like it could actually rock.

So byebye wordpress web interface!
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=180&subd=drfav&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Just testing Bilbo Blogger.</p>
<p>Looks like it could actually rock.</p>
</p>
<p><strong>So byebye wordpress web interface!</strong></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/drfav.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/drfav.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/drfav.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/drfav.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/drfav.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/drfav.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/drfav.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/drfav.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/drfav.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/drfav.wordpress.com/180/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=180&subd=drfav&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://drfav.wordpress.com/2009/09/14/bilbo-blogger-test/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/01faf7015408f7f3e252055682e5f8ef?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drfav</media:title>
		</media:content>
	</item>
		<item>
		<title>Tokamak Wrap-up</title>
		<link>http://drfav.wordpress.com/2009/09/06/tokamak-wrap-up/</link>
		<comments>http://drfav.wordpress.com/2009/09/06/tokamak-wrap-up/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 11:50:44 +0000</pubDate>
		<dc:creator>drfav</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[beer]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[kauth]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[niceness]]></category>
		<category><![CDATA[plasma]]></category>
		<category><![CDATA[randa]]></category>
		<category><![CDATA[tokamak]]></category>

		<guid isPermaLink="false">http://drfav.wordpress.com/?p=178</guid>
		<description><![CDATA[So, quite lately, but it&#8217;s my time as well to write a small wrapup on this wonderful Tokamak. Shame I had to leave earlier than all the other guys due to an exam, but I managed to have a great time anyway. I met a lot of people who I really wanted to get in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=178&subd=drfav&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>So, quite lately, but it&#8217;s my time as well to write a small wrapup on this wonderful Tokamak. Shame I had to leave earlier than all the other guys due to an exam, but I managed to have a great time anyway. I met a lot of people who I really wanted to get in touch with since a lot of time, and it was great sharing rooms and beds with a lot of people you work with all the year but you somehow manage to meet in person just in some special occasions just like this one <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The location was lovely, the host even more, so Mario keep your mobile switched on as I could call you anytime to share a beer together in the beautiful randa again. And I also hope I won&#8217;t have to wait some more years to catch up again with all the great KDE people I met in Switzerland.</p>
<p>Of course, it was not just about socializing. We also pushed a lot of new stuff, which we will refine and get ready for 4.4. KAuth is almost stable BC/SC wise (will be soon on cmake side, since some macros are still being discussed by me and Alexander), and it took really some pain to push it in. Pushing a new framework that relies on generating some special files in kdecore can be difficult and you sometimes need to take the most difficult route to lead to innovation.</p>
<p>I had also a lot of valuable reviews after pushing stuff in trunk. I had seen this coming, and this is probably the most important reason why I pushed this framework that early in the development cycle. This way, I sure have to change some stuff around in kdelibs/kdebase, but I am also sure that when we have 4 months yet since 4.4 release, we have a 100% tested and reviewed framework ready. I realized during all my time in KDE that kdereview, for this kind of stuff, is really not enough; and I was proven right <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>What am I going to do in the next days: some tutorials for developers (still did not write anything due to the fact that we&#8217;re still stabilizing the API), some more talking with people interested to use KAuth for their stuff, and make a plan for trying to integrate KAuth into KIO::File. It&#8217;s a difficult task, but we have some great people ready to help (Davide, Nicola, Riccardo), and we really want to get this feature in, so we&#8217;ll try our best.</p>
<p>And some stuff for users (hoping that Sebastian will push the nice &#8220;commercial&#8221; videos we made <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  ), such as screencasts, screenshots and whatever to let you know what this thing is bringing to your table.</p>
<p>All in all, we really managed to join productivity and fun in a way I did not think was possible, but this is what happens when you share some days with some of the best developers (and crazy people) out there. You guys rock, thank you for the great time I (and you hopefully) had, and I&#8217;m really looking forward to see you again!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/drfav.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/drfav.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/drfav.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/drfav.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/drfav.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/drfav.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/drfav.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/drfav.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/drfav.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/drfav.wordpress.com/178/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=178&subd=drfav&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://drfav.wordpress.com/2009/09/06/tokamak-wrap-up/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/01faf7015408f7f3e252055682e5f8ef?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drfav</media:title>
		</media:content>
	</item>
		<item>
		<title>Tokamak: KAuth into kdelibs</title>
		<link>http://drfav.wordpress.com/2009/08/31/tokamak-kauth-into-kdelibs/</link>
		<comments>http://drfav.wordpress.com/2009/08/31/tokamak-kauth-into-kdelibs/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 10:35:36 +0000</pubDate>
		<dc:creator>drfav</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[authorization services]]></category>
		<category><![CDATA[kauth]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[policykit]]></category>

		<guid isPermaLink="false">http://drfav.wordpress.com/?p=173</guid>
		<description><![CDATA[Yes, KAuth is finally in KDELibs. Yes, systemsettings has integration. Yes, the first module (date/time) is already ported &#38; ready. I know this was a long awaited feature by many of you, and now it&#8217;s in. But today, I want to show developers how to enjoy the new power of this framework.
First of all, what [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=173&subd=drfav&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Yes, KAuth is finally in KDELibs. Yes, systemsettings has integration. Yes, the first module (date/time) is already ported &amp; ready. I know this was a long awaited feature by many of you, and now it&#8217;s in. But today, I want to show developers how to enjoy the new power of this framework.</p>
<p>First of all, what is it? It is the first known framework to check for authorizations by fine granting them and/or granting applications high privileges in a transparent, secure way completely integrated with the desktop and completely native and multiplatform. So you have quite some power in your hands. Why should you use it? Well, if you want to lock out users from certain features, for example, or to perform privileged actions. But let&#8217;s get into details.</p>
<p>KPushButton and KAction have 2 new methods, which are setAuthAction and authAction. Just set a KAuth::Action into one of them and you will have the following things for free: the authentication will be automatically triggered when the action/button has been triggered, you will get an authorized() signal when the user actually got the authorization, and the button/action change their availability and appearance according to the action status. Quite straightforward, huh?</p>
<p>KCModule has a new method as well. It&#8217;s (set)needsAuthorization(). Whenever you set this to true, an action for it will be created, named &#8220;org.kde.kcontrol..save&#8221;, where name is your KCM&#8217;s main as specified in the KAboutData. Just do this, and you get all the ui integration for free and save() will get called just when the user grants that authorization. Even simpler, isn&#8217;t it?</p>
<p>Want to have a look? A tutorial on Techbase is coming up, but for now, you can simply have a look at kdebase/workspace/kcontrol/datetime and kdelibs/kdecore/auth/example to have an idea. I&#8217;ll ping you back when the tutorial gets ready <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  oh, and api.kde.org is your friend as well, Nicola made a great work in documenting all the library just for you guys to pick it up.</p>
<p>So put your thumbs up for a great GSoC project ended, and stay tuned, because this is just the beginning. The next keywords are now: KIO, GHNS, and KIOSK.</p>
<p>And put your hands up for the fun and the productivity we are having at Tokamak 3!!!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/drfav.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/drfav.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/drfav.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/drfav.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/drfav.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/drfav.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/drfav.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/drfav.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/drfav.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/drfav.wordpress.com/173/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=173&subd=drfav&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://drfav.wordpress.com/2009/08/31/tokamak-kauth-into-kdelibs/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/01faf7015408f7f3e252055682e5f8ef?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drfav</media:title>
		</media:content>
	</item>
		<item>
		<title>My take on the Mono/C# debate</title>
		<link>http://drfav.wordpress.com/2009/07/01/my-take-on-the-monoc-debate/</link>
		<comments>http://drfav.wordpress.com/2009/07/01/my-take-on-the-monoc-debate/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 17:12:57 +0000</pubDate>
		<dc:creator>drfav</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[gtk]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[money]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[shit]]></category>
		<category><![CDATA[solving problems]]></category>

		<guid isPermaLink="false">http://drfav.wordpress.com/?p=170</guid>
		<description><![CDATA[As you might have understood if you&#8217;re reading me, if you&#8217;re easily offendable on this matter, you&#8217;d better skip this post.
So, i figured out I should shout out something. Because I am always interested in hearing skilled, readable, balanced and well-made opinions from people such as Richard or Adrian, but I&#8217;m fucking tired of hearing [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=170&subd=drfav&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>As you might have understood if you&#8217;re reading me, if you&#8217;re easily offendable on this matter, you&#8217;d better skip this post.</p>
<p>So, i figured out I should shout out something. Because I am always interested in hearing skilled, readable, balanced and well-made opinions from people such as Richard or Adrian, but I&#8217;m fucking tired of hearing random people screaming out why mono is cool or not. These kind of people don&#8217;t even know what coding is about, or they just learned Java or C# at university and they&#8217;re like &#8220;oh shit, I can code!!&#8221;. STOP THAT.</p>
<p>This is a technical, and ethical problem that regards DEVELOPERS. Users will end up having choice. All you pro/anti-mono fanboys, what is difficult in installing or removing mono, being it provided by default or not? No matter what your position is.</p>
<p>After this small rant, hoping to have made some things clearer, let&#8217;s move forward.</p>
<p>I&#8217;d like to skip the ethics/politics part for a variety of reasons. First of all, I&#8217;m all for things that work, if they&#8217;re free, much better. That&#8217;s why I&#8217;m using closed nVidia drivers, because they work better. Secondly, everyone has freedom of choice. And this also means freedom on choosing where to be free. And I hope some false freedom advocates will revise their concept of freedoms. One should be free of being not free as well. And more than that, this is not my field, so I&#8217;ll just leave the word to someone knowledgeable (following what I said before)</p>
<p>That said.</p>
<p>I am still asking myself why on earth people should need Mono, .NET, C# or similar stuff. I am starting to think that while more and more people are starting to code, the overall coding skills are getting lower and lower. Maybe it&#8217;s just me being too strict in using almost always C/C++, but I remain extremely confident in the fact that if you don&#8217;t know how/don&#8217;t want to manage memory, you should be doing something else. I&#8217;m not saying that using python, ruby or similar stuff is bad: I do it as well, and enjoy doing it. I think being capable of using JUST python, ruby or similar stuff is bad. Also for broadening your mind and knowledge. Just my opinion anyway.</p>
<p>Before you start yelling at me: yes I used C#, and some friends such as Java (similarity is almost ridicolous). I wrote about that as well. There were some things I liked, but a majority of things I disliked.</p>
<p>Now, comparing what Java/C# has to offer (just to demonstrate that I&#8217;m not blindly bashing C# only, that I also like better than Java) with Qt, there should be a single question.</p>
<p>Why on earth someone should choose C# over Qt/C++?</p>
<p>I don&#8217;t know, really. Maybe introspection, it&#8217;s much better. Maybe serialization, it really works out. Maybe something else. But when i talk about something that should be the backbone of your program, such as event loops, threading, events, and whatever, Qt/C++ puts C#+Forms/WPF/etc to shame. Please come up with some technical reasons why C# is better. And don&#8217;t start with compilation: I don&#8217;t think it&#8217;s so relevant for a deployment.</p>
<p>I don&#8217;t want to spend more time talking about this: you can verify what I&#8217;m telling you is true by looking at the percentage of KDE code written in languages different from C++. And we have some great bindings.</p>
<p>So, what&#8217;s the conclusion? Why people can still code fast, efficiently and easily with an &#8220;old&#8221; language like C++? Probably because the toolkit/framework integrates extremely well and extends the language to fit everyone&#8217;s need. That&#8217;s what Qt does.</p>
<p>So this is the point, on which you are free to flame me until death: the problem is GTK. Consider the amount of programs recently written in GTK. A huge percentage of them is in Python or Mono. Let&#8217;s be clear: I don&#8217;t have anything against bindings. But try stopping your flaming ego and follow me a bit more.</p>
<p>We have PyQt and Qyoto. Yet they are not so widespread and planetkde is filled with new C++/Qt apps. So where is the problem? Probably people are no longer comfortable in programming with GTK/C. I did it a while ago, and it was quite a pain to me actually, and it made me want to look into python, damn my laziness. I think that this is the kind of route a lot of people take nowadays.</p>
<p>Now you&#8217;re expecting a sort of GTK/GNOME flaming here, right? Well, bad for you. This was not meant to be a flame, just an introspection to understand the reason why mono existed (see the introduction). And my take is that mono is just a way to &#8220;modernize&#8221; something that is NOT obsolete (and I repeat: NOT obsolete), but simply no longer fitting the 2009 attitude of &#8220;oh shit I need to create a program in 3 lines of code!!!&#8221;. To demonstrate that I&#8217;m actually not attacking GNOME and/or GTK, I&#8217;ll give you Microsoft.</p>
<p>If you think about it, the iter that Microsoft followed for getting more developers is not that different from the one GTK took. So, what&#8217;s the conclusion?</p>
<p>Mono is not the panacea. Mono is a great way of developing easily, without spending that much time. But some skilled GNOME developers already showed the world (*cough*GNote*cough*) how Mono is NOT saving time to someone who is skilled and knows how to do things the right way. To me, GNote is not a symbol of freedom, but a symbol of the fact that people can still use GTK with success with C or C++ (and by this point I hope you realized that this is not a war against GTK, more some constructive criticysm).</p>
<p>So, Mono is nice to have, but not required to have, and not necessary to have. And I don&#8217;t see (today) a reason why a developer should choose C#/.NET/Mono over Qt or some other great frameworks out there. And I still think it is a nicer bridge FROM Linux TO Windows, and not the other way round. You should be blind if you can&#8217;t see it, or you&#8217;ve been simply hiding in your house without looking for a job those days. People need to make money, dude.</p>
<p>Last line, I bored you enough: my solution to the debate is not boycotting, insulting or anything: is having easier, crossplatform toolkits, and more skilled developers.</p>
<p>And now come on, the flaming box is just some pixels away from you!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/drfav.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/drfav.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/drfav.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/drfav.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/drfav.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/drfav.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/drfav.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/drfav.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/drfav.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/drfav.wordpress.com/170/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=170&subd=drfav&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://drfav.wordpress.com/2009/07/01/my-take-on-the-monoc-debate/feed/</wfw:commentRss>
		<slash:comments>57</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/01faf7015408f7f3e252055682e5f8ef?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drfav</media:title>
		</media:content>
	</item>
		<item>
		<title>Some help on a possible new instrument</title>
		<link>http://drfav.wordpress.com/2009/06/23/some-help-on-a-possible-new-instrument/</link>
		<comments>http://drfav.wordpress.com/2009/06/23/some-help-on-a-possible-new-instrument/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 10:58:00 +0000</pubDate>
		<dc:creator>drfav</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[band]]></category>
		<category><![CDATA[buy]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[rock]]></category>
		<category><![CDATA[synth]]></category>
		<category><![CDATA[synthesizer]]></category>

		<guid isPermaLink="false">http://drfav.wordpress.com/?p=168</guid>
		<description><![CDATA[Dear lazyweb,
As you know, it&#8217;s not in my style filling PlanetKDE with non-KDE related stuff, but this time I really need some help from the community, as I know that there are some good musicians around you.
I&#8217;m about to buy a synthesizer, since we&#8217;re adding some electronical influences in our band (we&#8217;re mostly playing rock [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=168&subd=drfav&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Dear lazyweb,</p>
<p>As you know, it&#8217;s not in my style filling PlanetKDE with non-KDE related stuff, but this time I really need some help from the community, as I know that there are some good musicians around you.</p>
<p>I&#8217;m about to buy a synthesizer, since we&#8217;re adding some electronical influences in our band (we&#8217;re mostly playing rock music). So, here it comes. I need something on a decent budget, with good action on the keys (I&#8217;m quite choosey as a pianist), and decent piano, strings, and lead sounds (square and sawtooth are the sounds that intrigue me the most at the moment, but I&#8217;m opening to a new world in which I&#8217;m quite ignorant).</p>
<p>I would use it with piano sounds, and with synth sounds, mostly to harmonize guitar parts (such as solos). I would let you taste a sample of our latest work but it&#8217;s still in the studio. Anyway, this synth should be suitable especially for live performances and optionally for composing.</p>
<p>At the moment, my choice for budget and everything is the <a href="http://www.roland.com/products/en/JUNO-G/index.html">roland Juno-G</a>. It fits my budget and it looks like it will fit my needs as well.</p>
<p>Here&#8217;s the question: any advice on this being a good/not bad/worst ever choice? Any other synths you would recommend me?</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/drfav.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/drfav.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/drfav.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/drfav.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/drfav.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/drfav.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/drfav.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/drfav.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/drfav.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/drfav.wordpress.com/168/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=168&subd=drfav&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://drfav.wordpress.com/2009/06/23/some-help-on-a-possible-new-instrument/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/01faf7015408f7f3e252055682e5f8ef?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drfav</media:title>
		</media:content>
	</item>
		<item>
		<title>Oslo, day two</title>
		<link>http://drfav.wordpress.com/2009/06/06/oslo-day-two/</link>
		<comments>http://drfav.wordpress.com/2009/06/06/oslo-day-two/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 08:26:08 +0000</pubDate>
		<dc:creator>drfav</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[Real Life]]></category>
		<category><![CDATA[beer]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[metal up your ass]]></category>
		<category><![CDATA[nokia]]></category>
		<category><![CDATA[oslo]]></category>
		<category><![CDATA[stuff]]></category>
		<category><![CDATA[trolls]]></category>

		<guid isPermaLink="false">http://drfav.wordpress.com/?p=164</guid>
		<description><![CDATA[Well, it&#8217;s day 3, but yesterday I had no time to blog or whatever, so I&#8217;m just writing with a day of delay.
So yesterday I woke up at a decent time to check out from Anker and getting to Munch. After having left my luggage over there, waiting for Will to arrive, I took a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=164&subd=drfav&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Well, it&#8217;s day 3, but yesterday I had no time to blog or whatever, so I&#8217;m just writing with a day of delay.</p>
<p>So yesterday I woke up at a decent time to check out from Anker and getting to Munch. After having left my luggage over there, waiting for Will to arrive, I took a tour of the Oslo fjord, which is really nice, especially the park around it. I had a nice and relaxing walk, and then I catched up with Will and headed up for Nokia offices.</p>
<p>Once there we met all Qt software guys, that were basically waiting for us after having read my previous blogpost. I suppose that is the web 2.0 deal everyone&#8217;s talking about. Anyway.</p>
<p>We had lunch with Knut, Thiago and Alexis and talked about some stuff, while waiting for Frederik and the students to catch up with us. We actually discussed some plans about the networkmanager applet and we now have a defined direction, that we will probably make real today. That was worth quite some hours of work, and we left the office around midnight to get some fun in the town.</p>
<p>So me, Frederik (who is basically sitting next to me writing probably the same stuff on his blog, and that feels kinda weird), Will and Olivier took the chance and went into the Garage having a beer. After Will left us, since he was really tired after his flight, the three of us went to Rock Inn to get another beer and some nice music.</p>
<p>Waking up today felt kinda hard, and me and Frederik are basically waiting for the other guys to arrive. Well, it&#8217;s always like people going to bed later are the ones waking up earlier. And hopefully, you should see some code today as well.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/drfav.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/drfav.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/drfav.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/drfav.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/drfav.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/drfav.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/drfav.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/drfav.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/drfav.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/drfav.wordpress.com/164/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=164&subd=drfav&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://drfav.wordpress.com/2009/06/06/oslo-day-two/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/01faf7015408f7f3e252055682e5f8ef?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drfav</media:title>
		</media:content>
	</item>
		<item>
		<title>Oslo, day one</title>
		<link>http://drfav.wordpress.com/2009/06/04/oslo-day-one/</link>
		<comments>http://drfav.wordpress.com/2009/06/04/oslo-day-one/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 17:15:49 +0000</pubDate>
		<dc:creator>drfav</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[Real Life]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[norway]]></category>
		<category><![CDATA[oslo]]></category>

		<guid isPermaLink="false">http://drfav.wordpress.com/?p=162</guid>
		<description><![CDATA[So I finally arrived in Oslo for the NM applet meeting. Today I&#8217;m alone, since the meeting starts tomorrow, but I came here one day before to cut the travel costs (yes, hard to believe, but it&#8217;s true) and I decided to write a small something everyday, since it&#8217;s a whole new experience for me.
I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=162&subd=drfav&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>So I finally arrived in Oslo for the NM applet meeting. Today I&#8217;m alone, since the meeting starts tomorrow, but I came here one day before to cut the travel costs (yes, hard to believe, but it&#8217;s true) and I decided to write a small something everyday, since it&#8217;s a whole new experience for me.</p>
<p>I left from Bergamo at 10.45. 2 hours and a half later and 20°C less after, I finally arrived in Torp, greeted by the awesome view of the Danish and Norwegian coasts, one of the most amazing things I&#8217;ve ever seen. It still took an hour and a half to get to Oslo, and some more time to reach Anker, where I&#8217;m staying just for this night (I&#8217;ll join the rest of the KDE people in Munch tomorrow). The room is really nice, especially for the price paid.</p>
<p>Oslo is kinda expensive, but I fit myself finding some pizza slices at 20kr (2 for 30). Not the best deal ever, but quite cheap for the standards indeed, I hope tonight I&#8217;ll be eating somewhere decent.</p>
<p>The city is nice. Well, it rained almost all the time, but I took the time to walk on the Opera theatre, have a quick look at the fortress, and  walk through the main streets of the city.</p>
<p>A fun fact is that I needed an adaptor for my PC. Without knowing which kind of ac plugs they had in Norway, I brought an english one from home, and came here to find out that they have german-like ones. So I went to a shop (on advice of the people at the hostel) to buy another adaptor, and they told me they the only ones they had were for english plugs. As you can imagine, my setup now consist of my laptop plugged into my adaptor, which is plugged into the adaptor I just bought. Lucky chance indeed.</p>
<p>Tonight I&#8217;ll look around for some pubs &amp; clubs, hoping to have a great night in Oslo. And if you&#8217;re hanging around there, be sure to catch us in the next days to join the fun!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/drfav.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/drfav.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/drfav.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/drfav.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/drfav.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/drfav.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/drfav.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/drfav.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/drfav.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/drfav.wordpress.com/162/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=162&subd=drfav&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://drfav.wordpress.com/2009/06/04/oslo-day-one/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/01faf7015408f7f3e252055682e5f8ef?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drfav</media:title>
		</media:content>
	</item>
	</channel>
</rss>