<?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/"
	>

<channel>
	<title>apt-get install debian-wizard&#187; WordPress</title>
	<atom:link href="http://raphaelhertzog.com/tag/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://raphaelhertzog.com</link>
	<description>Insider infos, master your Debian/Ubuntu distribution</description>
	<lastBuildDate>Sat, 04 Feb 2012 12:16:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>My Debian Activities in December 2011</title>
		<link>http://raphaelhertzog.com/2012/01/03/my-debian-activities-in-december-2011/</link>
		<comments>http://raphaelhertzog.com/2012/01/03/my-debian-activities-in-december-2011/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 13:27:17 +0000</pubDate>
		<dc:creator>Raphaël Hertzog</dc:creator>
				<category><![CDATA[Debian News]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Activity summary]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[dpkg]]></category>
		<category><![CDATA[ledgersmb]]></category>
		<category><![CDATA[Me]]></category>
		<category><![CDATA[nautilus-dropbox]]></category>
		<category><![CDATA[quilt]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://raphaelhertzog.com/?p=2464</guid>
		<description><![CDATA[My monthly summary is always a good way to have the latest news of Debian projects that I am working on.]]></description>
			<content:encoded><![CDATA[<p>This is my monthly summary of my Debian related activities. If you&#8217;re among the people who <a href="http://raphaelhertzog.com/go/donate/">made a donation to support my work</a> (364.18 €, thanks everybody!), then you can learn how I spent your money. Otherwise it’s just an interesting status update on my various projects.</p>
<p><img src="http://raphaelhertzog.com/files/2011/05/newspaper-computer-300x211.jpg" alt="" title="Monthly news" class="aligncenter size-medium wp-image-1772" height="211" width="300"></p>
<h3>Dpkg and Multiarch</h3>
<p>I had some hope to have a multiarch-enabled dpkg in sid for Christmas as Guillem told me that it was realistic. Alas Guillem got sick. We&#8217;re in January and we&#8217;re still not there.</p>
<p>While some of Guillem&#8217;s commits in December were related to multi-arch, the size of his <a href="http://git.hadrons.org/?p=debian/dpkg.git;a=shortlog;h=refs/heads/pu/multiarch/master">pu/multiarch/master</a> branch did not really shrink. We still have 36 commits to merge&#8230; most of the work he did was refactoring some parts of the code that were already merged. And he initiated some discussion on <a href="http://lists.debian.org/debian-dpkg/2011/12/msg00005.html">interface changes</a>. I participated to those discussions hoping to bring them to a quick resolution.</p>
<p>I&#8217;m still maintaining my own <a href="http://anonscm.debian.org/gitweb/?p=users/hertzog/dpkg.git;a=shortlog;h=refs/heads/pu/multiarch/full">pu/multiarch/full</a> branch, it is based on Guillem&#8217;s branch but with <a href="http://lists.debian.org/debian-dpkg/2011/12/msg00001.html">further</a> <a href="http://bugs.debian.org/652063">fixes</a> that I developed and that he has not yet merged</a> and with a change reverted (Guillem&#8217;s branch allows crossgrading packages between different architectures while dpkg does not manage this correctly yet).</p>
<p>I can only hope that January will be the last month of this never-ending saga. It&#8217;s been one year since I started working on this project. <img src='http://raphaelhertzog.com/wp-includes/images/smilies/icon_neutral.gif' alt=':-|' class='wp-smiley' /> </p>
<h3>Misc dpkg work</h3>
<p>I reviewed (and later merged) a patch of Kees Cook to enhance dpkg-buildflags so that it can report which hardening features are enabled. This feature might then be used by tools like lintian to detect missing hardening features.</p>
<p>I <a href="http://lists.debian.org/debian-dpkg/2011/12/threads.html#00008">mentored Gianluca Ciccarelli</a> who is trying to enhance dpkg-maintscript-helper to take care of replacing a directory by a symlink and vice-versa.</p>
<p>I took care of <a href="http://bugs.debian.org/651993">#651993</a> so that dpkg-mergechangelogs doesn&#8217;t fail when it encounters an invalid version in the changelog, and of <a href="http://bugs.debian.org/652414">#652414</a> so that <code>dpkg-source --commit</code> accepts a relative filename when a patch file is explicitly given.</p>
<p>Guillem also <a href="http://anonscm.debian.org/gitweb/?p=dpkg/dpkg.git;a=commitdiff;h=c07f7fea4206bc002578b2032871c9f63457bde8">merged a fix</a> I developed for <a href="http://bugs.launchpad.net/bugs/369898">LP#369898</a>.</p>
<h3>Packaging work</h3>
<p><a href="http://packages.qa.debian.org/wordpress">WordPress</a> 3.3 came out so I immediately packaged it. Despite my <a href="http://core.trac.wordpress.org/ticket/19065">upstream bug report</a>, they did not update their <a href="http://wordpress.org/download/source/">GPL compliance page</a> which offers the corresponding sources for what&#8217;s bundled in the tarball. So I hunted for the required sources myself, and bundled them in the debian.tar.xz of the Debian source package. It&#8217;s a rather crude solution but this allowed me to close the release critical bug <a href="http://bugs.debian.org/646729">#646729</a> and to reintroduce the Flash files that were dropped in the past&#8230; which is great since the Flash-based file uploader is nicer than the one using the browser&#8217;s file field.</p>
<p><a href="http://packages.qa.debian.org/quilt">Quilt</a> 0.50 came out after 2 years of (slow) development. The Debian package has many patches and several of them had to be updated to cope with the new upstream release. Fortunately some of them were also merged upstream. It still took an entire morning to complete this update. I also converted the packaging from CDBS to dh with a short rules file.</p>
<p><a href="http://packages.qa.debian.org/zim">Zim</a> 0.54 came out and I immediately updated the package since it fixed a <a href="https://bugs.launchpad.net/zim/+bug/872311">bug that was annoying me</a>.</p>
<h3>Review of the ledgersmb packaging</h3>
<p>As the sql-ledger maintainer (and a user of this software for my accounting), I have been hoping to get ledgersmb packaged as a possible replacement for it. I have been following the various efforts initiated over time but none of them resulted in a real package in Debian.</p>
<p>This is a real pity so I tried to fix this by offering to sponsor package uploads. That&#8217;s why I did a <a href="http://lists.alioth.debian.org/pipermail/pkg-sql-ledger-discussion/2011-December/000145.html">first review</a> of the packaging. It took several hours because you have to explain everything that&#8217;s not good enough.</p>
<p>I also filed a wishlist bug against lintian (<a href="http://bugs.debian.org/652963">#652963</a>) to suggest that lintian should detect improper usage of dpkg-statoverride (this is a mistake that was present in the package that I reviewed).</p>
<h3>nautilus-dropbox work</h3>
<p>I wanted to polish the package in time for the Ubuntu LTS release and since Debian Import Freeze is in January, I implemented some of the important fixes that I wanted.</p>
<p>The Debian package diverges from upstream in that the non-free binaries are installed in /var/lib/dropbox/ instead of $HOME.<br />
Due to a bug, the files were not properly root-owned so I first fixed this (unpacking the tarball as root lead to reuse of the embedded user &#038; group information, and those information changed recently on the Dropbox side apparently).</p>
<p>Then we recently identified other problems related to proxy handling (see <a href="http://bugs.debian.org/651065">#651065</a>). I fixed this too because it&#8217;s relatively frequent that the initial download triggered during the package configuration fails&#8230; and in that case it&#8217;s the user that will re-trigger a package download after having given the appropriate credentials through PackageKit. Without my fix, usage of pkexec would imply the loss of the http_proxy environment variable and thus it would not be possible for a user to download through a proxy.</p>
<p>Last but not least I reorganized the Debian specific patches to better separate what can and should be merged upstream, from the changes that upstream doesn&#8217;t want. Unfortunately Dropbox insists on being able to auto-update their non-free binaries, they are, thus, against the installation under /var/lib/dropbox and the corresponding changes.</p>
<h3>Book update</h3>
<p>We&#8217;re making decent progress in the translation of <a href="http://debian-handbook.info/">the Debian Administrator&#8217;s Handbook</a>, about 6 chapters are already translated (not yet reviewed though).</p>
<p>The <a href="http://debian-handbook.info/liberation/">liberation campaign</a> is also (slowly) going forward. We&#8217;re at 67% now (thanks to 90 new supporters!) while we were only at 60% at the start of December.</p>
<h3>Thanks</h3>
<p>See you next month for a new summary of my activities.</p>
<p style="font-size: smaller"><a href="http://raphaelhertzog.com/2012/01/03/my-debian-activities-in-december-2011/#comments">2 comments</a> | Liked this article? <a href="http://raphaelhertzog.com/support-my-work/">Click here</a>. | My blog is <a href="http://flattr.com/thing/26545/apt-get-install-debian-wizard">Flattr-enabled</a>.</p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://raphaelhertzog.com/2012/01/03/my-debian-activities-in-december-2011/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>My Debian activities in October 2011</title>
		<link>http://raphaelhertzog.com/2011/11/01/my-debian-activities-in-october-2011/</link>
		<comments>http://raphaelhertzog.com/2011/11/01/my-debian-activities-in-october-2011/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 09:18:00 +0000</pubDate>
		<dc:creator>Raphaël Hertzog</dc:creator>
				<category><![CDATA[Debian News]]></category>
		<category><![CDATA[Meta]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Debian Handbook]]></category>
		<category><![CDATA[dpkg]]></category>
		<category><![CDATA[Me]]></category>
		<category><![CDATA[nautilus-dropbox]]></category>
		<category><![CDATA[python-django]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://raphaelhertzog.com/?p=2251</guid>
		<description><![CDATA[This is my monthly summary of my Debian related activities. If you’re among the people who made a donation to support my work (130.30 €, thanks everybody!), then you can learn how I spent your money. Otherwise it’s just an interesting status update on my various projects. Dpkg work The month started with fixing newly [...]]]></description>
			<content:encoded><![CDATA[<p>This is my monthly summary of my Debian related activities. If you’re among the people who <a href="http://raphaelhertzog.com/go/donate/">made a donation to support my work</a> (130.30 €, thanks everybody!), then you can learn how I spent your money. Otherwise it’s just an interesting status update on my various projects.</p>
<p><img src="http://raphaelhertzog.com/files/2011/05/newspaper-computer-300x211.jpg" alt="" title="Monthly news" class="aligncenter size-medium wp-image-1772" height="211" width="300"></p>
<h3>Dpkg work</h3>
<p>The month started with fixing newly reported bugs to prepare the 1.16.1.1 release:</p>
<ul>
<li><a href="http://bugs.debian.org/644492">#644492</a>: there was a flaw in a change I made to the trigger setup code. This resulted in packages being incorrectly marked as configured while they were only unpacked in a new chroot.</li>
<li><a href="http://bugs.debian.org/642656">#642656</a>: dpkg-source&#8217;s refusal to build when it detects unrecorded changes broke the (mostly unused, except by the lintian test suite apparently) “2.0” source format.</li>
<li><a href="http://bugs.debian.org/644412">#644412</a>: the Makefile snippet “buildflags.mk” did not respect the new maintainer specific environment variables (like DEB_CFLAGS_MAINT_APPEND) because make does not forward environment variable through <code>$(shell …)</code>. Fixed that by manually exporting the required variables.</li>
<li>I also disabled dpkg-buildpackage&#8217;s output of the build flags since it was confusing several maintainers. dpkg-buildpackage invokes debian/rules and it has no (clean) way to discover the build flags changes that maintainer request by setting the dedicated environment variables in debian/rules. Maintainers expect to see the build flags with the modifications they have requested and not just the default values set by the distribution.</li>
</ul>
<p>With the help of Guillem, we decided on a proper fix for a race condition sometimes triggered by parallel builds when 2 concurrent dpkg-gencontrol try to update debian/files (see <a href="http://bugs.debian.org/642608">#642608</a>). This ended up requiring a new package (libfile-fcntllock-perl) that the Debian perl team kindly packaged for us. With all this sorted, it was a rather easy fix.</p>
<h4>Multiarch progress</h4>
<p>I also spent lots of time on multiarch. I fixed an old bug that requested to support the multi-arch paths in case of cross-building (see <a href="http://bugs.debian.org/595144">#595144</a>), the discussion was not really conclusive on which of the two proposed patches was better so I ended up picking my own patch because it was closer to how we currently deal with cross-building. Then I fixed 2 issues that have been reported on Ubuntu&#8217;s dpkg. The first one (<a href="https://bugs.launchpad.net/bugs/863675">LP #863675</a>) was rather severe since an installed package ended being &#8220;disappeared&#8221; in favor of its foreign counterpart that was removed (but that had some config files left). The second one (<a href="https://bugs.launchpad.net/bugs/853679">LP #853679</a>) only affected dselect users (apparently there are still some!) who had a self-conflicting library (Provides: foo, Conflicts: foo) installed for multiple architectures.</p>
<p>But the bulk of the time spent on multiarch has been spent discussing with various parties on how to go forward with multiarch. The release team <a href="http://lists.debian.org/debian-dpkg/2011/10/msg00050.html">commented on the schedule of the merge</a> to ensure it makes it into Wheezy, and the Debian project leader also <a href="http://lists.debian.org/debian-dpkg/2011/10/msg00060.html">commented on the problems encountered so far</a>.</p>
<p>While not the best course of action I could have hoped for, it certainly helped since Guillem started pushing some reviewed commits. Out of the 66 commits that were in my pu/multiarch/full branch one week ago, 20 have been merged in the master branch already.</p>
<h3>Python-django security update and RC bug</h3>
<p>Since python-django&#8217;s maintainer did not manage to prepare the required security updates, I stepped in and prepared version 1.2.3-3+squeeze2 for Squeeze and 1.0.2-1+lenny3 for Lenny. Unfortunately this <a href="http://bugs.debian.org/641405">security update</a> is an example of how an inactive maintainer is likely to result in a severe delay for the release of security updates.</p>
<p>Furthermore in this specific case, the security team did not want to release the Squeeze security update until the Lenny one had been investigated (which required some time since upstream no longer supports the version in Lenny) but they did not make this very clear.</p>
<p>Later another release critical bug had been filed against the package (<a href="http://bugs.debian.org/646634">#646634</a>) but after investigation, it turned out to be a local configuration problem so I downgraded it. I still <a href="https://code.djangoproject.com/ticket/17116">forwarded the test suite failure</a> to upstream authors since the test could be enhanced.</p>
<p>In any case, co-maintainers for python-django are welcome. I really preferred the situation where I can quietly sit down as backup maintainer&#8230; <img src='http://raphaelhertzog.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h3>WordPress packaging</h3>
<p>WordPress sounds similar to python-django. I&#8217;m also &#8220;only a backup maintainer&#8221; but Giuseppe has been inactive for many months and I had to step in August because I wanted the new upstream version. I discovered a bit late that I was not subscribed to wordpress&#8217; bugs and thus the release critical bug <a href="http://bugs.debian.org/639733">#639733</a> (that I introduced with my new upstream version) went unattended for a rather long time. Once aware, though, I quickly fixed it.</p>
<p>I also took the opportunity to start a discussion on debian-devel about <a href="http://lists.debian.org/debian-devel/2011/10/msg00558.html">how to deal with embedded javascript libraries</a> and proposed a mechanism of &#8220;opportunistic replacement with symlinks&#8221;. WordPress is my testbed package for this mechanism, you can check out its <a href="http://anonscm.debian.org/gitweb/?p=collab-maint/wordpress.git;a=blob;f=debian/dh_linktree;hb=master">debian/dh_linktree</a> that implements the replacement logic.</p>
<p>The discussion has not been very interesting but at least I learned that Debian now requires that each source package shipping minified javascript files includes the original files too. It&#8217;s somewhat of a pain since it&#8217;s not a license requirement in many cases (many of those libraries are not under the GPL), but just a Debian requirement that many upstreams are not complying with. WordPress is affected and Jakub Wilk thus opened <a href="http://bugs.debian.org/646729">#646729</a> which is going to be a long-standing RC bug. To give good measures, I spent several hours investigating the case of each javascript file in the WordPress source package and I filed a <a href="http://core.trac.wordpress.org/ticket/19065">new ticket on the upstream bugtracker</a>.</p>
<h3>Dropbox packaging work</h3>
<p>A few months after the <a href="http://raphaelhertzog.com/2011/06/06/official-debian-ubuntu-packages-for-nautilus-dropbox/">introduction of nautilus-dropbox to Debian and Ubuntu</a>, I can say that the decision to only support the download of dropbox in the postinst has been a mistake. Because of this decision I had to make the postinst fail if the download failed. Even if the error message is relatively clear, this lead to many (mostly automated) bug reports on the Ubuntu side. Various other problems cropped up on top of this (trying to start dropbox while the package was not configured would result in an error because the user did not have the required rights to install the software, reinstalling the package while dropbox was running would result in a failure too, etc.).</p>
<p>I have fixed all those issues in the version 0.7.0-2 of the package. Now if the user has to install dropbox, it will use PolicyKit to request the root rights. The postinst will no longer fail if the dropbox download fails since it can be run later by the user. And I fixed the download code to remove the replaced file before unpacking a new file (insead of overwriting the existing file). All this work has been forwarded upstream.</p>
<h3>The Debian Administrator&#8217;s Handbook Update</h3>
<p>I&#8217;m glad to tell you that the <a href="http://debian-handbook.info/2011/the-translation-will-happen-now-towards-the-liberation/">translation will happen</a> because we reached the minimal funding goal on October 22th with the help of 380 supporters.</p>
<p><img src="http://raphaelhertzog.com/files/2011/11/debian-handbook-new-300x168.jpg" alt="" title="Debian Handbook Banner" width="300" height="168" class="aligncenter size-medium wp-image-2333" /></p>
<p>Now the fundraising continues, but this time the goal is the liberation of the resulting book. For this to happen, we need to reach 25000 EUR in the liberation fund. So far we&#8217;re at 37% of this goal with 9400 EUR in the liberation fund (which means that 59% of the money raised has been put in the liberation fund).</p>
<p class="action-call"><a href="http://debian-handbook.info/go/ulule-rh/">Click here if you want to contribute towards the liberation of this book.</a></p>
<p>With (less than) 27 days left, it&#8217;s going to be a challenge to meet the goal, but we do like challenges, don&#8217;t we?</p>
<h3>Misc work</h3>
<ul>
<li>I filed <a href="http://bugs.debian.org/644486">#644486</a> against dh-make so that new packages have proper support of dpkg-buildflags from the start.</li>
<li>I merged lots of patches from Luca Falavigna in the developers-reference.</li>
<li>I discussed debtags integration in the PTS with Enrico Zini and Paul Wise.</li>
<li>I updated publican&#8217;s packaging for the new upstream version 2.8. I had to write a new patch that <a href="https://bugzilla.redhat.com/show_bug.cgi?id=747871">I forwarded upstream</a>.</li>
<li>I filed an <a href="https://bugzilla.gnome.org/show_bug.cgi?id=662668">upstream bug on hamster-applet</a> because just running hamster-time-tracker no longer brings its window forward.</li>
</ul>
<h3>Thanks</h3>
<p>See you next month for a new summary of my activities.</p>
<p style="font-size: smaller"><a href="http://raphaelhertzog.com/2011/11/01/my-debian-activities-in-october-2011/#comments">3 comments</a> | Liked this article? <a href="http://raphaelhertzog.com/support-my-work/">Click here</a>. | My blog is <a href="http://flattr.com/thing/26545/apt-get-install-debian-wizard">Flattr-enabled</a>.</p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://raphaelhertzog.com/2011/11/01/my-debian-activities-in-october-2011/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>My Debian activities in August 2011</title>
		<link>http://raphaelhertzog.com/2011/09/04/my-debian-activities-in-august-2011/</link>
		<comments>http://raphaelhertzog.com/2011/09/04/my-debian-activities-in-august-2011/#comments</comments>
		<pubDate>Sun, 04 Sep 2011 08:50:00 +0000</pubDate>
		<dc:creator>Raphaël Hertzog</dc:creator>
				<category><![CDATA[Debian News]]></category>
		<category><![CDATA[Meta]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[dpkg]]></category>
		<category><![CDATA[gnome-shell-timer]]></category>
		<category><![CDATA[Me]]></category>
		<category><![CDATA[QA]]></category>
		<category><![CDATA[Vacation]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://raphaelhertzog.com/?p=2051</guid>
		<description><![CDATA[This is my monthly summary of my Debian related activities. If you’re among the people who made a donation to support my work (91.44 €, thanks everybody!), then you can learn how I spent your money. Otherwise it’s just an interesting status update on my various projects. Dpkg work When I came back from Debconf, [...]]]></description>
			<content:encoded><![CDATA[<p>This is my monthly summary of my Debian related activities. If you’re among the people who <a href="http://raphaelhertzog.com/go/donate/">made a donation to support my work</a> (91.44 €, thanks everybody!), then you can learn how I spent your money. Otherwise it’s just an interesting status update on my various projects.</p>
<p><img src="http://raphaelhertzog.com/files/2011/05/newspaper-computer-300x211.jpg" alt="" title="Monthly news" class="aligncenter size-medium wp-image-1772" height="211" width="300"></p>
<h3>Dpkg work</h3>
<p>When I came back from Debconf, I merged my implementation of <code>dpkg-source --commit</code>  (already presented <a href="http://raphaelhertzog.com/2011/08/05/my-debian-activities-in-july-2011/">last month</a>). I continued some work on the hardening build flags but it&#8217;s currently stalled waiting on Kees Cook to provide the required documentation to integrate in dpkg-buildflags(1).</p>
<p>Following a discussion held during DebConf, <a href="http://michael-prokop.at/blog/">Michael Prokop</a> has been kind enough to setup a <a href="http://jenkins.grml.org/view/Debian/job/dpkg-binaries/">git-triggered auto-builder of dpkg</a> (using Jenkins). You can now help us by testing the latest git version. Follow those instructions:</p>
<pre>
$ wget -O - http://jenkins.grml.org/debian/C525F56752D4A654.asc | sudo apt-key add -
$ sudo sponge /etc/apt/sources.list.d/dpkg-git &lt;&lt;END
deb http://jenkins.grml.org/debian dpkg main
END
$ sudo apt-get update &#038;&#038; sudo apt-get upgrade
</pre>
<p>On the bug fixing side I took care of <a href="http://bugs.debian.org/640198">#640198</a> (minor man page update), <a href="http://bugs.debian.org/638291">#638291</a> (a fix to correctly handle hardlinks of conffiles), <a href="http://bugs.debian.org/637564">#637564</a> (the simplification logic of union dependencies was broken in some cases) and <a href="http://bugs.debian.org/631494">#631494</a> (interrupting dpkg-source while building a native source package left some temporary files around that should have been cleaned).</p>
<h3>WordPress update</h3>
<p>I released WordPress 3.2.1 in unstable (after having taken the time to test the updated package on my blog!) and fixed its RC bug (<a href="http://bugs.debian.org/625773">#625773</a>). In the process I discovered a false positive in lintian (I reported it in <a href="http://bugs.debian.org/637473">637473</a>).</p>
<h3>Gnome-shell-timer package</h3>
<p>From time to time, I like to use the <a href="http://en.wikipedia.org/wiki/Pomodoro_Technique">Pomodoro Technique</a>. That&#8217;s why I was an user of <a href="http://packages.debian.org/stable/timer-applet">timer-applet</a> in GNOME 2. Now with the switch to GNOME 3, I lost this feature. But I recently discovered <a href="https://github.com/olebowle/gnome-shell-timer">gnome-shell-timer</a>, a GNOME Shell extension that provides the same features.</p>
<p>I created a <a href="http://packages.debian.org/sid/gnome-shell-timer">Debian package</a> of it and quickly filed some bugs while I was testing it (two <a href="https://github.com/olebowle/gnome-shell-timer/issues/3">usability</a> <a href="https://github.com/olebowle/gnome-shell-timer/issues/4">issues</a> and an <a href="https://github.com/olebowle/gnome-shell-timer/issues/6">encoding problem</a>)</p>
<h3>QA Work</h3>
<p>During DebConf I met <a href="http://qa.debian.org/developer.php?login=gio">Giovanni Mascellani</a> and he was interested to help the QA team. He started working on the backlog of bugs concerning the Package Tracking System (PTS) and submitted a bunch of patches. I reviewed them and merged them but since they were good, I quickly got lazy and <a href="http://lists.debian.org/debian-qa/2011/08/msg00082.html">got him added to the QA team</a> so that he can commit his fixes alone. It also helps to build trust when you have had the opportunity to discuss face to face. <img src='http://raphaelhertzog.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h3>Vacation</h3>
<p>That&#8217;s not so much compared to usual but to my defense I also took 2 weeks of vacation with my family. But somehow even in vacation I can&#8217;t really forget Debian. Here&#8217;s my son:<br />
<a href="http://raphaelhertzog.com/files/2011/09/baptiste-debian.jpg"><img src="http://raphaelhertzog.com/files/2011/09/baptiste-debian-300x225.jpg" alt="" title="My son with the Debian umbrella" width="300" height="225" class="aligncenter size-medium wp-image-2123" /></a></p>
<h3>Thanks</h3>
<p>See you next month for a new summary of my activities.</p>
<p style="font-size: smaller"><a href="http://raphaelhertzog.com/2011/09/04/my-debian-activities-in-august-2011/#comments">3 comments</a> | Liked this article? <a href="http://raphaelhertzog.com/support-my-work/">Click here</a>. | My blog is <a href="http://flattr.com/thing/26545/apt-get-install-debian-wizard">Flattr-enabled</a>.</p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://raphaelhertzog.com/2011/09/04/my-debian-activities-in-august-2011/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>How to create custom RSS feeds with WordPress</title>
		<link>http://raphaelhertzog.com/2011/01/07/howto-create-custom-rss-feeds-with-wordpress/</link>
		<comments>http://raphaelhertzog.com/2011/01/07/howto-create-custom-rss-feeds-with-wordpress/#comments</comments>
		<pubDate>Fri, 07 Jan 2011 15:44:09 +0000</pubDate>
		<dc:creator>Raphaël Hertzog</dc:creator>
				<category><![CDATA[Random]]></category>
		<category><![CDATA[Tips and tricks]]></category>
		<category><![CDATA[feed]]></category>
		<category><![CDATA[HOWTO]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[tag]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://raphaelhertzog.com/?p=1213</guid>
		<description><![CDATA[Wordpress has many alternate built-in feeds: per category, per tag, per author, per search-keyword. But in some cases, you want feeds built with some more advanced logic. Let's look at the available options.]]></description>
			<content:encoded><![CDATA[<p>WordPress has many alternate <a href="http://codex.wordpress.org/WordPress_Feeds">built-in feeds</a>: per category, per tag, per author, per search-keyword. But in some cases, you want feeds built with some more advanced logic. Let&#8217;s look at the available options.</p>
<h3>WordPress advanced built-in feeds</h3>
<p>You can create feeds for &#8220;unions&#8221; or &#8220;intersections&#8221; of tags, you just have to use a URL like <code>/tag/foo,bar/feed/</code> (all articles tagged with foo <strong>or</strong> bar) or <code>/tag/foo+bar/feed/</code> (all articles tagged with foo <strong>and</strong> bar).</p>
<p>You can also have feeds excluding a category, although that requires you to know the category identifier (and hardcode it in the URL like this: <code>/?feed=rss2&#038;cat=-123</code> where 123 is the category id that you want to exclude).</p>
<p>But there&#8217;s no simple way to have a feed that excludes articles with a given tag. The <a href="http://gobecky.net/2009/01/17/wordpress-tip-custom-rss-feed-excluding-one-or-more-tags/">best solution found</a> involves creating a custom feed. I&#8217;ll show you a variation of this below.</p>
<h3>Creating a custom feed</h3>
<ol>
<li>First of, install the <a href="http://wordpress.org/extend/plugins/feed-wrangler/">Feed Wrangler</a> plugin, it will take care of registering our custom feeds with wordpress.</li>
<li>Go to &#8220;Settings > Feed Wrangler&#8221; in your WordPress administrative interface and create a new feed, let&#8217;s call it &#8220;myfeed&#8221;.</li>
<li>You should now create a &#8220;feed-myfeed.php&#8221; file and put it in your current theme&#8217;s directory. The initial content of that file should be this:

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #b1b100;">include</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'wp-includes/feed-rss2.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

</li>
<li>At this point, you already have a new feed that you can access at <code>/feed/myfeed/</code> (or <code>/?feed=myfeed</code>). It&#8217;s a complete feed like the main one.</li>
</ol>
<p>Now, we&#8217;re going to look at ways to customize this feed. We&#8217;re going to do this by changing/overriding the <a href="http://codex.wordpress.org/Function_Reference/query_posts">default query</a> that feed-rss2.php&#8217;s <a href="http://codex.wordpress.org/The_Loop">loop</a> will use.</p>
<h3>A feed excluding articles with a tag</h3>
<p>If you want to create a feed that excludes the tag &#8220;foo&#8221;, you could use this:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$wp_query</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$tag</span> <span style="color: #339933;">=</span> get_term_by<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;slug&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;foo&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;post_tag&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$args</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array_merge</span><span style="color: #009900;">&#40;</span>
        <span style="color: #000088;">$wp_query</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #339933;">,</span>
        <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'tag__not_in'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$tag</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">term_id</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
query_posts<span style="color: #009900;">&#40;</span><span style="color: #000088;">$args</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">include</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'wp-includes/feed-rss2.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>That was relatively easy, thanks to the &#8220;tag__not_in&#8221; query parameter. Now you can further customize the feed by adding supplementary query parameters to the $args array. The <a href="http://codex.wordpress.org/Function_Reference/query_posts">documentation of query_posts</a> details the various parameters that you can use.</p>
<h3>A feed excluding articles with a custom field (meta-data)</h3>
<p>I went further because I did not want to use a tag to exclude some posts: that tag would have been public even if it was only meaningful to me. So I decided to use a <a href="http://codex.wordpress.org/Custom_Fields">custom field</a> to mark the posts to exclude from my new feed. I named the field &#8220;no_syndication&#8221; and I always give it the value &#8220;1&#8243;.</p>
<p>This time it&#8217;s not so easy because we have no query parameter that can be used to exclude posts based on custom fields. We&#8217;re going to use the &#8220;post__not_in&#8221; parameter that can be used to exclude a list of posts. But we must first generate the list of posts that we want to exclude. Here we go:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000000; font-weight: bold;">global</span> <span style="color: #000088;">$wp_query</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$excluded</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$args_excluded</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
    <span style="color: #0000ff;">'numberposts'</span>     <span style="color: #339933;">=&gt;</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'meta_key'</span>        <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'no_syndication'</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'meta_value'</span>      <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'post_type'</span>       <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'post'</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'post_status'</span>     <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'published'</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span>get_posts<span style="color: #009900;">&#40;</span><span style="color: #000088;">$args_excluded</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$item</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$excluded</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$item</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000088;">$args</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array_merge</span><span style="color: #009900;">&#40;</span>
        <span style="color: #000088;">$wp_query</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #339933;">,</span>
        <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'post__not_in'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$excluded</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
query_posts<span style="color: #009900;">&#40;</span><span style="color: #000088;">$args</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">include</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'wp-includes/feed-rss2.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<h3>A feed with modified content</h3>
<p>You might want to add a footer to the articles that are syndicated. I use the <a href="http://wordpress.org/extend/plugins/ozh-better-feed/">Ozh&#8217; Better Feed</a> plugin for this but it applies to all your feeds.</p>
<p>You could do that sort of transformation only in your customized feed by using the <a href="http://codex.wordpress.org/Plugin_API#Filters">WordPress filter</a> named <a href="http://codex.wordpress.org/Plugin_API/Filter_Reference/the_content_feed">the_content_feed</a>.</p>
<p>Here&#8217;s a simple example:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000000; font-weight: bold;">function</span> myfeed_add_footer<span style="color: #009900;">&#40;</span><span style="color: #000088;">$content</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">return</span> <span style="color: #000088;">$content</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;&lt;hr/&gt;My footer here&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
add_filter<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'the_content_feed'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'myfeed_add_footer'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">include</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'wp-includes/feed-rss2.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>I&#8217;ll stop here but obviously you have lots of options and many ways to tweak all the snippets above. They have been tested with WordPress 3.0.4.</p>
<p>Note that in all those examples, I took care to not duplicate the code from feed-rss2.php, instead I used include() to execute it. That way my custom feeds will automatically benefit from all the future enhancements and fixes made by the WordPress developers.</p>
<p>But if you have to modify the XML structure of your custom feeds, you can paste the content of feed-rss2.php in your file and change it like you want&#8230;</p>
<p style="font-size: smaller"><a href="http://raphaelhertzog.com/2011/01/07/howto-create-custom-rss-feeds-with-wordpress/#comments">6 comments</a> | Liked this article? <a href="http://raphaelhertzog.com/support-my-work/">Click here</a>. | My blog is <a href="http://flattr.com/thing/26545/apt-get-install-debian-wizard">Flattr-enabled</a>.</p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://raphaelhertzog.com/2011/01/07/howto-create-custom-rss-feeds-with-wordpress/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Reorganization of my blog, please update your feeds</title>
		<link>http://raphaelhertzog.com/2010/06/25/reorganization-of-my-blog/</link>
		<comments>http://raphaelhertzog.com/2010/06/25/reorganization-of-my-blog/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 08:17:18 +0000</pubDate>
		<dc:creator>Raphaël Hertzog</dc:creator>
				<category><![CDATA[Meta]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://raphaelhertzog.com/?p=414</guid>
		<description><![CDATA[Up to now I had a single blog hosted on ouaza.com, I used to blog in French and in English on many topics, even though free software and Debian was the main topic. Sometimes I avoided blogging on something because it would not really match the expectations of my readers (and of the various planets [...]]]></description>
			<content:encoded><![CDATA[<p>Up to now I had a single blog hosted on ouaza.com, I used to blog in French and in English on many topics, even though free software and Debian was the main topic. Sometimes I avoided blogging on something because it would not really match the expectations of my readers (and of the various planets syndicating my blog). And I have always been annoyed by the fact that English readers were second-class on my blog because everything was configured in French.</p>
<p>So I decided to fix this once for all, I have created two new blogs in addition to <a href="http://ouaza.com">ouaza.com</a>. The latter is now my private blog (in French) with everything that is not free software related. And free software will be the topic of my 2 new blogs :</p>
<ul>
<li><a href="http://raphaelhertzog.com">RaphaelHertzog.com</a> is the English one (<a href="http://raphaelhertzog.com/feed/">RSS feed</a>) ;</li>
<li><a href="http://raphaelhertzog.fr">RaphaelHertzog.fr</a> is the French one (<a href="http://raphaelhertzog.fr/feed/">RSS feed</a>).</li>
</ul>
<p>I have setup some HTTP redirections on various feed URLs but if you were subscribed to my main feed, you&#8217;re now redirected to the new English feed and you might want to subscribe to the French one to continue reading my articles in French. In any case, you might want to update the feed URL that you used.</p>
<p>I also profited from this reorganization to switch to WordPress 3.0 and the 3 blogs are hosted on the same installation thanks to the new <a href="http://weblogtoolscollection.com/archives/2010/06/02/wordpress-3-multisite/">multisite</a> feature and to the <a href="http://ottopress.com/2010/wordpress-3-0-multisite-domain-mapping-tutorial/">domain mapping</a> plugin. The main regression in those changes is that I&#8217;m back to the (new) default theme of WordPress with the standard header image. I would like to personalize them but I have no graphics skills… but if you do and would like to work on this for me, please <a href="mailto:raphael@ouaza.com">get in touch</a>. I&#8217;ll make sure you get your pony in return. <img src='http://raphaelhertzog.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>More changes concerning those blogs are in the pipe but that will be the topic of other posts. Thanks for following !</p>
<p style="font-size: smaller"><a href="http://raphaelhertzog.com/2010/06/25/reorganization-of-my-blog/#comments">No comment</a> | Liked this article? <a href="http://raphaelhertzog.com/support-my-work/">Click here</a>. | My blog is <a href="http://flattr.com/thing/26545/apt-get-install-debian-wizard">Flattr-enabled</a>.</p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://raphaelhertzog.com/2010/06/25/reorganization-of-my-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

