<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Why platform specific package systems exist and won&#8217;t go away</title>
	<atom:link href="http://rbtcollins.wordpress.com/2012/08/27/why-platform-specific-package-systems-exist-and-wont-go-away/feed/" rel="self" type="application/rss+xml" />
	<link>http://rbtcollins.wordpress.com/2012/08/27/why-platform-specific-package-systems-exist-and-wont-go-away/</link>
	<description>Someone near you is coding</description>
	<lastBuildDate>Fri, 12 Apr 2013 02:40:04 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: naesten</title>
		<link>http://rbtcollins.wordpress.com/2012/08/27/why-platform-specific-package-systems-exist-and-wont-go-away/#comment-1239</link>
		<dc:creator><![CDATA[naesten]]></dc:creator>
		<pubDate>Tue, 06 Nov 2012 05:13:35 +0000</pubDate>
		<guid isPermaLink="false">http://rbtcollins.wordpress.com/?p=315#comment-1239</guid>
		<description><![CDATA[Really? System-wide? Since when is %UserProfile% system-wide?]]></description>
		<content:encoded><![CDATA[<p>Really? System-wide? Since when is %UserProfile% system-wide?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Craig Sanders</title>
		<link>http://rbtcollins.wordpress.com/2012/08/27/why-platform-specific-package-systems-exist-and-wont-go-away/#comment-1189</link>
		<dc:creator><![CDATA[Craig Sanders]]></dc:creator>
		<pubDate>Sat, 15 Sep 2012 03:06:08 +0000</pubDate>
		<guid isPermaLink="false">http://rbtcollins.wordpress.com/?p=315#comment-1189</guid>
		<description><![CDATA[Given that CPAN packages integrate quite well with deb and rpm systems, I&#039;d say that the problem is with python (and ruby and other languages).

To be even more specific, the problem is that the packaging systems for python etc are written by programmers rather than systems administrators, and programmers typically have little or no interest in the system that their application (or library or whatever) is running on, their interest and their focus is on THEIR application.

The classic example is that sysadmins see important systems stuff running out of someone&#039;s home directory and dependent on their idiosyncratic environment as a hanging offence, while programmers can&#039;t see what the problem is or what the fuss is about.

This is, of course, an exaggerated generalisation - but there&#039;s enough truth in it to indicate the source of the problem.

It probably explains why perl and CPAN modules integrate well with systems - perl is a sysadmin&#039;s language, while python is a programmer&#039;s language.  The difference in focus results in a very different point of view and attitude towards systems.

Aslo, as a sysadmin and as a user, I *don&#039;t want* a dozen different incompatible versions of libfoo installed.  I want one, and I want it to work, and I want all programs that use it to work with that version.  If appA requires libfoo 0.1 and appB requires libfoo 0.2 then I regard that as a bug in appA that needs to be fixed - it isn&#039;t keeping up with developments in an important library that it depends upon.  I most emphatically do not see it as a sufficient reason to have both libfoo 0.1 and libfoo 0.2 installed except in special circumstances (at least C libraries allow different sonames for different lib versions - perhaps that&#039;s something that other languages should learn from).

If a developer happens to need a different version while they&#039;re working on something then installing and using it from their home dir is entirely appropriate - but when their work is ready for use by others, it should integrate with the existing system (i.e. use the system version of libfoo, or create a new system package for the latest libfoo if required) rather than require everyone else to duplicate the developer&#039;s idiosyncratic environment.

These are all lessons that we learnt during the transition from proprietary unixes in the 80s and early 90s to package-managed linux distributions in the mid 90s and later - faffing about with hunting for and manually downloading and resolving dependencies and conflicts is a major PITA, something that the system should handle.   We seem to be in the process of forgetting that important lesson.

(btw, there seems to be a problem with your comment field. cuts off the RHS of the comments, no matter what font size i try.  width specified in pixels, perhaps.)]]></description>
		<content:encoded><![CDATA[<p>Given that CPAN packages integrate quite well with deb and rpm systems, I&#8217;d say that the problem is with python (and ruby and other languages).</p>
<p>To be even more specific, the problem is that the packaging systems for python etc are written by programmers rather than systems administrators, and programmers typically have little or no interest in the system that their application (or library or whatever) is running on, their interest and their focus is on THEIR application.</p>
<p>The classic example is that sysadmins see important systems stuff running out of someone&#8217;s home directory and dependent on their idiosyncratic environment as a hanging offence, while programmers can&#8217;t see what the problem is or what the fuss is about.</p>
<p>This is, of course, an exaggerated generalisation &#8211; but there&#8217;s enough truth in it to indicate the source of the problem.</p>
<p>It probably explains why perl and CPAN modules integrate well with systems &#8211; perl is a sysadmin&#8217;s language, while python is a programmer&#8217;s language.  The difference in focus results in a very different point of view and attitude towards systems.</p>
<p>Aslo, as a sysadmin and as a user, I *don&#8217;t want* a dozen different incompatible versions of libfoo installed.  I want one, and I want it to work, and I want all programs that use it to work with that version.  If appA requires libfoo 0.1 and appB requires libfoo 0.2 then I regard that as a bug in appA that needs to be fixed &#8211; it isn&#8217;t keeping up with developments in an important library that it depends upon.  I most emphatically do not see it as a sufficient reason to have both libfoo 0.1 and libfoo 0.2 installed except in special circumstances (at least C libraries allow different sonames for different lib versions &#8211; perhaps that&#8217;s something that other languages should learn from).</p>
<p>If a developer happens to need a different version while they&#8217;re working on something then installing and using it from their home dir is entirely appropriate &#8211; but when their work is ready for use by others, it should integrate with the existing system (i.e. use the system version of libfoo, or create a new system package for the latest libfoo if required) rather than require everyone else to duplicate the developer&#8217;s idiosyncratic environment.</p>
<p>These are all lessons that we learnt during the transition from proprietary unixes in the 80s and early 90s to package-managed linux distributions in the mid 90s and later &#8211; faffing about with hunting for and manually downloading and resolving dependencies and conflicts is a major PITA, something that the system should handle.   We seem to be in the process of forgetting that important lesson.</p>
<p>(btw, there seems to be a problem with your comment field. cuts off the RHS of the comments, no matter what font size i try.  width specified in pixels, perhaps.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Colin Watson</title>
		<link>http://rbtcollins.wordpress.com/2012/08/27/why-platform-specific-package-systems-exist-and-wont-go-away/#comment-1156</link>
		<dc:creator><![CDATA[Colin Watson]]></dc:creator>
		<pubDate>Sun, 09 Sep 2012 18:22:59 +0000</pubDate>
		<guid isPermaLink="false">http://rbtcollins.wordpress.com/?p=315#comment-1156</guid>
		<description><![CDATA[manpath is not quite as static as you&#039;re assuming here; in particular it (at least the man-db implementation) will automatically use .../man directories paralleling .../bin directories on your $PATH if they exist.]]></description>
		<content:encoded><![CDATA[<p>manpath is not quite as static as you&#8217;re assuming here; in particular it (at least the man-db implementation) will automatically use &#8230;/man directories paralleling &#8230;/bin directories on your $PATH if they exist.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matt Zimmerman</title>
		<link>http://rbtcollins.wordpress.com/2012/08/27/why-platform-specific-package-systems-exist-and-wont-go-away/#comment-1155</link>
		<dc:creator><![CDATA[Matt Zimmerman]]></dc:creator>
		<pubDate>Sun, 09 Sep 2012 16:39:03 +0000</pubDate>
		<guid isPermaLink="false">http://rbtcollins.wordpress.com/?p=315#comment-1155</guid>
		<description><![CDATA[The class of package managers we&#039;re discussing here seem to embody a distinct separation between development concerns and user concerns. In fact I&#039;d posit that they were invented to insulate users from the complexity of the software development process (by simplifying software installation and management).

There&#039;s definitely a part of me that feels that this is an appropriate design tradeoff. I wonder whether one system can actually meet both sets of needs without being so complex as to be unattractive to one or both audiences.

I think this is a case of having a very fine hammer, and trying to apply it to unsuitable nails. The Debian system&#039;s goal is to produce a coherent installation of OS and applications which is maintained in a simple and consistent way. It does this job well enough that the end result is consumable by casual users (e.g. Ubuntu) as well as experienced system administrators. In contrast, systems like nix and conary seem to serve a much narrower audience.]]></description>
		<content:encoded><![CDATA[<p>The class of package managers we&#8217;re discussing here seem to embody a distinct separation between development concerns and user concerns. In fact I&#8217;d posit that they were invented to insulate users from the complexity of the software development process (by simplifying software installation and management).</p>
<p>There&#8217;s definitely a part of me that feels that this is an appropriate design tradeoff. I wonder whether one system can actually meet both sets of needs without being so complex as to be unattractive to one or both audiences.</p>
<p>I think this is a case of having a very fine hammer, and trying to apply it to unsuitable nails. The Debian system&#8217;s goal is to produce a coherent installation of OS and applications which is maintained in a simple and consistent way. It does this job well enough that the end result is consumable by casual users (e.g. Ubuntu) as well as experienced system administrators. In contrast, systems like nix and conary seem to serve a much narrower audience.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matt Zimmerman</title>
		<link>http://rbtcollins.wordpress.com/2012/08/27/why-platform-specific-package-systems-exist-and-wont-go-away/#comment-1154</link>
		<dc:creator><![CDATA[Matt Zimmerman]]></dc:creator>
		<pubDate>Sun, 09 Sep 2012 16:26:02 +0000</pubDate>
		<guid isPermaLink="false">http://rbtcollins.wordpress.com/?p=315#comment-1154</guid>
		<description><![CDATA[The system you described has emerged in the form of the (modern, application-oriented) web. It insulates users from the concerns of dependency management and versioning entirely. It does not, of course, lead to the development of a strong, vibrant ecosystem for desktop applications on any platform.

I would not argue that this approach is without its shortcomings, but I think it has emerged as a solution to many of the problems described here.]]></description>
		<content:encoded><![CDATA[<p>The system you described has emerged in the form of the (modern, application-oriented) web. It insulates users from the concerns of dependency management and versioning entirely. It does not, of course, lead to the development of a strong, vibrant ecosystem for desktop applications on any platform.</p>
<p>I would not argue that this approach is without its shortcomings, but I think it has emerged as a solution to many of the problems described here.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matt Zimmerman</title>
		<link>http://rbtcollins.wordpress.com/2012/08/27/why-platform-specific-package-systems-exist-and-wont-go-away/#comment-1153</link>
		<dc:creator><![CDATA[Matt Zimmerman]]></dc:creator>
		<pubDate>Sun, 09 Sep 2012 05:35:33 +0000</pubDate>
		<guid isPermaLink="false">http://rbtcollins.wordpress.com/?p=315#comment-1153</guid>
		<description><![CDATA[I definitely agree with your thesis, that the dream of &quot;one package manager to rule them all&quot; is effectively dead. The driving force is more than just tooling: it&#039;s about control and coupling. These platform communities are doing their own release management, and don&#039;t want or need the operating system doing it for them. Language runtimes, and in particular their modules, don&#039;t release on the same schedule as operating systems, nor should they.]]></description>
		<content:encoded><![CDATA[<p>I definitely agree with your thesis, that the dream of &#8220;one package manager to rule them all&#8221; is effectively dead. The driving force is more than just tooling: it&#8217;s about control and coupling. These platform communities are doing their own release management, and don&#8217;t want or need the operating system doing it for them. Language runtimes, and in particular their modules, don&#8217;t release on the same schedule as operating systems, nor should they.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Simon Hibbs</title>
		<link>http://rbtcollins.wordpress.com/2012/08/27/why-platform-specific-package-systems-exist-and-wont-go-away/#comment-993</link>
		<dc:creator><![CDATA[Simon Hibbs]]></dc:creator>
		<pubDate>Wed, 29 Aug 2012 12:29:20 +0000</pubDate>
		<guid isPermaLink="false">http://rbtcollins.wordpress.com/?p=315#comment-993</guid>
		<description><![CDATA[&gt;Decoupling applications from the core as a strategy makes an
&gt;assumption – that the core and applications are partitionable. If they
&gt;are not, then applications and the core will share common elements
&gt;that need to be updated together. Consider, for instance,  a
&gt;Python application. ...

The mistake here is to assume it makes any sense whatsoever for a user, who happens to be a developer, to expect to be able to use system dev tools for userspace development work.

It doesn&#039;t.

The default assumption should be that if a user wants to do development work they should install the dev tools they need as applications, not as system components. Traditionally Un*x systems have included dev tools such as perl and python interpreters and exposed them for the use of users, but this blurs a vital distinction, as the situation you describe shows. This is because developers traditionally have special status in Un*x culture as semi-system level users.

Going forward there needs to be a sharp, clear and rigorously enforced distinction between components that are part of the system and components that are user applications. I might even go so far as to split out the system shell interpreters from user shells and package those as applications. After all, suppose my system is running bash v3 and I want to use bash v4, or zsh, or fish?

All the successful user space platforms (Windows, MacOS X, iOS, Android, etc) make a sharp distinction between system component installation and update management and application installation and update management, and for very good reasons.

Applications should not ever (if at all possible) depend on the presence of optional system level components. Dependency management just shouldn&#039;t be a user application level concern.

I honestly believe this is the major problem holding back Un*x systems from becoming mainstream platforms. Modern Un*x package managers are great, powerful systems with lots of very clever features, but the requirements for the installation and management of third party applications, especially commercial ones, are very different. I firmly believe Un*x will never have a truly strong, vibrant third party desktop app ecosystem until the rpms and debian packages of this world are firmly pushed back into the system maintenance role and a robust system for third party user application management that eliminates dependency management is agreed upon.]]></description>
		<content:encoded><![CDATA[<p>&gt;Decoupling applications from the core as a strategy makes an<br />
&gt;assumption – that the core and applications are partitionable. If they<br />
&gt;are not, then applications and the core will share common elements<br />
&gt;that need to be updated together. Consider, for instance,  a<br />
&gt;Python application. &#8230;</p>
<p>The mistake here is to assume it makes any sense whatsoever for a user, who happens to be a developer, to expect to be able to use system dev tools for userspace development work.</p>
<p>It doesn&#8217;t.</p>
<p>The default assumption should be that if a user wants to do development work they should install the dev tools they need as applications, not as system components. Traditionally Un*x systems have included dev tools such as perl and python interpreters and exposed them for the use of users, but this blurs a vital distinction, as the situation you describe shows. This is because developers traditionally have special status in Un*x culture as semi-system level users.</p>
<p>Going forward there needs to be a sharp, clear and rigorously enforced distinction between components that are part of the system and components that are user applications. I might even go so far as to split out the system shell interpreters from user shells and package those as applications. After all, suppose my system is running bash v3 and I want to use bash v4, or zsh, or fish?</p>
<p>All the successful user space platforms (Windows, MacOS X, iOS, Android, etc) make a sharp distinction between system component installation and update management and application installation and update management, and for very good reasons.</p>
<p>Applications should not ever (if at all possible) depend on the presence of optional system level components. Dependency management just shouldn&#8217;t be a user application level concern.</p>
<p>I honestly believe this is the major problem holding back Un*x systems from becoming mainstream platforms. Modern Un*x package managers are great, powerful systems with lots of very clever features, but the requirements for the installation and management of third party applications, especially commercial ones, are very different. I firmly believe Un*x will never have a truly strong, vibrant third party desktop app ecosystem until the rpms and debian packages of this world are firmly pushed back into the system maintenance role and a robust system for third party user application management that eliminates dependency management is agreed upon.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: rbtcollins</title>
		<link>http://rbtcollins.wordpress.com/2012/08/27/why-platform-specific-package-systems-exist-and-wont-go-away/#comment-955</link>
		<dc:creator><![CDATA[rbtcollins]]></dc:creator>
		<pubDate>Tue, 28 Aug 2012 07:42:46 +0000</pubDate>
		<guid isPermaLink="false">http://rbtcollins.wordpress.com/?p=315#comment-955</guid>
		<description><![CDATA[You understand fine. There are three subtleties here. Firstly, in many non-C/C++ languages there is usually no concept of ABI, its all API. Specifically Python, ruby, and javascript. In those languages, its not (currently, cleanly) possible to concurrently install multiple versions of a library (or when it is possible for them to be installed, its not possible for the concurrent versions to be consumed from one process (each process limited to one version) - and that causes problems with diamond dependency graphs with incompatible version constraints for compatibility. Secondly, for languages that do have an ABI/API split (e.g. via the soname implementation), upstreams are often poor at maintaining complete binary compatibility - this means that *nix distributors have to choose between manually updating the soname themselves, or using finer grained dependency rules to prevent breakage between different consuming applications, and it means you need two versions of that library with the &lt;strong&gt;same&lt;/strong&gt; soname if you want two applications installed (which is impossible). Relatedly, if the distribution does choose to update the soname itself, it becomes incompatible with other distributions, due to exactly the sort of version mismatch skew I described.]]></description>
		<content:encoded><![CDATA[<p>You understand fine. There are three subtleties here. Firstly, in many non-C/C++ languages there is usually no concept of ABI, its all API. Specifically Python, ruby, and javascript. In those languages, its not (currently, cleanly) possible to concurrently install multiple versions of a library (or when it is possible for them to be installed, its not possible for the concurrent versions to be consumed from one process (each process limited to one version) &#8211; and that causes problems with diamond dependency graphs with incompatible version constraints for compatibility. Secondly, for languages that do have an ABI/API split (e.g. via the soname implementation), upstreams are often poor at maintaining complete binary compatibility &#8211; this means that *nix distributors have to choose between manually updating the soname themselves, or using finer grained dependency rules to prevent breakage between different consuming applications, and it means you need two versions of that library with the <strong>same</strong> soname if you want two applications installed (which is impossible). Relatedly, if the distribution does choose to update the soname itself, it becomes incompatible with other distributions, due to exactly the sort of version mismatch skew I described.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan</title>
		<link>http://rbtcollins.wordpress.com/2012/08/27/why-platform-specific-package-systems-exist-and-wont-go-away/#comment-954</link>
		<dc:creator><![CDATA[Jonathan]]></dc:creator>
		<pubDate>Tue, 28 Aug 2012 07:33:48 +0000</pubDate>
		<guid isPermaLink="false">http://rbtcollins.wordpress.com/?p=315#comment-954</guid>
		<description><![CDATA[&gt; (5) is quite the opposite of what a distro package manager aims to do.

Most (binary, implemented in C or C++) libraries are packaged in distros exactly that way to support run-time dependencies on a specific ABI. Am I misunderstanding?]]></description>
		<content:encoded><![CDATA[<p>&gt; (5) is quite the opposite of what a distro package manager aims to do.</p>
<p>Most (binary, implemented in C or C++) libraries are packaged in distros exactly that way to support run-time dependencies on a specific ABI. Am I misunderstanding?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: rbtcollins</title>
		<link>http://rbtcollins.wordpress.com/2012/08/27/why-platform-specific-package-systems-exist-and-wont-go-away/#comment-935</link>
		<dc:creator><![CDATA[rbtcollins]]></dc:creator>
		<pubDate>Mon, 27 Aug 2012 19:02:50 +0000</pubDate>
		<guid isPermaLink="false">http://rbtcollins.wordpress.com/?p=315#comment-935</guid>
		<description><![CDATA[So nix is indeed very interesting. And yes, the single-library-constraint is a big part of this, its that that makes packaging Python apps (for instance) with dpkg so painful compared to installing via virtualenv. Sadly, I realise I didn&#039;t explicitly touch on that at all in my post - so thank you *very* much for bringing it up. Felipe touches on it too in an earlier comment - the global vs local split in npm.

I&#039;d say that this is a primary reason why local installs are attractive to end users even when they are using a mature system such as Ubuntu with thousands of packaged libraries - they get greater functionality with less failure rates than when using dpkg packages.]]></description>
		<content:encoded><![CDATA[<p>So nix is indeed very interesting. And yes, the single-library-constraint is a big part of this, its that that makes packaging Python apps (for instance) with dpkg so painful compared to installing via virtualenv. Sadly, I realise I didn&#8217;t explicitly touch on that at all in my post &#8211; so thank you *very* much for bringing it up. Felipe touches on it too in an earlier comment &#8211; the global vs local split in npm.</p>
<p>I&#8217;d say that this is a primary reason why local installs are attractive to end users even when they are using a mature system such as Ubuntu with thousands of packaged libraries &#8211; they get greater functionality with less failure rates than when using dpkg packages.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
