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

<channel>
	<title>Duncan Mac-Vicar P.</title>
	<atom:link href="http://duncan.mac-vicar.com/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://duncan.mac-vicar.com/blog</link>
	<description>homepage</description>
	<pubDate>Fri, 06 Jun 2008 13:03:42 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.2-alpha</generator>
	<language>en</language>
			<item>
		<title>can&#8217;t remember your git branch?</title>
		<link>http://duncan.mac-vicar.com/blog/archives/318</link>
		<comments>http://duncan.mac-vicar.com/blog/archives/318#comments</comments>
		<pubDate>Fri, 06 Jun 2008 13:03:42 +0000</pubDate>
		<dc:creator>duncan</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<category><![CDATA[git]]></category>

		<category><![CDATA[scm]]></category>

		<category><![CDATA[suse]]></category>

		<guid isPermaLink="false">http://duncan.mac-vicar.com/blog/?p=318</guid>
		<description><![CDATA[I always have the problem remembering in which branch I am, and typing git branch all the time sucks, so just add this to your profile:


if [ -e /etc/bash_completion.d/git ] ; then
  source /etc/bash_completion.d/git
  export PS1=&#8217;$(ppwd \l)\u@\h:\w$(__git_ps1 &#8220;(%s)&#8221;)> &#8216;
fi


And your prompt will look like this if you are in a git checkout:


dmacvicar@piscola:/space/git/suse/zypp(master)>

]]></description>
			<content:encoded><![CDATA[<p>I always have the problem remembering in which branch I am, and typing git branch all the time sucks, so just add this to your profile:</p>

<pre>
if [ -e /etc/bash_completion.d/git ] ; then
  source /etc/bash_completion.d/git
  export PS1=&#8217;$(ppwd \l)\u@\h:\w$(__git_ps1 &#8220;(%s)&#8221;)> &#8216;
fi
</pre>

<p>And your prompt will look like this if you are in a git checkout:</p>

<pre>
dmacvicar@piscola:/space/git/suse/zypp(master)>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://duncan.mac-vicar.com/blog/archives/318/feed</wfw:commentRss>
		</item>
		<item>
		<title>openSUSE 11 RC1, Mercedes Benz and Volkswagen.</title>
		<link>http://duncan.mac-vicar.com/blog/archives/317</link>
		<comments>http://duncan.mac-vicar.com/blog/archives/317#comments</comments>
		<pubDate>Fri, 06 Jun 2008 12:32:40 +0000</pubDate>
		<dc:creator>duncan</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<category><![CDATA[suse]]></category>

		<category><![CDATA[zypp]]></category>

		<category><![CDATA[zypper]]></category>

		<guid isPermaLink="false">http://duncan.mac-vicar.com/blog/?p=317</guid>
		<description><![CDATA[DistroWatch praising zypper:


  During my usage of Zypper over the past couple of weeks, I&#8217;ve learnt to appreciate the convenience it provides to the end user. There is not doubt in my mind that Zypper is the most powerful package management utility available today


Even further goes CNET with their review.


  I’d have to [...]]]></description>
			<content:encoded><![CDATA[<p>DistroWatch <a href="http://distrowatch.com/weekly.php?issue=20080602#feature">praising zypper</a>:</p>

<blockquote>
  <p>During my usage of Zypper over the past couple of weeks, I&#8217;ve learnt to appreciate the convenience it provides to the end user. There is not doubt in my mind that Zypper is the most powerful package management utility available today</p>
</blockquote>

<p>Even further goes CNET with their <a href="http://blogs.zdnet.com/BTL/?p=8988">review</a>.</p>

<blockquote>
  <p>I’d have to say that next to Mac, this is probably the most beautiful installer program I have ever seen. Beauty isn’t just skin deep, however — a lot of time and work has been invested to make the SUSE installer faster and easier to use.</p>
</blockquote>

<p>You can read more about the installer and a short interview with Stephan Kulow <a href="http://news.opensuse.org/2008/06/05/sneak-peeks-at-opensuse-110-new-installer-with-stephan-kulow/">here</a>.</p>

<p>And the last great paragraph:</p>

<blockquote>
  <p>If Ubuntu is a Volkswagen, then OpenSUSE is a Mercedes-Benz.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://duncan.mac-vicar.com/blog/archives/317/feed</wfw:commentRss>
		</item>
		<item>
		<title>User&#8217;s feedback</title>
		<link>http://duncan.mac-vicar.com/blog/archives/315</link>
		<comments>http://duncan.mac-vicar.com/blog/archives/315#comments</comments>
		<pubDate>Sun, 25 May 2008 19:39:25 +0000</pubDate>
		<dc:creator>duncan</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<category><![CDATA[suse]]></category>

		<category><![CDATA[yast]]></category>

		<category><![CDATA[zypp]]></category>

		<category><![CDATA[zypper]]></category>

		<guid isPermaLink="false">http://duncan.mac-vicar.com/blog/?p=315</guid>
		<description><![CDATA[I got some feedback from users about managing software.

Raúl Moratalla. who has been blogging  about using 11.0 ZYpp/YaST in 10.3, suggests two changes:


Updated packages filter.


Adding that feature is really easy. However, 11.0 is almost out.


New packages filter


This shouldn&#8217;t be impossible, but I don&#8217;t have an idea on how to do it. I think we [...]]]></description>
			<content:encoded><![CDATA[<p>I got some feedback from users about managing software.</p>

<p><a href="http://www.raulmoratalla.com">Raúl Moratalla</a>. who has been blogging  about <a href="http://www.raulmoratalla.com/2008/05/probando-caractersticas-de-opensuse-11.html">using 11.0 ZYpp/YaST in 10.3</a>, suggests two changes:</p>

<ul>
<li>Updated packages filter.</li>
</ul>

<p>Adding that feature is really easy. However, 11.0 is almost out.</p>

<ul>
<li>New packages filter</li>
</ul>

<p>This shouldn&#8217;t be impossible, but I don&#8217;t have an idea on how to do it. I think we don&#8217;t have the information on when a package appears in a repository, and even worse, we don&#8217;t keep information about the previous refresh when finishing one.</p>

<p>John Tomas asks and suggests an easier way to <a href="http://opensuse.awardspace.com/#remove">remove applications</a>. I think the use case is valid, but I don&#8217;t like the <a href="http://opensuse.awardspace.com/treeview.png">exact proposal</a>, specifically, I don&#8217;t like user interfaces with trees. And adding more check boxes for repo removal clutters the interface more. Moreover, I think this usecase is just part of a more generic one, how to install applications, without worrying about &#8220;packages&#8221;. This problem is already being solved by, for example, Ubuntu Appinstaller.</p>

<p>This problem could be solved in various way.</p>

<ul>
<li>Packages could be &#8220;tagged&#8221; as such.</li>
</ul>

<p>However that requires changing the current world, therefore it won&#8217;t work.</p>

<ul>
<li>Do a .desktop file -> package mapping.</li>
</ul>

<p>Ubuntu appinstaller does this by scanning the complete distribution archive, and generating special metadata from it. This metadata is distributed as a package called appinstaller-data. This method is sane, but the approach of scanning the distribution archive won&#8217;t work with 3rd party repositories.</p>

<p>Stephan Binner has a <a href="http://download.opensuse.org/repositories/home:/Beineri/Factory">prototype for the same</a> concept on openSUSE, called app-installer.</p>

<p>Any other ideas on how to solve this problem?</p>
]]></content:encoded>
			<wfw:commentRss>http://duncan.mac-vicar.com/blog/archives/315/feed</wfw:commentRss>
		</item>
		<item>
		<title>The greatest unknown openSUSE 11.0 package management feature</title>
		<link>http://duncan.mac-vicar.com/blog/archives/314</link>
		<comments>http://duncan.mac-vicar.com/blog/archives/314#comments</comments>
		<pubDate>Tue, 20 May 2008 22:02:17 +0000</pubDate>
		<dc:creator>duncan</dc:creator>
		
		<category><![CDATA[uncategorized]]></category>

		<category><![CDATA[fedora]]></category>

		<category><![CDATA[suse]]></category>

		<category><![CDATA[yast]]></category>

		<category><![CDATA[yum]]></category>

		<category><![CDATA[zypp]]></category>

		<guid isPermaLink="false">http://duncan.mac-vicar.com/blog/?p=314</guid>
		<description><![CDATA[During the development of openSUSE 11.0, we have been reporting in real time cool improvements like the fast installation, how YaST became sexy, how YaST/ZYpp/zypper became fast, how YaST/ZYpp/zypper performs better than others and even that our solver is also really smart.

However, there is something else&#8230;

Interoperability



Background

One of the features of our stack is the availability [...]]]></description>
			<content:encoded><![CDATA[<p>During the development of openSUSE 11.0, we have been reporting in real time cool improvements like the <a href="http://www.kdedevelopers.org/node/3385">fast installation</a>, <a href="http://www.kdedevelopers.org/node/3143">how YaST became sexy</a>, <a href="http://duncan.mac-vicar.com/blog/archives/296">how YaST/ZYpp/zypper became fast</a>, <a href="http://duncan.mac-vicar.com/blog/archives/309">how YaST/ZYpp/zypper performs better than others</a> and even <a href="http://duncan.mac-vicar.com/blog/archives/311">that our solver is also really smart</a>.</p>

<p>However, there is something else&#8230;</p>

<h2>Interoperability</h2>

<p><a href="http://www.flickr.com/photos/koke/2251169371/"><img src="http://img232.imageshack.us/img232/9904/plugdu9.jpg"/></a></p>

<h3>Background</h3>

<p>One of the features of our stack is the availability of patches and patterns. The first provide updates in a sense of &#8220;fix for a problem&#8221; (which can mean various, or none updated packages), while patterns are intelligent groups that can recommend, require and suggest packages in order to make certain functionality available, without being too strict in the specific packages to install.</p>

<p>Unlike in other systems where groups and updates are handled as special entities, ZYpp patterns and patches are just objects with dependencies like packages, and the solver threats them in the same way.</p>

<p>Because rpm installed packages database does not know about patterns and patches, in openSUSE 10.x (and SLE10) those objects are installed in a separate database, only viewable to libzypp. This is hidden to the users, but does not allow for easy management using 3rd party tools.</p>

<p>In addition to that, the patch metadata format is our own extension to the <a href="http://linux.duke.edu/projects/metadata/">metadata</a> handled by <a href="http://en.wikipedia.org/wiki/Yellow_dog_Updater%2C_Modified">yum</a>, the tool used by Fedora and Centos. That means, even if other distribution provide similar concepts, they will mostly ignore our extended metadata.</p>

<p>This is sad, if we share 90% of the metadata format, why not go further?. Sometimes it is no worth to wait that others do steps in becoming more interoperable with you, so what about doing those steps ourselves?</p>

<p>At this time, Fedora was implementing updates metadata by using a yum plugin and a updateinfo.xml description. Metadata for deltarpm availability is handled via the yum-presto plugin.</p>

<h3>Sharing tools and data, a step for Interoperability</h3>

<h4>Metadata format</h4>

<p>In openSUSE 11.0, ZYpp reads patches from updateinfo.xml too! (<a href="http://download.opensuse.org/update/11.0">check 11.0 update repo!</a>). Not only that, our delta rpm availability metadata will be in the same format <a href="http://hosted.fedoraproject.org/presto">yum-presto</a> (with some modifications agreed with its author).</p>

<p>How will this benefit you?</p>

<ul>
<li>You will be able to use yum stack with updates out of the box with updates and deltarpms, and they will just work.</li>
<li>You will be able to generate custom patches for openSUSE using existing tools like <a href="http://fedorahosted.org/bodhi">Bodhi</a>, from Fedora, or generate custom deltarpm information using the yum-presto included tools.</li>
<li>We are working hard to get the <a href="http://download.opensuse.org/repositories/zypp:/Backport/Fedora_8/">ZYpp/YaST stack to build on Fedora</a> (and other distros), in a near future, you will be able to enjoy ZYpp performance and features on Fedora with their own repositories!</li>
<li>We decoupled the delta-rpm information from patches, so we may start adding delta-rpm to normal factory packages and it will start to work out of the box!</li>
<li>Much more!</li>
</ul>

<h4>Handling of patches and patterns</h4>

<p>As we mentioned, in 10.x codebase we used to install patterns and patches in a special database. This is no longer the case. </p>

<p>Patterns and patches are no longer installed, which means your system is rpm only! Patches are shown now as (un)satisfied (and (un)relevant). Which means you have all the requirements to consider them present.</p>

<p>All the information of patches and patterns (and products) is extra information that openSUSE applications use to add more value to you. So if you for example remove a repository offering patches, then you just lose the information about which patches do you have, the real information is the rpm packages you have installed. When you re-add the update repository, and you can immediately see which patches published affect you, which ones are irrelevant, and which ones are relevant but you don&#8217;t need because your packages are up to date.</p>

<p>Patterns and patches become &#8220;advice&#8221; and &#8220;value&#8221;, not extra non-compatible information.</p>

<p>How will this benefit you?</p>

<ul>
<li>Simpler system.</li>
<li>No conflicts because using 3rd party tools, &#8220;rpm by hand&#8221; or our native tools.</li>
</ul>

<h4>openSUSE, PackageKit enabled</h4>

<p><a href="http://www.packagekit.org/">PackageKit</a> is the new actor in the package management world. It is a thin layer that provides applications access to the package management system as a <a href="http://freedesktop.org/wiki/Software/dbus">DBUS</a> service. You may heard about it because Fedora 9 is coming PackageKit enabled. How it benefits you?</p>

<ul>
<li>Role based (non-root) package management, via <a href="http://hal.freedesktop.org/docs/PolicyKit/index.html">PolicyKit</a>.</li>
<li>Sharing of upstream tools across distributions.</li>
<li>Gives the desktop the chance to integrate with software manipulation.</li>
</ul>

<p>So, openSUSE 11.0 is fully PackageKit enabled. You will be able to use all <a href="http://www.packagekit.org/pk-screenshots.html">PackageKit compatible applications</a> on openSUSE and they will use the ZYpp stack underneaths. Not only that it is enabled, but our hackers <a href="http://en.opensuse.org/User:Sreeves1">Scott Reeves</a> and <a href="http://freedesktop.org/wiki/Software/dbus">Stefan Haas</a> did an amazing job on the backend, I would dare to say it is one of the most robust backend implementations, and it fully benefits from the ZYpp speed and features.</p>

<h3>Future</h3>

<p>All this improvements are available now. May be you are already enjoying them in Factory. However this opens the door for new possibilities, just a few examples come to mind:</p>

<ul>
<li>The openSUSE Build Service, the great software building platform from our openSUSE team, builds packages for all major distributions since long time. The build service could allow to enter and generate patch information for fixed bugs and the update/patch information will be compatible across yum/Fedora and openSUSE. Same with deltarpm information.</li>
<li>We could extend ZYpp parser to understand Fedora groups stored in comps.xml and threat them as patterns.</li>
<li>Do you have more ideas?</li>
</ul>

<h3>Community involvement</h3>

<p>We welcome any help on creating more interoperability possibilities, especially about building the ZYpp stack and YaST on Fedora, Mandriva and others. There are already some packages building in the build service, but we still have a long way to go.</p>
]]></content:encoded>
			<wfw:commentRss>http://duncan.mac-vicar.com/blog/archives/314/feed</wfw:commentRss>
		</item>
		<item>
		<title>Solving the famous “smart” case 3</title>
		<link>http://duncan.mac-vicar.com/blog/archives/311</link>
		<comments>http://duncan.mac-vicar.com/blog/archives/311#comments</comments>
		<pubDate>Fri, 16 May 2008 23:41:33 +0000</pubDate>
		<dc:creator>duncan</dc:creator>
		
		<category><![CDATA[uncategorized]]></category>

		<category><![CDATA[smart]]></category>

		<category><![CDATA[suse]]></category>

		<category><![CDATA[yast]]></category>

		<category><![CDATA[yum]]></category>

		<category><![CDATA[zypp]]></category>

		<guid isPermaLink="false">http://duncan.mac-vicar.com/blog/?p=311</guid>
		<description><![CDATA[In my last post, I showed how sat-solver (solver&#8217;s ZYpp uses) would solve correctly the &#8220;case 2&#8243; included in smart&#8217;s README, an exercise smart uses to claim its &#8220;smartness&#8221; (because apt and yum can&#8217;t handle them).

How does it with case 3?


  That&#8217;s another interesting case which was tested with APT-RPM and YUM.
  
 [...]]]></description>
			<content:encoded><![CDATA[<p>In my <a href="http://duncan.mac-vicar.com/blog/archives/310">last post</a>, I showed how sat-solver (solver&#8217;s ZYpp uses) would solve correctly the &#8220;case 2&#8243; included in <a href="http://svn.labix.org/smart/trunk/README">smart&#8217;s README</a>, an exercise smart uses to claim its &#8220;smartness&#8221; (because apt and yum can&#8217;t handle them).</p>

<p>How does it with case 3?</p>

<blockquote>
  <p>That&#8217;s another interesting case which was tested with APT-RPM and YUM.</p>
  
  <p>In this case, there&#8217;s a package <code>A</code> version 1.0 installed in the
  system, and there are two versions available for upgrading: 1.5 and 2.0.
  Version 1.5 may be installed without problems, but version 2.0 has a
  dependency on <code>B</code>, which is not available anywhere.</p>
  
  <p>In this case, the best possibility is upgrading to 1.5, since upgrading
  to 2.0 is not an option.</p>
</blockquote>

<p>Here both yum and apt fail:</p>

<blockquote>
  <p>Just like APT, YUM selected version 2.0 and didn&#8217;t consider the
  availability of an intermediate version.</p>
</blockquote>

<p>But smart does the right thing:</p>

<blockquote>
  <p>Smart correctly selects the intermediate version 1.5, which is the
  only viable possibility given the current options.</p>
</blockquote>

<p>So, we setup a repository <a href="http://pastebin.com/f1811aef8">packages.xml</a> with A version 1.5 and 2.0 ( 2.0 requiring an non-existing B) and a <a href="http://pastebin.com/f49446f8b">system.xml</a> representing the installed packages, with only A 1.0 installed. We put all together in a <a href="http://pastebin.com/f2658140e">test.xml</a> file, and select a &#8220;upgrade&#8221; action.</p>

<p>We run the already introduced deptestomatic:</p>

<pre>
# deptestomatic test.xml
>!> Solution #1:
>!> upgrade A-1.0-1.noarch => A-1.5-1.noarch[test]
>!> !unflag A-2.0-1.noarch[test]
>!> installs=0, upgrades=1, uninstalls=0
</pre>

<p>And we confirm, that ZYpp (sat-solver) would also select A 1.5 as expected.</p>
]]></content:encoded>
			<wfw:commentRss>http://duncan.mac-vicar.com/blog/archives/311/feed</wfw:commentRss>
		</item>
		<item>
		<title>Solving the famous &#8220;smart&#8221; case 2</title>
		<link>http://duncan.mac-vicar.com/blog/archives/310</link>
		<comments>http://duncan.mac-vicar.com/blog/archives/310#comments</comments>
		<pubDate>Fri, 16 May 2008 22:16:07 +0000</pubDate>
		<dc:creator>duncan</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<category><![CDATA[smart]]></category>

		<category><![CDATA[suse]]></category>

		<category><![CDATA[yast]]></category>

		<category><![CDATA[yum]]></category>

		<category><![CDATA[zypp]]></category>

		<guid isPermaLink="false">http://duncan.mac-vicar.com/blog/?p=310</guid>
		<description><![CDATA[In my recent post about ZYpp, yum and smart speed and memory usage, I got this comment:


  It would be also interesting to know how the new libzypp manages the “Case Studies” from http://svn.labix.org/smart/trunk/README
  
  I don’t know, but could be that yum fixed “Case 2″ and libzypp “fails”? So the extra [...]]]></description>
			<content:encoded><![CDATA[<p>In my <a href="http://duncan.mac-vicar.com/blog/archives/309">recent post about ZYpp, yum and smart</a> speed and memory usage, <a href="http://duncan.mac-vicar.com/blog/archives/309#comment-96588">I got this comment</a>:</p>

<blockquote>
  <p>It would be also interesting to know how the new libzypp manages the “Case Studies” from <a href="http://svn.labix.org/smart/trunk/README">http://svn.labix.org/smart/trunk/README</a></p>
  
  <p>I don’t know, but could be that yum fixed “Case 2″ and libzypp “fails”? So the extra time and memory over libzypp taken by yum to make the dep resolution would be justified.</p>
</blockquote>

<p>At first glance I thought the case was very vague, but actually it was really simple and concrete, so it was a good candidate to be tested with our test suite tools. Let&#8217;s look at it:</p>

<blockquote>
  <p>This is another real case, and is being reproduced in a controlled
  environment for tests with YUM, APT-RPM, and Smart.</p>
  
  <p>The issue is, a package named <code>A</code> requires package <code>BCD</code> explicitly, and
  RPM detects implicit dependencies between <code>A</code> and <code>libB</code>, <code>libC</code>, and <code>libD</code>.
  Package <code>BCD</code> provides <code>libB</code>, <code>libC</code>, and <code>libD</code>, but additionally there
  is a package <code>B</code> providing <code>libB</code>, a package <code>C</code> providing <code>libC</code>, and
  a package <code>D</code> providing <code>libD</code>.</p>
  
  <p>In other words, there&#8217;s a package <code>A</code> which requires four different symbols,
  and one of these symbols is provided by a single package <code>BCD</code>, which happens
  to provide all symbols needed by <code>A</code>. There are also packages <code>B</code>, <code>C</code>, and <code>D</code>,
  that provide some of the symbols required by <code>A</code>, but can&#8217;t satisfy all
  dependencies without <code>BCD</code>.</p>
</blockquote>

<p>So, what is so special about this case?</p>

<blockquote>
  <p>The expected behavior for an operation asking to install <code>A</code> is obviously
  selecting <code>BCD</code> to satisfy <code>A</code>&#8217;s dependencies, on the other hand, <code>YUM</code> and
  APT fail to deliver that as a guaranteed operation, as is shown
  below.</p>
</blockquote>

<p>Ok, there are a couple of things that must be said about this example.</p>

<ul>
<li><p>The dependencies of the package A are broken. Unless the package A depends on the libraries libA, libB and libC and some runtime &#8220;thing&#8221; provided by it, then BCD should be split in three packages. But as none of B, C, D provides any runtime &#8220;thing&#8221;, but they just &#8220;replace&#8221; it, this is not true. So either fix BCD or fix A to depend on the libraries only, the explicit BCD dependency is bogus.</p></li>
<li><p>Debian&#8217;s apt-get won&#8217;t succeed here, because AFAIK Debian only has dependencies across packages, not on libraries. Actually I still wonder how smart could succeed here using a debian backend. I ignore if apt-rpm does support library dependencies.</p></li>
<li><p>The result yum produces makes no sense too.</p></li>
<li><p>So yes, this is the expected result, but the example is a really dumb package.</p></li>
</ul>

<p>How to simulate dependencies using the ZYpp sat solver?. The magic is call deptestomatic. There are two versions of this tool, one provided by satsolver-tools, and another one provided by libzypp-testsuite. The one in sat-solver tools should be sufficient. The one in libzypp-testsuite has extra features like graphical display of dependencies.</p>

<p>So, we use the helix format for testcases, which was the format of the original RedCarpet testuite. A testcase is a xml file refering to one or more xml files describing repositories, and one repository represents the installed packages (in this case we can simulate with no installed packages and just one repository).</p>

<p>We start by creating a <a href="http://pastebin.com/f4117ec82">packages.xml</a>.</p>

<p>And now, we define the <a href="http://pastebin.com/f6add727c">test.xml</a> describing the testcase.</p>

<p>If there are conflicts, the xml language has features to select solutions, but that is advanced stuff <a href="http://en.opensuse.org/Libzypp/Testsuite_solver">documented here</a>. For our case, the test is really, simple, just install A.</p>

<p>Now run the test:</p>

<pre>
# deptestomatic test.xml
</pre>

<p>And you get the result:</p>

<pre>
>!> Installing A from channel test
>!> Solution #1:
>!> install A-2.0-1.noarch[test]
>!> install BCD-2.0-1.noarch[test]
>!> installs=2, upgrades=0, uninstalls=0
</pre>

<p>Which is the &#8220;smart&#8221; result. It only installs A and BCD, and not B, C and D (which is what yum does).</p>

<p>Learning to develop testcases and run them is an excellent way to help the development team to fix bugs without having to request extra information, so you can play yourself with the simulation before actually reporting it.</p>

<p>You can also generate testcases for day to day operations in a very simple way (no need to write xml):</p>

<ul>
<li>in the YaST (Qt) package selector, go to Extras, and choose generate solver testcase (after selecting your transactions, like installing or removing packages).</li>
<li>Use zypper command &#8211;debug-solver  (like zypper install &#8211;debug-solver foo )</li>
</ul>

<p>Then you can run them with deptestomatic by referencing the test xml file. Note that you can reuse package lists (repositories) across tests. libzypp-testsuite and the sat-solver source includes a big list of testcases representing simple operations, distributions, upgrades, and distribution upgrades.</p>
]]></content:encoded>
			<wfw:commentRss>http://duncan.mac-vicar.com/blog/archives/310/feed</wfw:commentRss>
		</item>
		<item>
		<title>yum and ZYpp speed / memory usage</title>
		<link>http://duncan.mac-vicar.com/blog/archives/309</link>
		<comments>http://duncan.mac-vicar.com/blog/archives/309#comments</comments>
		<pubDate>Fri, 16 May 2008 17:30:23 +0000</pubDate>
		<dc:creator>duncan</dc:creator>
		
		<category><![CDATA[Software]]></category>

		<category><![CDATA[suse]]></category>

		<category><![CDATA[yast]]></category>

		<category><![CDATA[yum]]></category>

		<category><![CDATA[zypp]]></category>

		<guid isPermaLink="false">http://duncan.mac-vicar.com/blog/archives/309</guid>
		<description><![CDATA[Michael Zucchi complains about yum memory usage, and points python as guilty.


  Yum isn’t so yummy after-all. Re-enabled python so i could run yum. Wow 120mb of vm to install a couple of packages. Not bad considering the box only has 128mb. This is crap.
  
  Hmm, should I try xubuntu - [...]]]></description>
			<content:encoded><![CDATA[<p>Michael Zucchi <a href="http://blogs.gnome.org/zucchi/2008/05/10/linux-is-bloated/">complains</a> about yum memory usage, and points python as guilty.</p>

<blockquote>
  <p>Yum isn’t so yummy after-all. Re-enabled python so i could run yum. Wow 120mb of vm to install a couple of packages. Not bad considering the box only has 128mb. This is crap.</p>
  
  <p>Hmm, should I try xubuntu - or will it be just as crappy and bloated and blighted by python poo?</p>
</blockquote>

<p>Since our efforts to make the ZYpp really fast, by incorporating and integrating Michael Schroeder&#8217;s sat solver together with Michael Matz&#8217;s great work on the solv files and data storage, I never took the time to make a &#8220;quick comparison&#8221; on speed or memory usage. So lets have a quick look.</p>

<p>These are my repositories:</p>

<pre>
Software configuration management (openSUSE_10.3)
10.3 - Main Repository (NON-OSS) 
10.3 - Packman
openSUSE-10.3-Updates
Virtualization:VirtualBox
home:dgollub
KDE:KDE3
Mozilla based projects (openSUSE_10.3)
ZYPP SVN Builds (openSUSE_10.3) 
ZYPP SVN Builds (openSUSE_10.3)
home:prusnak
10.3 - VideoLan
openSUSE.org tools (openSUSE_10.3)
SUSE Feature Tracking Tool (openSUSE_10.3)
psmt's Home Project (openSUSE_10.3)
openSUSE:10.3
Duncan Mac-Vicar SUSE rpms (openSUSE_10.3)
Latest YaST svn snapshots (openSUSE_10.3)
building/openSUSE_10.3         
</pre>

<p>All these repos together are about 41.000 packages.</p>

<p>What I did was to symlink ZYpp repositories to the yum repo path so they use the same repos.</p>

<pre>
# rm -rf /etc/yum.repos.d/
# ln -s /etc/zypp/repos.d /etc/yum.repos.d
</pre>

<div style="text-decoration: line-through">
*NOTE:* I tested with yum 3.2.4. I know 3.2.14 is available, but that is what I had installed when doing the test. After doing this tests I upgraded to 3.2.14 but it did not accept my .repo file because the character &#8220;:&#8221; in repo names. However the changelog of yum since 3.2.4 shows:

If using latest yum would invalidate this numbers (not as in 1 second, but as in an order of magnitude), let me know and I will repeat them when I make them work with my repo files.
</div>

<p><strong>Update 14.05.2008 : I did add yum 3.2.14. However it performed even worse, except for memory usage.</strong></p>

<p><strong>Update 15.05.2008 : added smart 0.52 numbers</strong></p>

<p>libzypp is the one you see in factory since some days: 4.21.1.</p>

<p>yum and ZYpp behave differently, as yum downloads and parses filelists.xml and other.xml which we ignore. There fore I skipped the download metadata part and just timed the cache building process.</p>

<pre>
# yum clean dbcache
...
19 sqlite files removed

# time yum makecache
...
Metadata Cache Created

real    9m41.036s
user    2m34.766s
sys     0m11.545s
</pre>

<p>Almost 10 minutes. As this time includes parsing the two big files we ignore. I did it again, pressing Ctrl-C After yum finished with the primary data, which is what ZYpp uses:</p>

<pre>
# time yum makecache
...
Exiting on user cancel

real    4m6.730s
user    0m34.058s
sys     0m3.080s
</pre>

<p>Now, zypper&#8217;s turn:</p>

<pre>
# time zypper ref -B
...
All repositories have been refreshed.

real    0m18.472s
user    0m16.029s
sys     0m2.024s
</pre>

<p>So yum takes 13 times the ZYpp needs technically (primary 1:1 comparison), but 30 times the time the end user sees.</p>

<p>Now, installing a package. Times were measured till the &#8220;continue? yes/no&#8221; prompt, or till the first interactive question.</p>

<pre>
# time yum install fate
...
Is this ok [y/N]: n
Exiting on user Command
Complete!

real    0m19.143s
user    0m14.057s
sys     0m1.920s
</pre>

<p>zypper&#8217;s turn:</p>

<pre>
# time zypper in fate
...
Continue? [YES/no]: n

real    0m9.796s
user    0m8.509s
sys     0m0.624s
</pre>

<p>This time, ZYpp is only twice as fast as yum. Only <img src='http://duncan.mac-vicar.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>

<p>What happens when you want to upgrade your packages?</p>

<pre>
# time yum upgrade
...
real    0m45.152s
user    0m36.894s
sys     0m7.476s
</pre>

<p>(Note: yum did not even found a solution here).</p>

<pre>
# time zypper update
...
Continue? [YES/no]: n

real    0m8.988s
user    0m7.820s
sys     0m0.596s
</pre>

<p>yum needs 4 times the time ZYpp needs to calculate the upgrade.</p>

<p><strong>Update 14.05.2008 : I was comparing update to upgrade, I fixed those numbers in the chart. However, I don&#8217;t have the update value for the old yum.</strong></p>

<p>Summary:</p>

<p><a href="http://spreadsheets.google.com/pub?key=pbhIDzxcltzc9RhZfvnKBCg&#038;oid=1&#038;output=image"><img src="http://spreadsheets.google.com/pub?key=pbhIDzxcltzc9RhZfvnKBCg&#038;oid=1&#038;output=image" /></a></p>

<p>Now, how much memory does each one need? For this, I just tested the install command with one package using valgrind massif, a heap profiler.</p>

<p>yum memory usage:</p>

<p><a href="http://files.opensuse.org/opensuse/en/e/ea/Yum-in-massif.png"><img src="http://files.opensuse.org/opensuse/en/e/ea/Yum-in-massif.png" alt="yum memory usage" /></a></p>

<p>ZYpp memory usage:</p>

<p><a href="http://files.opensuse.org/opensuse/en/6/65/Zypper-in-massif.png"><img src="http://files.opensuse.org/opensuse/en/6/65/Zypper-in-massif.png" alt="zypp memory usage" /></a></p>

<p><strong>Update 14.05.2008 : memory usage chart for yum 3.2.14</strong></p>

<p><a href="http://files.opensuse.org/opensuse/en/2/26/Yum-3214-massif.png"><img src="http://files.opensuse.org/opensuse/en/2/26/Yum-3214-massif.png" alt="yum 3.2.14 memory usage" /></a></p>

<p><strong>Update 15.05.2008 : memory usage chart for smart 0.52</strong></p>

<p><a href="http://files.opensuse.org/opensuse/en/f/fa/Smart-in-massif.png"><img src="http://files.opensuse.org/opensuse/en/f/fa/Smart-in-massif.png" alt="smart 0.52 memory usage" /></a></p>

<p>Here you can appreciate ZYpp goes a little bit over 20M, while yum goes over 180M, so yum uses about 9 times more memory. <strong>Update 14.05.2008 : yum 3.2.14 uses around 160 in the worst point of time.</strong></p>

<p><a href="http://spreadsheets.google.com/pub?key=pbhIDzxcltzc9RhZfvnKBCg&#038;oid=2&#038;output=image"><img src="http://spreadsheets.google.com/pub?key=pbhIDzxcltzc9RhZfvnKBCg&#038;oid=2&#038;output=image" /></a></p>

<p>I would be interested in tracking cpu usage too, but that will come later. What do you think about it?</p>
]]></content:encoded>
			<wfw:commentRss>http://duncan.mac-vicar.com/blog/archives/309/feed</wfw:commentRss>
		</item>
		<item>
		<title>Europe’s Philosophy of Failure</title>
		<link>http://duncan.mac-vicar.com/blog/archives/307</link>
		<comments>http://duncan.mac-vicar.com/blog/archives/307#comments</comments>
		<pubDate>Sun, 27 Apr 2008 17:27:38 +0000</pubDate>
		<dc:creator>duncan</dc:creator>
		
		<category><![CDATA[politics]]></category>

		<category><![CDATA[economy]]></category>

		<category><![CDATA[europe]]></category>

		<category><![CDATA[usa]]></category>

		<guid isPermaLink="false">http://duncan.mac-vicar.com/blog/archives/307</guid>
		<description><![CDATA[FP is running an article called Europe’s Philosophy of Failure. Citing the summary to give you an idea:


  In France and Germany, students are being forced to undergo a dangerous indoctrination. Taught that economic principles such as capitalism, free markets, and entrepreneurship are savage, unhealthy, and immoral, these children are raised on a diet [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.foreignpolicy.com/story/cms.php?story_id=4095&amp;amp;amp;page=0">FP</a> is running an article called <a href="http://www.foreignpolicy.com/story/cms.php?story_id=4095&amp;amp;amp;page=0">Europe’s Philosophy of Failure</a>. Citing the summary to give you an idea:</p>

<blockquote>
  <p>In France and Germany, students are being forced to undergo a dangerous indoctrination. Taught that economic principles such as capitalism, free markets, and entrepreneurship are savage, unhealthy, and immoral, these children are raised on a diet of prejudice and bias. Rooting it out may determine whether Europe’s economies prosper or continue to be left behind. </p>
</blockquote>

<p>I don&#8217;t want to make a flame on economical systems, models, and so on. But I like to comment on propaganda.</p>

<p>Since I moved to Europe, I have spend lot of time observing the society and comparing (Denken heißt vergleichen) it to what I saw in Chile and what I see from other cultures like the United States. I can&#8217;t include Asia in the mix because I know really little.</p>

<p>I think in Europe there is a left wing bias in almost everything. You start to see it in small details that create contradictions in your head, like advocating free speech on one hand as long as it is not right wing ideas (which are called for censorship or &#8220;anti&#8221; manifestations ). Countries like Belgium, which from one side talks about human rights, but then gives asylum, passports and money to murders from Chile or Spain terrorist groups, just because they are left wing, which upgrades them from murders to &#8220;politically prosecuted&#8221;. Those are extreme examples.</p>

<p>In the normal day to day life, this left-wing bias will of course end up in education and the way the economy works. However, I think this bias is not bad at all. It is just different. Let&#8217;s look at the article&#8217;s points:</p>

<blockquote>
  <p>they are exposed to a dogma that runs counter to core beliefs shared by many other Western countries</p>
</blockquote>

<p>Which other Western countries apart of USA (and may be UK)?</p>

<blockquote>
  <p>Chancellor Angela Merkel, once heralded as Germany’s own Margaret Thatcher, has all but abandoned her plans to continue free-market reforms. She has instead imposed a new “rich people tax,”</p>
</blockquote>

<p><a href="http://mjperry.blogspot.com/2008/02/rich-individuals-should-pay-more-taxes.html">More taxes for rich people, and fewer for wealthy corporations</a> is something even the Gates support.</p>

<blockquote>
  <p>has tightened labor-market rules, and has promised renewed efforts to “regulate” globalization.</p>
</blockquote>

<p>I don&#8217;t think Europe&#8217;s attitude on globalization is bad at all. I think it focuses in very basic aspects:</p>

<ul>
<li><p>If production is going to be moved to third world, lower salaries there is something you expect, but not everyone expect children to build the products.</p></li>
<li><p>If one continent cares about the environment and the other does not. Is it globalization anymore? is it fair competition to do it under different moral views?</p></li>
</ul>

<p>So the problem on how &#8220;capitalism&#8221; is being advocated (even if it is there already in almost every country) is surreal. There is no such things as pure free market. Europe may want to protect certain market from unfair competition. How is this different (from the economical point of view) from using military power for oil?</p>

<p><a href="http://www.taurillon.org/Europe-vs-USA-Whose-Economy-Wins">This post is worth to read</a>, and its conclusion:</p>

<blockquote>
  <p>Comparing the economic performance of the European Union and the USA does not lead one to conclude that America has the more dynamic economy, or that it has performed better in the past or will do so in future. The most important feature of the comparison is neither the growth nor the unemployment record of the US and the EU. It is, rather, that US growth, unlike that in the EU, is funded by a dangerously high mountain of foreign debt. US external indebtedness, in turn, is driven by the US house-price bubble, enabling US consumers to spend more than they earn. Ironically, it is the EU which, together with China and Japan, continues to lend the money to the US which keeps their households spending and their economy growing.</p>
  
  <p>The truth is that neither side ‘wins’ in this beauty contest. Europe merely does less badly than the USA in some crucial respects. Yes, while it is true that the core Eurozone countries could perform far better, Germany, France and Italy have quite different problems – in comparison both to the US and to each other – which require quite different solutions. Anybody who claims that the US provides a model which the EU should copy needs to consider the basic economic facts of the case.</p>
</blockquote>

<p>And some of the comments just make the whole point:</p>

<blockquote>
  <p>In my experience as having worked on both sides of the Atlantic for 7+ years, my appreciations are that in the US, an individual needs to put away a bigger chunk of his/her paycheck for items covered by European taxes.</p>
  
  <p>Thus, in the end, US worker gets taxed higher than its European counterpart.</p>
</blockquote>

<p>Or this one:</p>

<blockquote>
  <p>This article was prophetic in talking about the housing bubble and the inflated by debt growth numbers in the USA. The new IMF stats show Europe starting to trash the USA even when it comes to GDP per capita. My country (Netherlands) was just a year ago 2k behind the USA now we are 6K ahead in just as year! Both France and the UK are now projected to overtake the USA (the UK in 09 and France in 2010+) and the former is especially impressive seeing how much hours they spend NOT working compared to the states.</p>
</blockquote>

<p><a href="http://en.wikipedia.org/wiki/Sicko">I am leaving the health system</a> topic out of the post, but it is also an interesting point.</p>

<p>So please guys. Let accept there are two different models. But I don&#8217;t think doing propaganda on the false basis that one performs better than the other.</p>
]]></content:encoded>
			<wfw:commentRss>http://duncan.mac-vicar.com/blog/archives/307/feed</wfw:commentRss>
		</item>
		<item>
		<title>Package search and others</title>
		<link>http://duncan.mac-vicar.com/blog/archives/308</link>
		<comments>http://duncan.mac-vicar.com/blog/archives/308#comments</comments>
		<pubDate>Sun, 27 Apr 2008 12:58:05 +0000</pubDate>
		<dc:creator>duncan</dc:creator>
		
		<category><![CDATA[uncategorized]]></category>

		<category><![CDATA[packagemanagement]]></category>

		<category><![CDATA[suse]]></category>

		<category><![CDATA[yast]]></category>

		<category><![CDATA[zypp]]></category>

		<guid isPermaLink="false">http://duncan.mac-vicar.com/blog/archives/308</guid>
		<description><![CDATA[YaST ideas and research

We moved the summer of code ideas, and other projects to the YaST/Research page. We would like to find all the experiments that are lying around in the tmp and experimental branches and put them together in that page so previous attempts and knowledge is not lost.

Installation Branding

Some information on branding the [...]]]></description>
			<content:encoded><![CDATA[<h3>YaST ideas and research</h3>

<p>We moved the summer of code ideas, and other projects to the <a href="http://en.opensuse.org/YaST/Research">YaST/Research</a> page. We would like to find all the experiments that are lying around in the tmp and experimental branches and put them together in that page so previous attempts and knowledge is not lost.</p>

<h3>Installation Branding</h3>

<p>Some information on branding the installation is available on <a href="http://en.opensuse.org/YaST/Tips#Branding_the_installation">YaST/Tips#Branding<em>the</em>installation</a>.</p>

<h3>Package groups</h3>

<p>The first thing that caught my attention in the rpm world was  <a href="http://forgeftp.novell.com/susesdk/docs/SUSE%20Package%20Conventions/spc_rpm_groups.html">package groups</a>. It is a 4 deep level tree which has become pretty useless with time. They are also not consistent across rpm distributions. I agree that they are interesting metadata (because they contain keywords), but nothing you want to display in a user interface.</p>

<p>So I started to ask people around. Do you use the groups tree?. &#8220;YES&#8221; was the first reply. I was surprised. Were my initial guesses wrong?. &#8220;I use it to select the zzzAll group, which is the only way to select all packages&#8221;. Interesting point, any effort to change this should take that into account.</p>

<p>Luckily all the answers were the same. The famous &#8220;zzzAll&#8221; group was the only reason why people used that filter.</p>

<p>So when looking for a way to make that screen more easy to the eyes, <a href="http://www.packagekit.org/">PackageKit</a> groups seemed like the way to go, as they are already in use in some applications.</p>

<p>That is how package groups looked like before:</p>

<p><a href="http://files.opensuse.org/opensuse/en/d/d3/Rpmgroups-before.png"><img src="http://files.opensuse.org/opensuse/en/thumb/d/d3/Rpmgroups-before.png/800px-Rpmgroups-before.png" alt="rpm groups before" /></a></p>

<p>After matching the rpm groups to PackageKit groups, this is the result. Easy.</p>

<p><a href="http://files.opensuse.org/opensuse/en/0/02/Rpmgroups-after.png"><img src="http://files.opensuse.org/opensuse/en/thumb/0/02/Rpmgroups-after.png/800px-Rpmgroups-after.png" alt="rpm groups after" /></a></p>

<p>Notice that &#8220;All packages&#8221; is still there. Also there is a recommended and suggested groups. The interesting thing is, that if you look at other applications, like Gnome PackageKit install, which is a braindead application (no features) compared to YaST, but still, now they look pretty consistent with each other:</p>

<p><img src="http://www.packagekit.org/img/gpk-application-search.png" alt="packagekit search" /></p>

<p>Before you cry for your old 4 level deep tree, you can still reach the groups via search. Search will look into the groups field and also the generated keywords in the metadata (tags).</p>

<h3>Package search</h3>

<p>Now uses the sat solver APIs to query the solv files, which is much faster and we have transparent access to more attributes.</p>
]]></content:encoded>
			<wfw:commentRss>http://duncan.mac-vicar.com/blog/archives/308/feed</wfw:commentRss>
		</item>
		<item>
		<title>openSUSE 11.0 beta</title>
		<link>http://duncan.mac-vicar.com/blog/archives/304</link>
		<comments>http://duncan.mac-vicar.com/blog/archives/304#comments</comments>
		<pubDate>Sat, 12 Apr 2008 12:52:40 +0000</pubDate>
		<dc:creator>duncan</dc:creator>
		
		<category><![CDATA[uncategorized]]></category>

		<category><![CDATA[fedora]]></category>

		<category><![CDATA[packagekit]]></category>

		<category><![CDATA[suse]]></category>

		<guid isPermaLink="false">http://duncan.mac-vicar.com/blog/archives/304</guid>
		<description><![CDATA[openSUSE 11.0 beta is coming. This means that all the pieces of the update stack have to be in place by then.

While reading Review: Hat Trick For Fedora 9 Beta, it caught my attention that the author says &#8220;Fedora continues to wear the innovation hat&#8221; because some of the changes described there. I did not [...]]]></description>
			<content:encoded><![CDATA[<p>openSUSE 11.0 beta is coming. This means that all the pieces of the update stack have to be in place by then.</p>

<p>While reading <a href="http://www.crn.com/software/207200137">Review: Hat Trick For Fedora 9 Beta</a>, it caught my attention that the author says &#8220;Fedora continues to wear the innovation hat&#8221; because some of the changes described there. I did not see any killer feature openSUSE 11.0 does not have too, and a few ones are worth to highlight:</p>

<ul>
<li>KDE 4 integration: No distro will ever beat openSUSE here <img src='http://duncan.mac-vicar.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> you know that. openSUSE is a multi desktop distribution and both the Gnome and the KDE team are unbeatable. Period. (I am objective today <img src='http://duncan.mac-vicar.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> )</li>
<li>The installation experience and look essentially remained the same from Fedora 8: Sorry guys, but YaST installer <a href="http://news.opensuse.org/2008/03/19/announcing-opensuse-110-alpha-3/">looks far cooler</a> than in our last release. The <a href="http://www.kdedevelopers.org/node/3385">experience is also much different</a>.</li>
<li>except there is now support for resizing ext2, ext3, and NTFS partitions from the installer: zzzzzzz. YaST resizes partitions before Linux was invented.</li>
<li>The installer also checks for password strength for the root account: YaST in the 80&#8217;s ?</li>
<li>The new package management solution, PackageKit, is another interesting feature: openSUSE 11.0 will have native PackageKit support (the backend is upstream) and it works really well. The yum backend has no good reputation. The ZYpp backend in 11.0 inherits all the unbeatable speed of ZYpp 4.x and it is robust at the same time.</li>
</ul>

<p>Sorry guys, the innovation hat is green. Ok, enough with articles. Lets back to 11.0 beta.</p>

<p>We talked about <a href="http://duncan.mac-vicar.com/blog/archives/296">package management speed</a>, we talked about <a href="http://duncan.mac-vicar.com/blog/archives/303">new looks and features already</a>. However our work around patches and patterns was still missing.</p>

<p>During the last weeks, we have been working on this and now all the pieces start to fall together. Click on any image to see it in full size. Also note that ugly scrollbar in the disk usage is was also fixed already.</p>

<p>You may remember the pattern selector:</p>

<p><a href="http://files.opensuse.org/opensuse/de/b/b8/Selecting-patterns-de.png"><img src="http://files.opensuse.org/opensuse/de/thumb/b/b8/Selecting-patterns-de.png/755px-Selecting-patterns-de.png" alt="Old Pattern Selector" /></a></p>

<p>New pattern selector:</p>

<p><a href="http://files.opensuse.org/opensuse/en/e/e6/Patterns.png"><img src="http://files.opensuse.org/opensuse/en/thumb/e/e6/Patterns.png/750px-Patterns.png" alt="New Pattern Selector" /></a></p>

<p>If you go to the repository view, it was a little boring. openSUSE has the Build Service, which has generated a big community of repositories. Visually, we want to make a difference to the eye if a repo is a normal repository, or the home project of a friend, or a well known repository, or may be a update repository. Result?</p>

<p><a href="http://files.opensuse.org/opensuse/en/3/3f/Repos.png"><img src="http://files.opensuse.org/opensuse/en/thumb/3/3f/Repos.png/783px-Repos.png" alt="New repo view" /></a></p>

<p>The old patch view was confusing. The category column never had space for itself.</p>

<p><a href="http://de.opensuse.org/Bild:Yast-gui-online-update.png"><img src="http://files.opensuse.org/opensuse/de/thumb/e/e7/Yast-gui-online-update.png/550px-Yast-gui-online-update.png" alt="Old patch selector" /></a></p>

<p>So we introduced categories just like in the patterns view.</p>

<p><a href="http://files.opensuse.org/opensuse/en/8/8c/Patches.png"><img src="http://files.opensuse.org/opensuse/en/thumb/8/8c/Patches.png/800px-Patches.png" alt="Old patch selector" /></a></p>

<p>There are still some details. In that view the reboot patch should not be shown in the default filter, because I don&#8217;t have the package the patch fixes installed. For some reason isRelevant() is not working there. Same with the security patch. It shows correctly the fact that the patch is satisfied, but therefore it should be hidden.</p>

<p>In a next post I will write a bit about how patterns, products and patches are handled now, plus other features.</p>
]]></content:encoded>
			<wfw:commentRss>http://duncan.mac-vicar.com/blog/archives/304/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
