<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/1.5.1.3" -->
<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/"
>

<channel>
	<title>inactivity log for davidz</title>
	<link>http://blog.fubar.dk</link>
	<description>What's that? Chicken?</description>
	<pubDate>Wed, 16 Dec 2009 20:54:06 +0000</pubDate>
	<generator>http://wordpress.org/?v=1.5.1.3</generator>
	<language>en</language>

		<item>
		<title>udisks and gnome-disk-utility - past, present and future</title>
		<link>http://blog.fubar.dk/?p=108</link>
		<comments>http://blog.fubar.dk/?p=108#comments</comments>
		<pubDate>Wed, 16 Dec 2009 20:16:11 +0000</pubDate>
		<dc:creator>davidz</dc:creator>
		
	<category>Software</category>
		<guid>http://blog.fubar.dk/?p=108</guid>
		<description><![CDATA[	The past year or so I&#8217;ve been working a lot on gnome-disk-utility and DeviceKit-disks^Wudisks and I haven&#8217;t really blogged anything about it. Time to fix that!
	First of all, given that the main DeviceKit daemon was killed by libudev (if you are using GLib you want GUdev instead!), we (that is, myself and other contributors) decided [...]]]></description>
			<content:encoded><![CDATA[	<p>The past year or so I&#8217;ve been working a lot on <a href="http://git.gnome.org/cgit/gnome-disk-utility">gnome-disk-utility</a> and DeviceKit-disks^W<a href="http://cgit.freedesktop.org/DeviceKit/DeviceKit-disks/">udisks</a> and I haven&#8217;t really blogged anything about it. Time to fix that!</p>
	<p>First of all, given that the main <a href="http://cgit.freedesktop.org/DeviceKit/DeviceKit/">DeviceKit daemon</a> was killed by <a href="http://www.kernel.org/pub/linux/utils/kernel/hotplug/libudev/">libudev</a> (if you are using GLib you want <a href="http://www.kernel.org/pub/linux/utils/kernel/hotplug/gudev/">GUdev</a> instead!), we (that is, myself and other contributors) decided to <a href="http://lists.freedesktop.org/archives/devkit-devel/2009-December/000567.html">rename the project</a> - most people were cool with that; see <a href="http://lists.freedesktop.org/archives/devkit-devel/2009-December/000644.html">this message</a> for more reasons. One improvement in this area is that we&#8217;re committing to limited <a href="http://cgit.freedesktop.org/DeviceKit/DeviceKit-disks/tree/README#n17">ABI stability</a> - hopefully this will make things easier on distributors.</p>
	<p>Most of the work in the udisks project been triggered by features we want in the Palimpsest Disk Utility - which is the most prominent part of gnome-disk-utility - the other part includes <a href="http://people.freedesktop.org/~david/blog-entry-20091216/computer.png">various</a> <a href="http://people.freedesktop.org/~david/blog-entry-20091216/gdu-format.png">desktop</a> <a href="http://people.freedesktop.org/~david/blog-entry-20091216/gdu-luks-unlock.png">shell</a> <a href="http://people.freedesktop.org/~david/blog-entry-20091216/gnome-ata-smart-fail.png">integration</a> <a href="http://people.freedesktop.org/~david/blog-entry-20091216/nautilus-mdraid-2.png">bits</a> that I don&#8217;t have room to cover in this post.</p>
	<p>On the Disk Utility side, we&#8217;re now using an user interface that scales better with many disks - in the <a href="http://people.freedesktop.org/~david/blog-entry-20091216/old-ui.png">old user interface</a>, we used to show all partitions as children of each disk in the tree view. In the new user interface, we&#8217;re using a grid to convey the partitioning:</p>
	<p><center><a href="http://people.freedesktop.org/~david/blog-entry-20091216/partitioning.png"><img src="http://people.freedesktop.org/~david/blog-entry-20091216/partitioning-thumb.png" border="0"/></a> <br /> <i>Also see <a href="http://bugzilla.gnome.org/show_bug.cgi?id=579211">bgo #579211</a></i></center></p>
	<p>While this interface isn&#8217;t optimal for the laptop or the machine-with-only-a-single-disk cases, it works a lot better for machines with many disks</p>
	<p><center><a href="http://people.freedesktop.org/~david/blog-entry-20091216/palimpsest1.png"><img src="http://people.freedesktop.org/~david/blog-entry-20091216/palimpsest1-thumb.png" border="0"/></a> <br /> <i>Bunch of disks</i></center></p>
	<p>The Disk Utility also have somewhat complete support for <a href="http://en.wikipedia.org/wiki/Mdadm">MD RAID</a> (aka Software RAID on Linux) - we&#8217;ll show you <a href="http://people.freedesktop.org/~david/blog-entry-20091216/raid1.png">running arrays</a> and also arrays <a href="http://people.freedesktop.org/~david/blog-entry-20091216/raid2.png">not yet running</a>. There&#8217;s a way to <a href="http://people.freedesktop.org/~david/blog-entry-20091216/raid3.png">add/remove</a> components and currently I&#8217;m working on creating the UI for Online Capacity Expansion (e.g. dynamically expand a RAID-5 array from 4 to 8 drives).</p>
	<p>The <a href="http://en.wikipedia.org/wiki/S.M.A.R.T.">SMART</a> stuff has been revamped and there is now <a href="http://people.freedesktop.org/~david/blog-entry-20091216/smart1.png">a way</a> to turn off the desktop shell notifications. As it turns out a lot of our current users are like &#8220;I&#8217;m fine with using a disk that is about to fail&#8221; - kinda shocking but there you go. Another change is that we don&#8217;t consider a disk to be failing if there&#8217;s only a couple of bad sectors - the disk will have to have <a href="http://git.0pointer.de/?p=libatasmart.git;a=commitdiff;h=b7f3834654cb05f5a8aae6b2381d548f49d72987">many bad sectors</a> to be considered failing. This helps with all the <i>false positives</i> the SMART warnings generated in e.g. Fedora 11. Anyway, it seems like the desktop notifications are useful - more than a handful of people have pinged me on IRC thanking me and <a href="http://0pointer.de/">Lennart</a> for this feature. Woot!</p>
	<p>We also now have rudimentary support for showing the <a href="http://en.wikipedia.org/wiki/Serial_attached_SCSI">SAS</a> topology - this is really useful since machines with many disks typically use dedicated <a href="http://images.google.com/images?hl=en&#038;um=1&#038;sa=1&#038;q=rack-mount+disk+enclosure&#038;aq=f&#038;oq=&#038;aqi=&#038;start=0">disk enclosure shelves</a>.  Currently we only show <a href="http://en.wikipedia.org/wiki/Serial_attached_SCSI#SAS_Expanders">SAS Expanders</a> but the plan is to peek (and poke!) <a href="http://en.wikipedia.org/wiki/SES-2_Enclosure_Management">SES-2 Enclosures</a> (and in the future also <a href="http://en.wikipedia.org/wiki/SGPIO">SGPIO</a> ones) to get information about bay numbering and to toggle the FAILURE and LOCATE leds. Ideally we want to turn on the FAILURE led if a member of a RAID array is kicked or if SMART status indicates that the disk is about to fail. Ideally, we also want to do (sensible!) things like starting a RAID rebuild if a kicked RAID member is replaced by a uninitialized and same-size disk. As always, we have to be really careful about automatically doing policy things like this - especially on Linux where it is hard to make any assumptions on how the system is used.</p>
	<p>The goal of the udisks effort is to be useful to users. For example, if you do video editing or a lot of photography, you care about IO performance. So I added a way to easily benchmark drives and RAID arrays:</p>
	<p><center><a href="http://people.freedesktop.org/~david/blog-entry-20091216/benchmark2.png"><img src="http://people.freedesktop.org/~david/blog-entry-20091216/benchmark2-thumb.png" border="0"/></a> <br /> <i>RAID-6 FTW!</i></center></p>
	<p>This feature was inspired by various similar Windows programs (a pastime on <i>big storage</i> forums such as <a href="http://www.hardforum.com/forumdisplay.php?f=29">this one</a> involves trading benchmark screenshots) and the <a href="http://www.coker.com.au/bonnie++/zcav/">zcav</a> program. It&#8217;s pretty cute, actually; I learned that my Intel 80GB G1 SSD <a href="http://people.freedesktop.org/~david/Screenshot-80%20GB%20Solid-State%20Disk%20(ATA%20INTEL%20SSDSA2MH080G1GC)%20–%20Benchmark.png">only gives me 140MB/s</a> on my Lenovo Thinkpad X61 while I get a <a href="http://people.freedesktop.org/~david/benchmark-early-ui/benchmark-ssd.png">full 270MB/s</a> on my workstation (connected via SAS). Looks like the X61 is only using SATA 150 MB/s - a search on the tubes confirmed this. Gee! This feature is also useful when experimenting with RAID setups - for example, a 10K 36.7GB SAS disk <a href="http://people.freedesktop.org/~david/blog-entry-20091216/benchmark3.png">benchmarks like this</a> but when you put three of them together in Software RAID-5 it turns that <a href="http://people.freedesktop.org/~david/blog-entry-20091216/benchmark-raid5-oh-my-why-is-writing-so-slow.png">writing is really slow</a>. I know it&#8217;s supposed to be slow when writing to software RAID&#8230; but, really, this slow? Maybe I need to tweak some kernel tunables (which would be bad - we should be fast out of the box etc etc).</p>
	<p>Finally, I did a really cute hack a few weeks ago - I made Palimpsest use <a href="http://en.wikipedia.org/wiki/D-Bus">D-Bus</a> over <a href="http://en.wikipedia.org/wiki/Internet_Protocol_Suite">TCP/IP</a> over <a href="http://en.wikipedia.org/wiki/Secure_Shell">SSH</a> to speak to udisks:</p>
	<p><center><a href="http://people.freedesktop.org/~david/blog-entry-20091216/gdu-multiple-servers.png"><img src="http://people.freedesktop.org/~david/blog-entry-20091216/gdu-multiple-servers-thumb.png" border="0"/></a> <br /> <i>Bunch of servers</i></center></p>
	<p>With the <a href="http://git.gnome.org/cgit/gnome-disk-utility/tree/src/gdu/gdu-ssh-bridge.c#n41">way this works</a> we leverage SSH for authentication and <a href="http://avahi.org/">Avahi</a> for <a href="http://en.wikipedia.org/wiki/DNS-SD">Service Discovery</a>. The feature is still a bit rough - it needs some UI additions (such as a disconnect button) and we probably want to replace the <a href="http://people.freedesktop.org/~david/blog-entry-20091216/gdu-remote-server-openssh-auth-wtf.png">stock OpenSSH dialog</a> with something, uhm, less scary. There&#8217;s also the question of authorization - right now you have to connect as <a href="http://en.wikipedia.org/wiki/Superuser">root</a> in order to modify things (udisks uses <a href="http://cgit.freedesktop.org/PolicyKit">polkit</a> for authorization) - we need to figure out how we want this to work. Right now I&#8217;m thinking udisks will ship some polkit configuration bits (a <tt>.pkla</tt> file) and a <tt>udisks-admin</tt> group that administrators can add users to. We&#8217;ll see.</p>
	<p>I&#8217;m kinda excited about the remote connectivity bits - it means that the Disk Utility is now very useful for headless server setups and said servers won&#8217;t have to run any graphical UI in order to be managed through the Disk Utility. We probably want to make the Disk Utility (e.g. Palimpsest) run on Win32 and OS X too (for users not running Linux on the desktop) for remote connectivity to e.g. Linux boxes running udisks. It shouldn&#8217;t be too hard to do this as we mainly depend on <a href="http://www.gtk.org/">GTK+</a> and D-Bus.</p>
	<p>There&#8217;s a bunch of plans for both udisks and Palimpsest. We want to add support (meaning: udisks API and Palimpsest User Interface bits) for the following things: <a href="http://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux)">LVM</a>, <a href="http://en.wikipedia.org/wiki/ISCSI">iSCSI</a> (both target and initiator), Enclosure Management (as mentioned above), Event logging (e.g. &#8220;raid5:md2: read error corrected&#8221;), <a href="http://en.wikipedia.org/wiki/Multipath_I/O">Multi-path</a>, <a href="http://en.wikipedia.org/wiki/Btrfs">Btrfs</a> and many other useful storage technologies. There&#8217;s also a few rough edges and missing features (e.g. file system resizing) but we&#8217;ll get to that in due time.</p>
	<p>FWIW, it&#8217;s important to realize that udisks and the Disk Utility complements, <i>but does not replace</i>, existing command-line tools. This means that you can go ahead and keep using your command line tools and scripts and the udisks/GNOME/Palimpsest/etc. stack will react to changes. For example, you can start/stop RAID arrays using <tt>mdadm(8)</tt>, partition your disks using <tt>parted(8)</tt>, create filesystems using <tt>mkfs(8)</tt>, mount/umount filesystems and so on - the UI is kept up to date. While it&#8217;s approximately ten times harder (<a href="http://www.btinternet.com/~se16/hgb/statjoke.htm">with the 10x figure being 65% accurate</a>) to write software this way, it&#8217;s really the only way to do things on something like Linux where our set of users is as diverse as it is.</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.fubar.dk/?feed=rss2&amp;p=108</wfw:commentRSS>
	</item>
		<item>
		<title>Plumbers 2009</title>
		<link>http://blog.fubar.dk/?p=107</link>
		<comments>http://blog.fubar.dk/?p=107#comments</comments>
		<pubDate>Tue, 29 Sep 2009 19:34:22 +0000</pubDate>
		<dc:creator>davidz</dc:creator>
		
	<category>Software</category>
	<category>Travelling</category>
		<guid>http://blog.fubar.dk/?p=107</guid>
		<description><![CDATA[	Had a great time at Plumbers Conference last week in lovely Portland, OR. On the Friday on the conference, Kay and I gave a talk, aptly named &#8220;Replugging the Modern Desktop&#8221;. The talk covered most of the hal-ectomy that has been happening and included a couple of demos. The slides are here. UPDATE: People on [...]]]></description>
			<content:encoded><![CDATA[	<p>Had a great time at <a href="http://linuxplumbersconf.org/2009/">Plumbers Conference</a> last week in lovely Portland, OR. On the Friday on the conference, <a href="http://vrfy.org/">Kay</a> and I gave a talk, aptly named &#8220;Replugging the Modern Desktop&#8221;. The talk covered most of the <a href="https://wiki.ubuntu.com/Halsectomy">hal-ectomy</a> that has been happening and included a couple of demos. The slides are <a href="http://people.freedesktop.org/~david/talks/Plumbers-2009-Sievers-Zeuthen-Replugging-The-Modern-Desktop.pdf">here</a>. <b>UPDATE:</b> People on IRC are telling me that the fd.o servers are not reachable, I&#8217;ve put up another copy of the slides <a href="http://people.redhat.com/~davidz/Plumbers-2009-Sievers-Zeuthen-Replugging-The-Modern-Desktop.pdf">here</a>.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.fubar.dk/?feed=rss2&amp;p=107</wfw:commentRSS>
	</item>
		<item>
		<title>GUdev, gobject-introspection</title>
		<link>http://blog.fubar.dk/?p=106</link>
		<comments>http://blog.fubar.dk/?p=106#comments</comments>
		<pubDate>Mon, 01 Jun 2009 22:02:53 +0000</pubDate>
		<dc:creator>davidz</dc:creator>
		
	<category>Software</category>
		<guid>http://blog.fubar.dk/?p=106</guid>
		<description><![CDATA[	I just committed gudev-1.0 to udev-extras. GUdev isn&#8217;t a particulary big library, it&#8217;s just a thin wrapper around libudev with integration bits for the GLib main loop and support for GObject Introspection.
	While GObject introspection is very neat, see this GUdev example using Seed, I must admit the whole thing feels&#8230; half-finished?
	For example, we seem to [...]]]></description>
			<content:encoded><![CDATA[	<p>I just committed <a href="http://git.kernel.org/?p=linux/hotplug/udev-extras.git;a=commit;h=28f6667f07ce429cc7b5e9796d5490ec9d4748e2">gudev-1.0</a> to <a href="http://git.kernel.org/?p=linux/hotplug/udev-extras.git;a=summary">udev-extras</a>. GUdev isn&#8217;t a particulary big library, it&#8217;s just a <a href="http://people.freedesktop.org/~david/gudev/">thin wrapper</a> around libudev with integration bits for the GLib main loop and support for <a href="http://live.gnome.org/GObjectIntrospection/">GObject Introspection</a>.</p>
	<p>While GObject introspection is very neat, see this <a href="http://git.kernel.org/?p=linux/hotplug/udev-extras.git;a=blob;f=gudev/example.js;h=93aa118e1af2361e62e06d52a02b2b8be4ff5e90;hb=HEAD">GUdev example</a> using <a href="http://live.gnome.org/Seed/">Seed</a>, I must admit the whole thing feels&#8230; half-finished?</p>
	<p>For example, we seem to be doing <a href="http://bugzilla.gnome.org/show_bug.cgi?id=584453">the wrong thing</a> for default annotations in some cases. Another example is the fact that <a href="http://live.gnome.org/Gjs/">gjs</a> <a href="http://bugzilla.gnome.org/show_bug.cgi?id=584558">lacks a print() function</a>, Seed <a href="http://bugzilla.gnome.org/show_bug.cgi?id=584321">can&#8217;t handle GStrv</a> properties (works in gjs), <a href="http://bugzilla.gnome.org/show_bug.cgi?id=560567">lack of support for string arrays</a> in gjs (works in Seed), neither Seed nor gjs supports <a href="http://en.wikipedia.org/wiki/Shebang_%28Unix%29">Shebang</a> support (<a href="http://bugzilla.gnome.org/show_bug.cgi?id=584560">gjs bug</a>, <a href="http://bugzilla.gnome.org/show_bug.cgi?id=584561">Seed bug</a>).</p>
	<p>So all in all, trying to make my new small library introspectable.. was kinda.. much more work than I expected.. and most of the time was spent with the Seed and gjs runtimes trying to figure out what was wrong. </p>
	<p>Anyway, I don&#8217;t want to sound all negative.. with all the work going on in this area, it looks like it&#8217;s going to rock once corner cases like mentioned above are ironed out. Rock on!</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.fubar.dk/?feed=rss2&amp;p=106</wfw:commentRSS>
	</item>
		<item>
		<title>Storage handling in GNOME</title>
		<link>http://blog.fubar.dk/?p=105</link>
		<comments>http://blog.fubar.dk/?p=105#comments</comments>
		<pubDate>Mon, 04 May 2009 13:40:38 +0000</pubDate>
		<dc:creator>davidz</dc:creator>
		
	<category>Software</category>
		<guid>http://blog.fubar.dk/?p=105</guid>
		<description><![CDATA[	The GNOME 2.26 release in Fedora 11 will ship with a completely different stack for handling storage devices. The plan is to land all this work in the upstream GNOME 2.28 release and most of that work is done already.
	Basically, we&#8217;ve switched away from one daemon to another and in the process we gained a [...]]]></description>
			<content:encoded><![CDATA[	<p>The GNOME 2.26 release in Fedora 11 will ship with a completely different stack for handling storage devices. The plan is to land all this work in the upstream GNOME 2.28 release and most of that work is done <a href="http://mail.gnome.org/archives/desktop-devel-list/2009-May/msg00007.html">already</a>.</p>
	<p>Basically, we&#8217;ve switched away from <a href="http://www.freedesktop.org/wiki/Software/hal">one</a> daemon to <a href="http://hal.freedesktop.org/docs/DeviceKit-disks/">another</a> and in the process we gained a few new features.</p>
	<p><center><br />
<a href="http://people.freedesktop.org/~david/gdu-ata-smart-notification.png"> <img border="0" src="http://people.freedesktop.org/~david/gdu-ata-smart-notification-thumb.png" /> </a><br />
<br />
<i>OMG, the disk is dying - using <a href="http://0pointer.de/blog/projects/being-smart.html">libatasmart</a></i><br />
</center></p>
	<p>including letting the user <a href="http://people.freedesktop.org/~david/gdu-smart.png">inspect</a> what his disk is trying to tell him. Kudos goes to <a href="http://0pointer.de/lennart/">Lennart</a> for adding USB support, fixing issues with false positives in libatasmart and just for providing a really good library. And it looks like it&#8217;s <a href="https://www.redhat.com/archives/fedora-test-list/2009-April/msg01648.html">working</a>.</p>
	<p>To really make this 100% useful, we probably want some kind of directory where system vendors shipping GNOME can drop an XML file and then the user can click a button &#8220;Order new disk&#8221; and get on with their life. Of course, then we need to handle the much harder problem of <a href="http://en.wikipedia.org/wiki/Backup">backup</a> and <a href="http://en.wikipedia.org/wiki/Data_migration">data migration</a>, but, hey, we want to solve that anyway.</p>
	<p>So I also wrote this Palimpsest Disk Utility application<br />
<center><br />
<a href="http://people.freedesktop.org/~david/gdu-unmount-dialog.png"> <img border="0" src="http://people.freedesktop.org/~david/gdu-unmount-dialog-thumb.png" /> </a><br />
<br />
<i>Kitchen sink of disk information</i><br />
</center></p>
	<p>which also handles things like <a href="http://people.freedesktop.org/~david/gdu-raid5.png">RAID devices</a> and support for managing things like <a href="http://en.wikipedia.org/wiki/Logical_Volume_Manager_%28Linux%29">LVM</a> and <a href="http://btrfs.wiki.kernel.org/index.php/Main_Page">btrfs</a> is planned as well. We&#8217;re also looking at <a href="http://bugzilla.gnome.org/show_bug.cgi?id=579211">changing</a> the UI to be a bit more sane - something like this perhaps</p>
	<p><center><br />
<a href="http://people.freedesktop.org/~david/grid-3.png"> <img border="0" src="http://people.freedesktop.org/~david/grid-3-thumb.png" /> </a><br />
<br />
<i>Clean, leaner, simpler? Tell us in <a href="http://bugzilla.gnome.org/show_bug.cgi?id=579211">bug #579211</a>!</i><br />
</center></p>
	<p>Tomas, Matthias and I also worked on a simple formatting tool suitable for replacing the venerable <a href="http://library.gnome.org/users/gfloppy/stable/usage.html.en">gfloppy</a> tool</p>
	<p><center><br />
<a href="http://people.freedesktop.org/~david/gdu-format-tool-3.png"> <img border="0" src="http://people.freedesktop.org/~david/gdu-format-tool-3-thumb.png" /> </a><br />
<br />
<i>Formatting tool</i><br />
</center></p>
	<p>you <a href="http://people.freedesktop.org/~david/gdu-format-tool-1.png">can</a> <a href="http://people.freedesktop.org/~david/gdu-format-tool-2.png">see</a> <a href="http://people.freedesktop.org/~david/gdu-format-tool-3.png">the</a> <a href="http://people.freedesktop.org/~david/gdu-format-tool-4.png">whole</a> <a href="http://people.freedesktop.org/~david/gdu-format-tool-5.png">series</a> <a href="http://people.freedesktop.org/~david/gdu-format-tool-6.png">of</a> screenshots to see how the user interaction is supposed to be like.</p>
	<p>Finally, I just merged a series of patches to GVfs for using this new machinery</p>
	<p><center><br />
<a href="http://people.freedesktop.org/~david/dkd-gdu-gvfs.png"> <img border="0" src="http://people.freedesktop.org/~david/dkd-gdu-gvfs-thumb.png" /> </a><br />
<br />
<i>OMG, pretty RAID icon!</i><br />
</center></p>
	<p>Building this on top of a modern storage daemon, as opposed to HAL, means that your file manager (and any other app using GIO), is instantly updated as you repartition or reformat your disks. It even works if you are using command-line tools, etc. <tt>fdisk</tt>(8) or <tt>mkfs</tt>(8) - geek comfort FTW!</p>
	<p>We might want some extensions to GIO to make working with RAID and encrypted devices (and in the future LVM) easier (such as unlock/lock/start/stop buttons in the file manager sidepane) or maybe we&#8217;re just going to rely on the system auto-assembling such things and leave it in Palimpsest. Decisions, decisions.</p>
	<p>Another geek-comfort I added, is the ability to show user mountable fstab entries, that&#8217;s <a href="http://bugzilla.gnome.org/show_bug.cgi?id=536292">bug #536292</a>. I was a bit reluctant to do this, I think instead we want native support in GVfs for <tt>nfs://</tt> yet still use the kernel filesystem driver though some kind of setuid helper. Then we&#8217;d also fix NFS servers to publish the fact they exist using <a href="http://avahi.org/">Avahi</a> and then people can discover it in Nautilus&#8217; <tt>computer://</tt> window. Just cleaner and easier, I think. Combined with support for <a href="http://bugzilla.gnome.org/show_bug.cgi?id=556040">bookmarks on the GIO level</a>, this should be a dream come true for people deplying systems in the enterprise.</p>
	<p>Most of this work is part of the bigger HAL-ectomy - my good friend Kay has a good post <a href="http://lists.freedesktop.org/archives/devkit-devel/2009-April/000140.html">outlining the plans</a> for this.</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.fubar.dk/?feed=rss2&amp;p=105</wfw:commentRSS>
	</item>
		<item>
		<title>Getting GVfs and FUSE right</title>
		<link>http://blog.fubar.dk/?p=104</link>
		<comments>http://blog.fubar.dk/?p=104#comments</comments>
		<pubDate>Wed, 01 Oct 2008 20:24:21 +0000</pubDate>
		<dc:creator>davidz</dc:creator>
		
	<category>Software</category>
		<guid>http://blog.fubar.dk/?p=104</guid>
		<description><![CDATA[	One of the cool things about the new IO library (GIO) in the GNOME stack is that it&#8217;s extensible. One set of extensions for GIO is provided by the GVfs package. The main (but not only) purpose of GVfs is to provide access to Virtual File Systems by having the file system backend (e.g. file [...]]]></description>
			<content:encoded><![CDATA[	<p>One of the cool things about the new <a href="http://library.gnome.org/devel/gio/unstable/">IO library (GIO)</a> in the <a href="http://www.gnome.org/">GNOME</a> stack is that it&#8217;s <a href="http://library.gnome.org/devel/gio/unstable/extending.html">extensible</a>. One set of extensions for GIO is provided by the <a href="http://en.wikipedia.org/wiki/GVFS">GVfs</a> package. The main (but not only) purpose of GVfs is to provide access to <a href="http://en.wikipedia.org/wiki/Virtual_file_system">Virtual File Systems</a> by having the file system backend (e.g. file system driver) running in a separate daemon process in user space - sort of similar to what the <a href="http://en.wikipedia.org/wiki/Filesystem_in_Userspace">Filesystems in Userspace (FUSE)</a> framework provides on Linux and, nowadays, most UNIX operating systems. GVfs currently includes backends for <a href="http://en.wikipedia.org/wiki/SSH_file_transfer_protocol">SFTP</a>, <a href="http://en.wikipedia.org/wiki/Ftp">FTP</a>, <a href="http://en.wikipedia.org/wiki/OBEX">OBEX for Bluetooth</a>, <a href="http://en.wikipedia.org/wiki/Gphoto2">Digital cameras and MTP devices (through libgphoto2)</a>, <a href="http://en.wikipedia.org/wiki/Compact_Disc_Digital_Audio">Compact Disc Audio</a>, <a href="http://en.wikipedia.org/wiki/Webdav">Webdav</a>, <a href="http://en.wikipedia.org/wiki/Http">HTTP</a> and <a href="http://en.wikipedia.org/wiki/Archive_file">archive files (through libarchive)</a> to name the most important ones.</p>
	<p>One key difference between FUSE and GVfs, is that GVfs file system drivers are not constrained by the rather old-fashioned, limited and <a href="http://en.wikipedia.org/wiki/Design_by_committee">design-by-committee</a> POSIX API. Instead, GIO provides (and <a href="http://svn.gnome.org/viewvc/gvfs/trunk/daemon/gvfsbackend.h?revision=1922&#038;view=markup">exposes</a> for implementation to file system drivers) a modern and powerful API that provides <a href="http://library.gnome.org/devel/gio/unstable/GFile.html#g-file-load-contents-async">asynchronous IO</a>, <a href="http://library.gnome.org/devel/gio/unstable/GFile.html#g-file-monitor">file monitoring (like inotify)</a> and <a href="http://library.gnome.org/devel/gio/unstable/GFile.html#g-file-replace-contents">high-level</a> <a href="http://library.gnome.org/devel/gio/unstable/GFile.html#g-file-move">operations</a> as part of the standard API. The GIO API is at the right level of the stack, it&#8217;s part of the <a href="http://en.wikipedia.org/wiki/Glib">GLib</a> tarball. This means that any application that today uses <a href="http://en.wikipedia.org/wiki/GTK+">GTK+</a> has access to GIO. This is a pretty big deal, if you depend on GTK+ 2.14 on newer, you&#8217;ll also depend on GIO.</p>
	<p>However, since it&#8217;s rather naive (not to mention arrogant) to think that people are going to be using only GTK+ applications, GVfs also ships with a FUSE daemon. This daemon provides a POSIX interface to the virtual file systems provided by GVfs. All the fancy high-level operations available when using GIO won&#8217;t be available (there&#8217;s no POSIX equivalent function to map to) of course, but the basic POSIX stuff (e.g. open(2), read(2) etc.) will work just fine. The way it works is that the GVfs FUSE daemon provides a mount in <tt>$HOME/.gvfs</tt> where each top-level directory represents a GVfs mount:</p>
	<p><code><br />
$ ls -1 $HOME/.gvfs<br />
gphoto2 mount on usb%3A004,002<br />
sftp on people.freedesktop.org<br />
sftp on quad.local<br />
</code></p>
	<p>For example, this means all the good old command line tools still work</p>
	<p><code><br />
$ stat /home/davidz/.gvfs/sftp\ on\ quad.local/home/davidz/.bashrc<br />
  File: `/home/davidz/.gvfs/sftp on quad.local/home/davidz/.bashrc'<br />
  Size: 313       	Blocks: 0          IO Block: 4096   regular file<br />
Device: 14h/20d	Inode: 44          Links: 1<br />
Access: (0600/-rw-------)  Uid: (  500/  davidz)   Gid: (  500/  davidz)<br />
Access: 2008-10-01 14:35:28.000000000 -0400<br />
Modify: 2008-04-25 11:55:02.000000000 -0400<br />
Change: 2008-04-25 11:55:02.000000000 -0400<br />
</code><br />
<code><br />
$ convert /home/davidz/.gvfs/gphoto2\ mount\ on\ usb%3A004\,002/DCIM/100NIKON/DSCN0001.JPG -dither out.jpg<br />
</code></p>
	<p>and so forth. Lots of <a href="http://en.wikipedia.org/wiki/Command-line_interface">command-line</a> people like this, at least they always like to complain when we didn&#8217;t have this back in the <a href="http://en.wikipedia.org/wiki/GnomeVFS">GnomeVFS</a> days.</p>
	<p>But it gets better. Today I committed a <a href="http://bugzilla.gnome.org/show_bug.cgi?id=528670">patch to GIO</a> to ensure that GIO applications launching applications (such as the <a href="http://en.wikipedia.org/wiki/Nautilus_(file_manager)">Nautilus file manager</a> or the <a href="http://en.wikipedia.org/wiki/Evolution_(software)">Evolution mailer</a>) will always pass a FUSE path instead of the GIO URI. One implication of this is that if you launch a non-GIO application (such as <a href="http://en.wikipedia.org/wiki/Mplayer">mplayer</a> or a <a href="http://en.wikipedia.org/wiki/KDE">KDE</a> application) from Nautilus, that application will Just Work(tm) even if the file lives on a GVfs share.</p>
	<p>I think this is a pretty big deal; now it <b>just doesn&#8217;t matter</b> what VFS system of the week is used in the application, it&#8217;s all POSIX as far as applications are concerned. Sure, there&#8217;s a small performance hit by having to go through the GVfs FUSE daemon (a couple of extra context switches) but for run-of-the-mill desktop applications this is insignificant. Also, as explained <a href="http://bugzilla.gnome.org/show_bug.cgi?id=530654#c8">here</a> it&#8217;s currently not a very smart idea to pass an URI to an application; there&#8217;s the problem we don&#8217;t have proper <a href="http://en.wikipedia.org/wiki/Request_for_Comments">standards</a> defining the URI&#8217;s we use; there&#8217;s also the problem of <a href="http://en.wikipedia.org/wiki/Single_sign_on">having to authenticate over and over again</a>.</p>
	<p>Finally, if the application itself is using GIO, <a href="http://bugzilla.gnome.org/show_bug.cgi?id=530654">this patch</a> ensures we map back to a GIO URI and, thus, we bypass the FUSE daemon. This is best illustrated by the following screenshot:</p>
	<p><center><br />
<a href="http://people.freedesktop.org/~david/hadess-as-a-gvfs-example.png"><br />
<img src="http://people.freedesktop.org/~david/hadess-as-a-gvfs-example-thumb.png" alt="Bastien in VFS heaven" border="0"/></a><br />
<br /><i>Bastien in VFS heaven</i><br />
</center></p>
	<p>As you can see from the terminal window, <a href="http://en.wikipedia.org/wiki/Eye_of_gnome">Eye of GNOME</a> is being passed a FUSE path from Nautilus. But thanks to the aforementioned patch, this is getting mapped back to a GIO URI as shown in the properties dialog.</p>
	<p>This feature won&#8217;t be available in GNOME until 2.26 (and GLib 2.20) - we&#8217;re concerned some broken applications might be examining the URI before it&#8217;s <a href="http://svn.gnome.org/viewvc/glib/trunk/gio/gappinfo.c?r1=7554&#038;r2=7566&#038;view=patch">mapped back</a> so we&#8217;re <a href="http://bugzilla.gnome.org/show_bug.cgi?id=528670#c20">reluctant</a> to provide it in GLib 2.18 / GNOME 2.24 for now. FWIW, we&#8217;ve been shipping patches for this feature since <a href="http://en.wikipedia.org/wiki/Fedora_(operating_system)">Fedora 9</a> and the feature will be in Fedora 10 as well. Other vendors are encouraged to ship these patches as well.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.fubar.dk/?feed=rss2&amp;p=104</wfw:commentRSS>
	</item>
		<item>
		<title>DeviceKit presentations</title>
		<link>http://blog.fubar.dk/?p=103</link>
		<comments>http://blog.fubar.dk/?p=103#comments</comments>
		<pubDate>Tue, 19 Aug 2008 16:32:46 +0000</pubDate>
		<dc:creator>davidz</dc:creator>
		
	<category>Software</category>
	<category>Me! Me! Me!</category>
		<guid>http://blog.fubar.dk/?p=103</guid>
		<description><![CDATA[	Earlier today Richard and I did a DeviceKit (the set of projects replacing HAL) presentation for some other group here at Red Hat. You can see the slides here and here. 
	Perhaps of interest to the GNOME community, there&#8217;s also screenshots of Palimpsest, an upcoming Disk Utility library and application for GNOME. Most of this [...]]]></description>
			<content:encoded><![CDATA[	<p>Earlier today <a href="http://blogs.gnome.org/hughsie/">Richard</a> and I did a DeviceKit (the set of projects replacing HAL) presentation for some other group here at <a href="http://www.redhat.com">Red Hat</a>. You can see the slides <a href="http://lists.freedesktop.org/archives/devkit-devel/2008-August/000040.html">here</a> and <a href="http://lists.freedesktop.org/archives/devkit-devel/2008-August/000041.html">here</a>. </p>
	<p>Perhaps of interest to the <a href="http://www.gnome.org">GNOME</a> community, there&#8217;s also screenshots of Palimpsest, an upcoming Disk Utility library and application for GNOME. Most of this is already available in Fedora&#8217;s development branch, dubbed Rawhide, but won&#8217;t be installed by default in Fedora 10. Right now I&#8217;m busy with <a href="http://www.freedesktop.org/wiki/Software/PolicyKit">PolicyKit</a> stuff but the plan is definitely to get a gnome-disk-utility mailing list going soon and get this stuff integrated throughout GNOME (I&#8217;ve already made sure it&#8217;s easy to plug into <a href="http://en.wikipedia.org/wiki/GVFS">gvfs</a> for example). </p>
	<p>For example, I learned the other day that my disk <a href="http://people.freedesktop.org/~david/palimpsest-my-disk-is-failing.png">is</a> <a href="http://people.freedesktop.org/~david/palimpsest-fail-2.png">failing</a> (actually, as <a href="http://mjg59.livejournal.com/">mjg59</a> pointed out, it&#8217;s wrong to use the word FAILING since it&#8217;s Old-Age. Easily fixed.). Now, it would definitely be useful to have a notification bubble indicating this. This is pretty trivial to write using the <a href="http://hal.freedesktop.org/docs/DeviceKit-disks/">DeviceKit-disks API</a>; just monitor the <a href="http://hal.freedesktop.org/docs/DeviceKit-disks/Device.html#Device:drive-smart-is-failing">org.freedesktop.DeviceKit.Disks.Device:drive-smart-is-failing</a> property. Of course the gnome-disk-utility libraries (there&#8217;s one at the <a href="http://en.wikipedia.org/wiki/GLib">GLib</a> level and one at the <a href="http://en.wikipedia.org/wiki/GTK+">GTK+</a> level) wraps this nicely. In fact the gnome-disk-utility library at the GTK+ level should probably provide the code for doing this status icon. Something to discuss. Hence why a mailing list and more community involvement in the gnome-disk-utility project is needed.</p>
	<p>Anyway, the goal is to port the most of the Fedora desktop to use DeviceKit instead of HAL for the Fedora 11 time frame.</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.fubar.dk/?feed=rss2&amp;p=103</wfw:commentRSS>
	</item>
		<item>
		<title>Resolution Independent GTK+</title>
		<link>http://blog.fubar.dk/?p=102</link>
		<comments>http://blog.fubar.dk/?p=102#comments</comments>
		<pubDate>Wed, 06 Aug 2008 21:50:37 +0000</pubDate>
		<dc:creator>davidz</dc:creator>
		
	<category>Software</category>
		<guid>http://blog.fubar.dk/?p=102</guid>
		<description><![CDATA[	Got one of them big laptops where you feel tempted to use a looking glass because the pixels are so tiny? Ever feel cheated when you adjust the font size but the rest of the UI looks like crap in comparison? Or maybe ever felt dirty when hard coding pixel values in your application?
	



	
there&#8217;s also [...]]]></description>
			<content:encoded><![CDATA[	<p>Got one of them big laptops where you feel tempted to use a looking glass because the pixels are so tiny? Ever feel cheated when you adjust the font size but the rest of the UI looks like crap in comparison? Or maybe ever felt dirty when hard coding pixel values in your application?</p>
	<p><center><br />
<a href="http://people.freedesktop.org/~david/file-chooser-em20.png" border="0"><br />
<img src="http://people.freedesktop.org/~david/file-chooser-em20-thumb.png"/><br />
</a></p>
	<p>
<i>there&#8217;s also a <a href="http://people.freedesktop.org/~david/file-chooser-em5.png">tiny</a> and a <a href="http://people.freedesktop.org/~david/file-chooser-em10.png">normal</a> version&#8230;<br />
</i></p>
</center></p>
	<p>Today I <a href="http://mail.gnome.org/archives/gtk-devel-list/2008-August/msg00044.html">sent</a> a patch to <a href="http://mail.gnome.org/mailman/listinfo/gtk-devel-list">gtk-devel-list</a> adding <a href="http://en.wikipedia.org/wiki/Resolution_independence">Resolution Independence</a> to the <a href="http://en.wikipedia.org/wiki/GTK+">GTK+</a> toolkit. Let&#8217;s see how that goes.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.fubar.dk/?feed=rss2&amp;p=102</wfw:commentRSS>
	</item>
		<item>
		<title>D-Bus introspection</title>
		<link>http://blog.fubar.dk/?p=101</link>
		<comments>http://blog.fubar.dk/?p=101#comments</comments>
		<pubDate>Thu, 31 Jul 2008 05:36:42 +0000</pubDate>
		<dc:creator>davidz</dc:creator>
		
	<category>Software</category>
	<category>Fun</category>
		<guid>http://blog.fubar.dk/?p=101</guid>
		<description><![CDATA[	Sure, there&#8217;s already d-feet and a similar Qt tool but for people who hate using the mouse or are allergic to X, I&#8217;ve put together this cute little hack that provides bash completion to dbus-send(1). Unfortunately it depends on the XML introspection parser from dbus-glib so it&#8217;s not straightforward to add to mainline D-Bus. Could [...]]]></description>
			<content:encoded><![CDATA[	<p>Sure, there&#8217;s already <a href="http://www.j5live.com/?p=445">d-feet</a> and a similar Qt tool but for people who hate using the mouse or are allergic to X, I&#8217;ve put together this <a href="http://people.freedesktop.org/~david/dbus-bash-completion.ogg">cute little hack</a> that provides bash completion to <a href="http://dbus.freedesktop.org/doc/dbus-send.1.html">dbus-send(1)</a>. Unfortunately it depends on the XML introspection parser from dbus-glib so it&#8217;s not straightforward to add to mainline D-Bus. Could easily go in dbus-glib though. Then again, it would be nice if libdbus included an XML introspection parser. Decisions, decisions.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.fubar.dk/?feed=rss2&amp;p=101</wfw:commentRSS>
	</item>
		<item>
		<title>Linux Plumbers Conference CFP extended!</title>
		<link>http://blog.fubar.dk/?p=100</link>
		<comments>http://blog.fubar.dk/?p=100#comments</comments>
		<pubDate>Wed, 23 Jul 2008 17:46:37 +0000</pubDate>
		<dc:creator>davidz</dc:creator>
		
	<category>Software</category>
	<category>Travelling</category>
		<guid>http://blog.fubar.dk/?p=100</guid>
		<description><![CDATA[	I rarely blog these days, doing the Twitter thing instead and all. Anyway. The Call for Papers for the Linux Plumbers Conference in September in lovely Portland, Oregon has been extended until July 31st 2008. It&#8217;s a conference about the core infrastructure of Linux systems: the part of the system where userspace and the kernel [...]]]></description>
			<content:encoded><![CDATA[	<p>I rarely blog these days, doing the <a href="http://twitter.com/davidz25">Twitter</a> thing instead and all. Anyway. The <a href="http://www.linuxplumbersconf.org/cfp/">Call for Papers</a> for the <a href="http://www.linuxplumbersconf.org/">Linux Plumbers Conference</a> in September in lovely <a href="http://en.wikipedia.org/wiki/Portland%2C_Oregon">Portland, Oregon</a> <a href="http://lwn.net/Articles/291189/">has been extended</a> until <b>July 31st 2008</b>. It&#8217;s a conference about the core infrastructure of Linux systems: the part of the system where userspace and the kernel interface. It&#8217;s the first conference where the focus is specifically on getting together the kernel people who work on the userspace interfaces and the userspace people who have to deal with kernel interfaces. It&#8217;s supposed to be a place where all the people doing infrastructure work sit down and talk, so that each other understands better what the requirements and needs of the other are, and where we can work towards fixing the major problems we currently have with our lower-level APIs.</p>
	<p>I&#8217;m running the &#8220;Desktop Integration&#8221; microconf at Plumbers. I have two goals for the microconf. One is to be informative about what&#8217;s going on in the dusty hallways between the <a href="http://kernel.org">Kernel</a> and the <a href="http://www.freedesktop.org">Free Desktop</a>. Which I think is important at a place like Plumbers where we&#8217;re going to a lot of people working on similar problems present. The other goal is to actually try and make some headway on actual problems that require people from multiple communities working together. Such as some of the work <a href="http://blogs.gnome.org/mccann">Jon</a> is focusing on, e.g. how to make fast-user-switching, multi-seat and terminal services Just Work(tm).</p>
	<p>The conference is expected to sell out pretty quickly so it&#8217;s a good idea to go ahead and <a href="http://linuxplumbersconf.org/register/">register for Plumbers Conference</a> instead of <a href="http://en.wikipedia.org/wiki/Procrastinate">procrastinating</a> about doing it!</p>
	<p><a href="http://www.linuxplumbersconf.org/" border="0"><img src="http://www.linuxplumbersconf.org/images/banner.png" alt="Linux Plumbers Conference" /></a></p>
	<p>See you in Portland!
</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.fubar.dk/?feed=rss2&amp;p=100</wfw:commentRSS>
	</item>
		<item>
		<title>gnome.conf.au 2008</title>
		<link>http://blog.fubar.dk/?p=99</link>
		<comments>http://blog.fubar.dk/?p=99#comments</comments>
		<pubDate>Tue, 29 Jan 2008 03:48:56 +0000</pubDate>
		<dc:creator>davidz</dc:creator>
		
	<category>Software</category>
	<category>Travelling</category>
		<guid>http://blog.fubar.dk/?p=99</guid>
		<description><![CDATA[	Am in Melbourne, VIC, Australia for linux.conf.au 2008; just gave a talk on PolicyKit, the slides are here. Only had 20 minutes so the whole thing felt a bit rushed and I didn&#8217;t get to go into much detail. Hopefully it made some sense though, otherwise checkout the design and API docs.

]]></description>
			<content:encoded><![CDATA[	<p>Am in Melbourne, VIC, Australia for linux.conf.au 2008; just gave a talk on PolicyKit, the slides are <a href="http://people.freedesktop.org/~david/talks/gnome-conf-au-polkit-davidz-jan-2008.pdf">here</a>. Only had 20 minutes so the whole thing felt a bit rushed and I didn&#8217;t get to go into much detail. Hopefully it made some sense though, otherwise checkout the <a href="http://hal.freedesktop.org/docs/PolicyKit/">design and API docs</a>.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.fubar.dk/?feed=rss2&amp;p=99</wfw:commentRSS>
	</item>
	</channel>
</rss>
