<?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>Trausch’s Little Home &#187; GPLv3</title>
	<atom:link href="http://mike.trausch.us/blog/category/gplv3/feed/" rel="self" type="application/rss+xml" />
	<link>http://mike.trausch.us/blog</link>
	<description>My writing on life, computers, and technology</description>
	<lastBuildDate>Wed, 09 Feb 2011 18:16:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Can you force freedom and it still be freedom?</title>
		<link>http://mike.trausch.us/blog/2010/01/19/can-you-force-freedom-and-it-still-be-freedom/</link>
		<comments>http://mike.trausch.us/blog/2010/01/19/can-you-force-freedom-and-it-still-be-freedom/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 05:12:57 +0000</pubDate>
		<dc:creator>Michael Trausch</dc:creator>
				<category><![CDATA[FLOSS]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[GPLv3]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[computing]]></category>
		<category><![CDATA[freedom]]></category>
		<category><![CDATA[free software]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[wtf‽]]></category>

		<guid isPermaLink="false">http://mike.trausch.us/blog/?p=581</guid>
		<description><![CDATA[So back on this topic again today.  I am going to take a look at a few different statements here in this post, and then I&#8217;m going to go over them and explain why these statements are or are not correct.  Should you wish to verify any of my information, you&#8217;re more than welcome to [...]]]></description>
			<content:encoded><![CDATA[<p>So back on this topic again today.  I am going to take a look at a few different statements here in this post, and then I&#8217;m going to go over them and explain why these statements are or are not correct.  Should you wish to verify any of my information, you&#8217;re more than welcome to do so—just make sure you actually know what you&#8217;re talking about before you call me “wrong” on this one, or I will absolutely ignore you.  I have other—and more important—things to do than put up with <a href="http://en.wikipedia.org/wiki/Troll_(internet)">trolls</a> who cannot do basic research (of course, this means that I expect that you know how to use <a href="http://www.google.com/">Google</a> and <a href="http://en.wikipedia.org/">Wikipedia</a> and will do so before writing your responses, but hey, I could be expecting too much).</p>
<h3>“You can have <a href="http://en.wikipedia.org/wiki/Freedom_(philosophy)">freedom</a> without <a href="http://en.wikipedia.org/wiki/Choice">choice</a>.”</h3>
<p>That someone could even come up with this one is just amazing to me. Note that this is not an exact quote, but it is the summary of Friday&#8217;s topic. For example, this summary comes from the idea that <a href="http://en.wikipedia.org/wiki/Canonical_Ltd.">Canonical</a> is bad for <a href="http://ubuntuforums.org/showthread.php?t=1381221">considering making mainstream non-free software available for Ubuntu based on user preferences</a>. It does not matter who came up with it, of course, but the important thing is that it be called what it is: patently absurd. The ability to choose is a major part of what freedom—or <a href="http://en.wikipedia.org/wiki/Liberty">liberty</a>—is. If you cannot make a choice on a matter, then by definition you do not have freedom in the context of that matter. It is quite simple and self-explanatory. Canonical is seeking to <em>increase</em> freedom here, not take it away. Some people actually <em>want</em> to use <a href="http://en.wikipedia.org/wiki/Proprietary_software">non-free software</a>; others may not want to use it, but aren&#8217;t aware of alternatives. The latter group of people should have our focus with regard to education (but then we should <em>let them make the choice for themselves</em>!).</p>
<p>Note that I am not one of these people: I would rather use <a href="http://en.wikipedia.org/wiki/Free_software">free software</a> because of the liberty it gives me that I have come to expect over the years. But I am <em>not</em> going to tell someone else that they are <em>harming</em> me because they would rather use non-free software that is familiar to them. All I can do is show them that there are free alternatives that exist. I cannot—and I will not—make them use it or make them feel bad for not using it. I may not like proprietary software for a variety of reasons, but I will defend people&#8217;s right to use it just as I will defend even a <a href="http://en.wikipedia.org/wiki/Stupidity">stupid</a> person&#8217;s right to spew nonsense by way of speech or written word. In other words, “<a href="http://en.wikiquote.org/wiki/Evelyn_Beatrice_Hall">I disapprove of what you say, but I will defend to the death your right to say it</a>,” or perhaps more appropriately, “I [may] disapprove of what [software you run], but I will defend to the death your right to [run] it.” Even I use a <a href="http://en.wikipedia.org/wiki/Fglrx">package</a> or <a href="http://en.wikipedia.org/wiki/NVIDIA#Documentation_and_drivers">two</a> that is proprietary in nature (though it is looking like I will not have to do so for much longer, given the efforts to replace these packages with equivalent free software).</p>
<p>It is worth it to note that by adding non-free software to <a href="http://www.ubuntu.com">Ubuntu</a>, the free software that is already there does not change. The mere existence of non-free software within its repositories does not make Ubuntu somehow bad or evil. It would add choices that do not currently exist, and that one such as myself or yourself can certainly opt out of—I most likely would, for the most part, as I do not need to depend on non-free application software, and I only use non-free drivers if I have hardware where anything else is nonviable (and only until there are functional free software drivers). Did you know that Ubuntu has <a href="https://lists.ubuntu.com/archives/gobuntu-devel/2008-April/000651.html">an option in the installer to only install free software</a>? Can you say that for your favorite desktop <a href="http://en.wikipedia.org/wiki/Operating_system">operating system</a> distribution, whatever that might be?</p>
<p>The response to this idea, then, is that without choice, there is very little—if any, really—freedom. The thing that gives us freedom with free software is that we are able to to download the source code, to review/audit it, to change it to fit our needs or fix a problem, and to share those changes. If we cannot do those things, then it is not free software; see the <a href="http://www.gnu.org/philosophy/free-sw.html">essential freedoms</a>. But non-free software inside a distribution is not something that should not cause you great consternation even if you are among the most dedicated of freedom advocates, for if you are a true advocate of <em>freedom</em> then by definition you <em>must</em> respect a computer user&#8217;s freedom of choice. Remember that we choose to run free software because of the benefits it brings to us; we choose to improve upon free software for much the same reason. Eventually, I think that free software will <a href="http://en.wikipedia.org/wiki/History_of_free_software">once again</a> become the norm for computer software, on <a href="http://en.wiktionary.org/wiki/merit">merit</a> alone, for no other reason than the development, release, and usage of free software is a highly practical solution for many things ranging from <a href="http://en.wikipedia.org/wiki/Library_(computing)">library code</a> to <a href="http://en.wikipedia.org/wiki/Application_software">application software</a> to complete operating systems. It is worth noting that <a href="http://en.wikipedia.org/wiki/Free_content">free content</a>—which is similar in concept to free software, which itself is merely a specific application of freedom itself—also appears to making major headway towards becoming mainstream; it is doing so more quickly than free software is, but there is every reason to believe that free software will follow, for it is already.</p>
<h4>An Example</h4>
<p>Imagine that you are in a store, because you need some milk for dinner some night. You always get 1 gallon of 2%. But, the store has stopped carrying it, because more people buy whole milk and they were throwing away the 2% milk—demand was low, supply got to be too high, so they just stopped carrying it altogether. You leave the store and head to the next in the same town and you find the same thing there. You have a choice of stores to go to, and you have made the choice to go buy yourself some milk. But there is only one type of milk. You no longer have the choice to buy 2% where you are, and so effectively, your freedom to buy it has been taken away. (Of course, <a href="http://www.thriftyfun.com/tf73187289.tip.html">you can make 2% milk</a> <a href="http://answers.yahoo.com/question/index?qid=20090809170811AAT0NO3">from whole milk</a> (and <a href="http://wiki.answers.com/Q/How_much_butter_added_to_skim_milk_will_make_whole_milk">make whole from 2% even</a>, or <a href="http://www.cookingforengineers.com/article/113/Making-Butter">even butter</a>), but I suspect just as many people want to do that as want to write their own free software that they <em>demand</em> simply must exist, but doesn&#8217;t yet).</p>
<p>Now, the point here is that there is more than one freedom in play: the freedom of the store to stock (or not stock) various products, which affects your freedom as a <a href="http://en.wikipedia.org/wiki/Consumer">consumer</a> to buy the product you want. In the case of software, and choice, if the software you are running gives you all the choices you want, <em>then it fits your needs</em>. If it does <em>not</em>, then you are not going to be able to use it the way you want. Now you have two choices: you can do the work that it would take to make your desired choice possible, or you can use another system (free or proprietary) that will give you the choice that you want. Many people will choose the latter, especially if they are non-programmers. Though I&#8217;ve seen programmers also choose to use proprietary systems for something that they could themselves implement. That is their choice, of course. After all, if you really wanted 2% milk, you would have the same choice: make it yourself, or drive to the next town over which might have it available for you (assuming that there is some in stock and that the stores neighboring towns have not also decided to stop stocking 2% milk).</p>
<h4>Ubuntu One: The Reason Behind This</h4>
<p>This discussion came up because someone on <a href="http://identi.ca">identi.ca</a> made the claim that Canonical is forcing proprietary software into Ubuntu by way of the <a href="http://en.wikipedia.org/wiki/Ubuntu_One">Ubuntu One</a> client software. I cannot even begin to state just how woefully incorrect this point of view is. First off: the <em>only</em> thing added to Ubuntu is the ability to connect to Ubuntu One, and the software that was added to Ubuntu do to that is licensed under Version 3 of the <a href="http://en.wikipedia.org/wiki/GPL"><strong>GNU General Public License</strong></a>. The claim made in response to that was that Ubuntu One is only <em>partly</em> free software, because the server is somewhere else and has not been released. As we shall soon see, that claim is nonsensical—it depends on an extremely naïve view of how software actually works in order to make sense, really.</p>
<p>So, first things first: Ubuntu One, which was added to Ubuntu 9.04, is <em>not</em> proprietary software. The proof rests in the fact that it GNU GPL v3.0, and we know <em>a priori</em> that software licensed under the GPL is free software, so we do not need to go further on that point.</p>
<p>Now, because the software in question added to Ubuntu is free software, we can read it. The essential freedoms granted to us by truly free software ensure this, and the GPLv3 is indeed a truly free software license because it grants those freedoms. Because we are able to study the software and see how it communicates with the server. Once we know how to communicate with the server, we can write that up and design a server that communicates exactly the same way. From there, it is just a matter of patching the sync dæmon that is in Ubuntu to talk to an arbitrary, Ubuntu One compatible server. To determine how to do that, one need only read the <a href="http://python.org/">Python</a> source code contained in the <code>python-ubuntuone-storageprotocol</code> and <code>python-ubuntuone-client</code> packages. If you do not know Python well, you might expect to spend several days doing that, but if it bothers you so tremendously that you are going to practically start a flame war over it, you may find it worth it to do so.</p>
<p>Of course, the other side to that is this: if you really want Ubuntu One to talk to an arbitrary server that runs free software, and you want that free software to be written, you can fund the effort to write the free software. Approach a proficient developer somewhere out there on the Internet and ask them how much they&#8217;d charge to write a server for Ubuntu One. You might not be able to afford the fund the project entirely, but if you get a number from someone, you can start a coordinated effort to raise the funds. If you are lucky enough to be able to fund the whole project, then do so: it is but one way that you can help provide something back to the community. This does not apply to just an implementation of the Ubuntu One protocol, it could apply to anything that you see that is missing and needs to be created. Or you could spend time learning what you need to learn to pick up the project yourself, if you care for the project that deeply. The most important attribute that a person can have in order to get started with development is motivation—<a href="http://jameswestby.net/weblog">James Westby</a> reminded me of this a couple of years ago, something which I had forgotten.</p>
<h4>Perceptions: Another (Possible) Reason</h4>
<p>It was suggested to me that another possible reason that people would object to having non-free software inside an operating system distribution such as Ubuntu is that they are afraid that the proprietary options have higher quality, or offer superior features, or provide functionality that is not offered by any existing free software. Thus, they have this perception that by adding such non-free software into a distribution like Ubuntu, people will automatically use and prefer it over free software. This simply is not the case. Sure, some people will use iTunes if it is available on Ubuntu. Maybe many people would. I <em>might</em> even do so, if it were legally available for me to use that way <em>and</em> if it supports the purchase of <a href="http://en.wikipedia.org/wiki/Digital_rights_management">DRM</a>-free music. However, if there were a free software client for the iTunes store, I&#8217;d much prefer to use that. To my knowledge, however, there is no such thing that exists.</p>
<p>If there is not a free software alternative for a non-free component inside a distribution of software, if you are offended by that, then by all means, <em>create a free software alternative for it</em>! As mentioned above, you can start on such a project&#8217;s development, or you can look for people that would be interested in volunteering for it and coordinating them, or you can put up funds to pay developers to implement it. If you have money, this can be the easy part: find someone who is willing to accept payment for the service of implementing the free software alternative for whatever it is that someone else has funded, wrote, and released as proprietary software. It is not like free software is developed without cost (and if you think that it is, then you seriously do not understand what free software is or anything about the world of free software and have no standing to be getting mad when a company spends money writing software and does not release it as free software. You can try to write companies that write such software and ask them if they will give you any form of written specifications for the software, or an interface definition, or something along those lines. The worst thing that could happen is that you will be told “no”. And do so <em>nicely</em>, or they&#8217;ll be more inclined to tell you “bugger off” instead of simply “no”.</p>
<h3>“Allowing users to choose proprietary software is anti-freedom.”</h3>
<p>Nothing could be farther from the truth; it is the same, in fact, as the above statement that one can have freedom without choice. For example, if Ubuntu adopts iTunes and makes it so that you can “sudo aptitude install itunes” in the future, that is <em><strong>not</strong></em> a bad thing! How <em>can</em> it be—It contributes to the ability to choose, and thereby <em>contributes to the freedom of the end-user</em>. If you are a die-hard free software supporter and do not want to run non-free software on your system, then there is a very simple solution for you: <em><strong>simply don&#8217;t install it</strong></em>.  That <strong>is</strong> a valid solution to the problem. There are tools already available that can be run as a <a href="http://en.wikipedia.org/wiki/Cron">cron job</a> and report on any non-free software that you might have accidentally (or even intentionally) installed. If you are worried about additional non-free software getting into Ubuntu, then help enhance those tools. Or write a <a href="http://en.wikipedia.org/wiki/GUI">GUI</a> <a href="http://en.wikipedia.org/wiki/Front_end">front-end</a> for something like the <a href="http://en.wikipedia.org/wiki/Vrms">virtual RMS</a> program and work to get that included into Ubuntu as well, perhaps something that can run every time you login to the computer, or that runs as a persistent process that watches the package database on your distribution of choice for updates and then checks to see if newly installed software is non-free and alerts the user. Of course, it&#8217;d be most effective as an opt-in system, and not an <a href="http://en.wikipedia.org/wiki/Opt-out">opt-out</a> one where it would just be annoying.</p>
<p>There is no way, then, that freedom is actually reduced in this way when another choice becomes available. If iTunes were to be included in the repositories (and I suspect it would be, <a href="http://www.ubuntu.com/community/ubuntustory/components">like the restricted, universe and multiverse repositories</a>, a separate opt-in repository; perhaps simply “proprietary” would be fitting), this does not reduce your ability to choose to run a free software media player and manager like <a href="http://banshee-project.org/">Banshee</a>, or <a href="http://projects.gnome.org/rhythmbox/">Rhythmbox</a>, or even <a href="http://amarok.kde.org/">AmaroK</a> if you are so inclined to run that KDE stuff.</p>
<p>Once upon a time, <a href="http://en.wikipedia.org/wiki/Fear,_uncertainty_and_doubt">FUD (fear, uncertainty, and doubt)</a> was the tool of Microsoft. We (the free software world) <em>completely</em> hated it when Microsoft would put out FUD, because we would then have to fight that FUD by way of explanation and demonstration. Well, some time ago, a subgroup of the free software world decided to start using FUD themselves—it was done with <a href="http://en.wikipedia.org/wiki/Mono_(software)">Mono</a>, and it is being done now with just a <em>survey</em> asking people what sort of software they would like to see in Ubuntu. Now, those of us who are left who are advocates of liberty—both personal and societal—are stuck potentially fighting <strong><em>two</em></strong> battles. One with Microsoft&#8217;s FUD—such as the constant notion that you have to pay for software—and one with the &#8220;free software evangelists&#8221; FUD, who have even gone so far as to say that people should not use certain types of free software (the one who calls himself “The Open Sourcer” <a href="http://www.theopensourcerer.com/tag/mono/">even still today tells people to remove certain truly free software from their systems</a>). The truth is somewhere in the middle, between these two ends of the spectrum.</p>
<h3>Conclusion</h3>
<p>Back to the point at hand: to say that giving a person a choice is a constraint on that person&#8217;s freedom, that is <a href="http://en.wikipedia.org/wiki/Doublespeak">doublespeak</a>.; it is saying that “slavery is freedom,” albeit to a lesser degree than that very melodramatic extreme—it simply does not make sense. The concept just does not make sense unless the words that are used to express the concept are dramatically redefined to mean things vastly different from what standard English dictionaries define them to be. The only reason that one has to try to convince someone that additional choice is a constraint on freedom is to try to convince people of things that are not true; to install fear, uncertainty, and doubt into people. This is the sort of behavior that—no matter <em><strong>what</strong></em> community it originates from—is completely immoral, unethical, and absolutely unacceptable. It&#8217;s dishonest, and for those of you who know me personally, you know what I think of dishonesty.</p>
]]></content:encoded>
			<wfw:commentRss>http://mike.trausch.us/blog/2010/01/19/can-you-force-freedom-and-it-still-be-freedom/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>On Replacing AllTray &amp; Other Docking Software</title>
		<link>http://mike.trausch.us/blog/2008/10/21/on-replacing-alltray-other-docking-software/</link>
		<comments>http://mike.trausch.us/blog/2008/10/21/on-replacing-alltray-other-docking-software/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 19:27:26 +0000</pubDate>
		<dc:creator>Michael Trausch</dc:creator>
				<category><![CDATA[FLOSS]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[GPLv3]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[computing]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[AllTray]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.trausch.us/?p=432</guid>
		<description><![CDATA[This post is a bit of a “brain dump” of sorts for some thoughts that I have as to replacing AllTray with a more versatile, powerful, and robust tool to handle various needs of users when it comes to taking applications and docking them to the system tray. Why? I&#8217;ve used AllTray for a long [...]]]></description>
			<content:encoded><![CDATA[<p>This post is a bit of a “brain dump” of sorts for some thoughts that I have as to replacing AllTray with a more versatile, powerful, and robust tool to handle various needs of users when it comes to taking applications and docking them to the system tray.</p>
<h3>Why?</h3>
<p>I&#8217;ve used AllTray for a long time.  It is one of those pieces of software that performs a useful function, but you have to know its quirks to make it do what you want quite often, and you have to work around some of the things that it does for it to retain that usefulness.  Users shouldn&#8217;t have to do that—they should just be able to start using a program or utility and have it work properly.  Also, utilities should be (reasonably) independent of the environment that they run within, which AllTray isn&#8217;t.  And, good utilities should integrate with the system pretty well, which AllTray does not, since it carries a hard dependency on GDK/GTK.  (Kdocker is an alternative piece of software, and while I don&#8217;t know how well it works compared to AllTray, I know that it is bound to Qt, which is just as bad.)</p>
<p>The license will most likely be GPLv3, since nothing will actually link to it and it&#8217;s not a library.  If there is a library component, it will be LGPLv3.</p>
<h3>The actual &#8220;braindump&#8221;</h3>
<p>The actual *docking* part isn&#8217;t terribly hard, it would seem.  With GTK+ it can be done in only a few lines of code (especially in C#).  However, C# wouldn&#8217;t be the language to use for the this tool, because of the dependency on Mono.  My thinking is that the proper language to use would be C itself.  It makes me think of how easy everything would be if only the desktop environment and all its software were already written in managed code&#8230; the effective cost of using C# would be significantly less than it is already.</p>
<p>Using C as the language isn&#8217;t that big a deal to me.  What <em>is</em> a big deal to me is that the application be well-integrated and well-behaved.  For example, AllTray depends on GTK for some of its tasks, and uses a custom (ugly, IMHO) widget for displaying its title when you over over it in the system tray.  There&#8217;s another program out there, KDocker, that would appear to be slightly more featureful than AllTray, but it carries with it a dependency on Qt, which I don&#8217;t like.  Ideally, the core for such a docking utility should be able to have various back-ends that serve the purpose of integration with the system, with a single back-end that would apply without dependencies on anything else for the rare scenario where neither GTK+ nor Qt are available.</p>
<p>What would this thing be required to do?</p>
<ul>
<li>Dock any arbitrary application to the system tray, not just a single window from the application. (Using the <a href="http://standards.freedesktop.org/systemtray-spec/systemtray-spec-latest.html" title="System Tray Protocol Specification">System Tray Protocol Specification</a>)</li>
<li>Run in a single instance, managing multiple applications within that instance if necessary.</li>
<li>Provide <a href="http://en.wikipedia.org/wiki/Session_management" title="Wikipedia: Session management">session management</a> for those who use it, and act as a session manager for applications that are run underneath it that support session management.</li>
<li>Be able to use something like <code>inotify</code> to be able to show an indication of when the application&#8217;s title for its windows change.</li>
<li>Use a single icon for the application, with a window list if the application carries more than a single window.</li>
<li>Use individual backends which provide a native look and feel depending on the desktop environment currently in use.</li>
<li>Use the application’s icon to represent the application in the system tray.</li>
<li>Support blinking the icon when the application decides to do something like present a modal dialog box or something (if this is even possible, that much I am not quite sure of).</li>
<li>Detect the desktop environment currently in use and (if possible) load a backend to integrate with it.</li>
<li>Carry a dependency on <a href="http://en.wikipedia.org/wiki/GLib" title="Wikipedia: GLib">GLib</a> so as to make implementing it quicker and less error-prone.</li>
<li>NOT carry any hard dependencies on any widget libraries like <a href="http://en.wikipedia.org/wiki/GTK+" title="Wikipedia: GTK+">GTK+</a> or <a href="http://en.wikipedia.org/wiki/Qt_(toolkit)" title="Wikipedia: Qt (toolkit)">Qt</a>.</li>
<li>Return an error to the user if there is no running system tray, and there isn&#8217;t one after some sort of timeout (say, when starting the desktop environment, there may not be a system tray right away).  (I don&#8217;t think that sort of situation would be commonplace, but it&#8217;s not really the job of this program to create a system tray if one doesn&#8217;t exist, since this is the job of the desktop environment.)</li>
</ul>
<p>The backends would not have any specific configuration items (the entire configuration would be housed somewhere like <code>${HOME}/.config/docker</code>, for example).  There probably ought to be a backend entrypoint that would show a dialog for configuration, but I haven&#8217;t really figured out if that&#8217;d be the case yet.  The docker should probably do all of its configuration by way of the command line for each invocation, which is suitable for use as a desktop shortcut or panel launcher.</p>
<p>This approach requires that each individual desktop environment have its own backend, which might become a bit of a pain for supporting a great number of desktop environments, but the upshot of that is that the application then feels native no matter what environment the user is using.  Obviously support for GNOME and KDE would happen, and most everything else would depend on someone with programming experience for various environments to implement a backend for it.</p>
<p>The backend doesn&#8217;t handle, say, docking, since there&#8217;s a standard for that already.  It would handle things like displaying the tip when hovered over or displaying a menu when right-clicked.  So, the job that each backend would do would be pretty lightweight.  And as much as possible should be handled in the core, with the backend consisting of just enough &#8220;hooks&#8221; into the target system to be able to provide a useful interface.</p>
<p>The way that this would have to work, using C as the programming language, would be that the core would have to use <code>dlopen()</code> and friends to load the backend and then use the entrypoints that the backend provides.  Since <code>dlopen</code>, <code>dlclose</code>, <code>dlsym</code>, and <code>dlerror</code> are defined by POSIX.1-2001, support for those should be in every reasonably modern Unix-like system that supports at least a subset of POSIX.  This of course eliminates Windows, but I am not terribly worried about that since there are probably other Windows-only utilities that serve this purpose.</p>
<p>The primary goal, then, is to replace other DE-dependent and toolkit-dependent dockers with a utility that carries the goal to be universally useful and highly robust.  The aim of this goal is to replace AllTray entirely in (at the very least) Ubuntu, and hopefully be seen as useful in other distributions as well.</p>
<h3>I&#8217;ll need some help&#8230;</h3>
<p>This is the part where it&#8217;ll get interesting.  I&#8217;ll need some help in actually doing this, in many areas.</p>
<p>For the moment, where I&#8217;ll need help (be that from Google, or from people in-the-know that happen upon this post) is to find all of the documentation that I&#8217;ll need to understand how to implement the software.  I can use software that already exists to try to learn how the underlying system works, to a degree anyway.  But some of the software doesn&#8217;t handle various situations correctly (or I don&#8217;t have a way to see if it does) and so studying them would be less than useful for everything I am trying to do.  Namely, the things I need to find out yet are:</p>
<ul>
<li>How to run a program in such a way as to be able to reliably know what windows belong to the program and be able to dock them.  I <strong>suspect</strong> that it&#8217;d involve using <code>LD_PRELOAD</code> and some monitoring trickery, but I would hope that there is some sort of API to do this already.  Also, need to know how to manage the application itself; say it continues running but without any windows, the tray icon should obviously disappear while it&#8217;s running like that, until it has windows to manage again.</li>
<li>How to perform session management and be a session manager for subordinate programs.  (I might be able to study the source for KDocker to learn the answer to that, though I am not 100% certain yet of that.)  I also have a paper to read yet on the subject that may have all the information that I am looking for, though I am not certain there yet, either.</li>
<li>How to reliably detect the running desktop environment without resorting to ugly kludges and ad-hoc trickery.</li>
<li>How to work independent of the currently-running window manager and operate reliably for any standards-compliant WM that is running, without having to special-case for various types of software or various types of window managers.</li>
</ul>
<p>I suspect that there is useful documentation out there for most (if not all) of those things for X11 and other relevant points.  I just haven&#8217;t found what I am looking for yet for all of it.  Standards documents and system documentation are useful things to find, and maybe an example or two of source code on how to do it as well, are what I am looking for, so that I can try to understand these things better.</p>
<p>At some point down the road, I&#8217;ll need help with getting the backends written when they have an API to conform to.  I can, in all probability, write a GTK+ backend that will work for XFCE and GNOME since I use GNOME.  However, I don&#8217;t use KDE or anything that runs on top of Qt, so I will definitely need help from someone that is familiar with writing software for Qt to get a Qt backend written.  If XFCE has any sort of non-standard special UI guidelines that are incompatible with GNOME, then I&#8217;ll need some help there, too.  Any other non-GNOME or non-KDE environments (such as <a href="http://en.wikipedia.org/wiki/GNUstep" title="Wikipedia: GNUstep">GNUstep</a>, if it supports it anyway) that support the <a href="http://standards.freedesktop.org/systemtray-spec/systemtray-spec-latest.html" title="System Tray Protocol Specification">System Tray Protocol Specification</a> will need backends written for them by people that are able to do so.</p>
]]></content:encoded>
			<wfw:commentRss>http://mike.trausch.us/blog/2008/10/21/on-replacing-alltray-other-docking-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Want to play with Mono 2.0?  So do I&#8230;</title>
		<link>http://mike.trausch.us/blog/2008/10/13/want-to-play-with-mono-20-so-do-i/</link>
		<comments>http://mike.trausch.us/blog/2008/10/13/want-to-play-with-mono-20-so-do-i/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 21:47:07 +0000</pubDate>
		<dc:creator>Michael Trausch</dc:creator>
				<category><![CDATA[GPLv3]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[computing]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software testing]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[mono 2.0]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.trausch.us/?p=423</guid>
		<description><![CDATA[Alrighty, so I wanted to play with Mono 2.0. I thought about packaging it up, but the packaging for Mono in Debian and Ubuntu is extremely complex, and would have taken me a lot of time that I simply don&#8217;t have. So, instead, I wrote a BASH script that pulls Mono 2.0 and friends from [...]]]></description>
			<content:encoded><![CDATA[<p>Alrighty, so I wanted to play with Mono 2.0.  I thought about packaging it up, but the packaging for Mono in Debian and Ubuntu is <em>extremely</em> complex, and would have taken me a lot of time that I simply don&#8217;t have.  So, instead, I wrote a BASH script that pulls Mono 2.0 and friends from the Internet, builds it, and installs it in ${HOME}/opt on your system.  The way it does this is based on <a href="http://www.mono-project.com/Parallel_Mono_Environments">the Parallel Mono Environments</a> page on the Mono Web site.  In the hope that this script will be useful on more than just Ubuntu, it <strong>DOES NOT</strong> try to pull in build-dependencies from the system.  If you&#8217;re using Ubuntu (and this will probably work on Debian, too), you can pull the build-dependencies pretty easily:</p>
<pre>$ sudo apt-get build-dep libgtksourceview2.0-cil \
 libgecko2.0-cil libgtk2.0-cil libgnome2.0-cil mono \
 libgluezilla</pre>
<p>The usage screen for the script:</p>
<pre>Mono 2.0 Home Directory Installer

Copyright (c) 2008 M. Trausch &lt;mike@trausch.us&gt;
License: GPLv3

Total download: ~206 MiB, total installed size: ~161 MiB.
Download &#038; build takes ~35 minutes on an AMD Phenom 9500 Quad-Core CPU w/ 8Mbps
downstream Internet connection (and happy servers, of course).

Logs are output to '/tmp/mono2-build.3044/log'.

usage: install-mono2.sh [options]

Available options:
  -s PKG
  --skip PKG	Skip building package PKG (one of libgdiplus, mono, mono-basic,
		gtk-sharp, gnome-sharp, gnome-desktop-sharp, gluezilla,
		monodoc, mono-tools, mono-addins, gecko-sharp,
		gtksourceview-sharp, heap-buddy, nant, monodevelop).  May
		be specified multiple times.

  -d
  --download-only
		Only download the packages, do not install them.

  -r
  --monodevelop-revision
		Specify which SVN revision of MonoDevelop trunk to install.
		Defaults to SVN HEAD.

  -S
  --skip-download
		Skip the download (if you're rebuilding, use this to
		save bandwidth.

  -m
  --monodevelop	Download, build, and install MonoDevelop only.  ONLY USEFUL
		FOR UPDATING MONODEVELOP AFTER YOU'VE RUN THIS SCRIPT TO
		INSTALL MONO 2.0.

  -1
  --single-cpu	Use ONLY single CPU/core for building.  Use this if you have
		trouble building and think it might be related to 'make -j'.</pre>
<p>Now, when this script runs, it will download the Mono files (and MonoDevelop from SVN) into <code>/tmp/monosrc</code>.  It will do the build in <code>/tmp/mono2-build.XXXXX</code> where <code>XXXXX</code> is the process ID number of the <code>install-mono2.sh</code> script.  When you&#8217;re finished and happy with the installation, you can safely remove those directories:</p>
<pre>$ rm -Rf /tmp/mono2-build.* /tmp/monosrc</pre>
<p><strong>If you want to track MonoDevelop within SVN</strong>, then it is better to <em>not</em> delete <code>/tmp/monosrc</code>, because the script uses <code>svn</code> to pull from the MonoDevelop Subversion repository.  This means that it can, if the directory already exists, save you bandwidth by only pulling a delta from the revision that you have and the current HEAD revision.  The astute probably noticed that you can select a revision explicitly as well.  I am currently using r115695, and have used it for a grand total of 20 minutes (and debugging, as best as I can tell, works quite wonderfully in it, but it <em>is</em> a work-in-progress, coming directly from the development mainline).  In short, the MonoDevelop is great for toying with but not for production use.  I may release a version of this script that lets you choose between the latest stable released version of MonoDevelop and an SVN revision, but I haven&#8217;t gotten there yet because I wanted to play with the SVN version (which uses features in Mono 2.0&#8230; that was the whole point of me wanting to play with Mono 2.0, actually).</p>
<p>In any case, the script is available for download <a href='http://www.trausch.us/wp-content/uploads/install-mono2.sh'>here from my Web site.</a></p>
<p>A few words about the script:  <strong><em>This script is released under the terms of the <a href="http://www.gnu.org/licenses/gpl-3.0.html">GNU General Public License, Version 3</a>.  It is version 3 ONLY.  There is NO SUPPORT for this software; I wrote it for myself, and it may change or it may stagnate.  I provide it in the hope that it is useful to someone out there other than myself, but it is AS-IS, WITHOUT WARRANTY, UNSUPPORTED software.  If it changes your dog&#8217;s gender, bursts your house into flames, destroys your whatchamacallermicroflobbermajag, do not come and yell at me.</em></strong>  That having been said, I welcome any modifications (at least to view them).  You can modify it for your own use, you can share it (in fact I expect you to!) and you can tinker with and tweak it.  Suggestions?  Welcome!  Comments?  Welcome!  Flames?  Hey, free speech is your right&#8230;</p>
<p>Lastly, <strong>I RECOMMEND THAT YOU RUN THE SCRIPT ON A CLEAN USER ACCOUNT, WITHOUT YOUR DATA, WITHOUT YOUR ANYTHING IN THE WAY.</strong>  Just create yourself another user, and login to it using Xnest or something, or log out of your user account completely—I don&#8217;t care how you do it.  Why do I make this recommendation?  Because while nothing bad should happen, it&#8217;s always best to sandbox things that you don&#8217;t trust.  After all, what reason do you have to trust me if you don&#8217;t know me?  You can also of course read through the script and audit it if you wish.  It doesn&#8217;t handle EVERY exceptional condition, but it handles just about anything that needs to be and tells you where things went awry if they go wrong.  And it logs everything (see the program output when you run it).  It also takes advantage of multiple processors or cores if you have them for those (few) builds that will permit it without going nutso, but YMMV.  If you have an issue with this aspect of the script, see the usage text.  If there are any issues that you can&#8217;t solve with that, or installing build-dependencies, then paste the relevant segments of your failing log file to something like <a href="http://pastebin.com/">pastebin</a> and ping me a comment here, and I can take a look at it and (try to) offer advice, depending on where the fail is.</p>
<p>Oh, yeah, and I used a hell of a lot of bandwidth putting it together and making sure that it did things like downloaded things right and all of that.  Sorry for hitting your servers repeatedly, Mono people—and thank you for the software!</p>
]]></content:encoded>
			<wfw:commentRss>http://mike.trausch.us/blog/2008/10/13/want-to-play-with-mono-20-so-do-i/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>On ExtJS and GPL</title>
		<link>http://mike.trausch.us/blog/2008/05/14/on-extjs-and-gpl/</link>
		<comments>http://mike.trausch.us/blog/2008/05/14/on-extjs-and-gpl/#comments</comments>
		<pubDate>Wed, 14 May 2008 19:15:53 +0000</pubDate>
		<dc:creator>Michael Trausch</dc:creator>
				<category><![CDATA[FLOSS]]></category>
		<category><![CDATA[GPLv3]]></category>
		<category><![CDATA[Stuff I Read]]></category>
		<category><![CDATA[computing]]></category>
		<category><![CDATA[freedom]]></category>
		<category><![CDATA[law]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[ExtJS]]></category>
		<category><![CDATA[FUD]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[software licensing]]></category>
		<category><![CDATA[Web programming]]></category>

		<guid isPermaLink="false">http://www.trausch.us/2008/05/14/on-extjs-and-gpl/</guid>
		<description><![CDATA[Here is an interesting short article on ExtJS and the GNU GPL. First off, if you are a developer (open source, closed source, doesn&#8217;t matter), you need to know the area of licensing. You should actually have read, studied, and understood at least the most popular licenses out there, so that you know what you [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://pooteeweet.org/blog/1084">Here is an interesting short article</a> on ExtJS and the GNU GPL.</p>
<p>First off, if you are a developer (open source, closed source, doesn&#8217;t matter), you need to know the area of licensing.  You should actually have read, studied, and understood at least the most popular licenses out there, so that you know what you can (and cannot) do when you link with code that uses those licenses.</p>
<p>Secondly, <em>JavaScript code runs on the client, not the server, and cannot link to the server&#8217;s code</em>.  This also means that a JavaScript framework can be licensed under the GPL, and you have no requirement to release the source code to the back-end processing code.  When you design a Web application, there are two components to it:  The front-end and the back-end.  These can be further subdivided a bit, if you were to employ the use of the <a href="http://en.wikipedia.org/wiki/Model-view-controller" title="Wikipedia: Model-view-controller">MVC architecture</a> for your application.  However, no matter how sloppy you write it, there are two distinct components:  The front-end and the back-end.  That&#8217;s it.</p>
<p>Now, these are logically speaking two separate programs.  They may work cooperatively, but think about it like this:  The Web browser is a framework for zero-install client application software, which uses a network connection to talk to server application software.  The front-end code, logically speaking, can be used on different back-end servers, too.  It doesn&#8217;t <em>have</em> to be only for the backend it was designed for, nor does anything stop the backend from talking to a third party client application that isn&#8217;t in a Web browser.</p>
<p>Think about it this way for a minute:  Amazon&#8217;s S3 service publishes only an API.  You must write a front-end to sit on top of it.  Your front-end being GPL&#8217;d will not force Amazon to open up S3, no matter what.  It&#8217;s clearly separated.</p>
<p>So, think about those licenses and their interactions and do not spread FUD when you do not understand the interactions that are there.  If you cannot distinguish between the front-end and back-end of a Web application by looking a working copy of it, you should probably consider learning more before you continue to write software.  Writing software is a construction activity and does require real knowledge and experience, as well as the ability to think critically about problems—and a few minutes of critical thinking would save a lot of people from reading ranty, panicy posts on things like licensing issues.  (This is also why management, unless they are technical-minded, really should not be making technical decisions, but that&#8217;s another post for another time.)</p>
]]></content:encoded>
			<wfw:commentRss>http://mike.trausch.us/blog/2008/05/14/on-extjs-and-gpl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Worry about SCO no more&#8230;</title>
		<link>http://mike.trausch.us/blog/2007/08/14/worry-about-sco-no-more/</link>
		<comments>http://mike.trausch.us/blog/2007/08/14/worry-about-sco-no-more/#comments</comments>
		<pubDate>Tue, 14 Aug 2007 17:25:53 +0000</pubDate>
		<dc:creator>Michael Trausch</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[GPLv3]]></category>
		<category><![CDATA[UNIX]]></category>
		<category><![CDATA[freedom]]></category>

		<guid isPermaLink="false">http://www.trausch.us/2007/08/14/worry-about-sco-no-more/</guid>
		<description><![CDATA[SCOX: 0.40 -0.04 (-9.48%) &#8211; The SCO Group, Inc. Not that I was terribly worried myself, anyway. Of course, with Novell owning the rights to Unix, there is the entire question of what they&#8217;ll do with that. Hopefully, they won&#8217;t be influenced by their &#8220;partnership&#8221; with Microsoft to use the Unix source code rights to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://finance.google.com/finance?q=scox">SCOX: 0.40 -0.04 (-9.48%) &#8211; The SCO Group, Inc.</a></p>
<p>Not that I was terribly worried myself, anyway.</p>
<p>Of course, with Novell owning the rights to <span style="font-variant: small-caps">Unix</span>, there is the entire question of what they&#8217;ll do with that.  Hopefully, they won&#8217;t be influenced by their &#8220;partnership&#8221; with Microsoft to use the <span style="font-variant: small-caps">Unix</span> source code rights to do evil things, like try to trash Linux more with it.  I should think that would not be in their best interests, anyway, since they themselves distribute a distribution of GNU/Linux systems.  That does bring up an interesting point, though:  if Novell owns the rights to <span style="font-variant: small-caps">Unix</span>, perhaps it is in Linus Torvalds&#8217; best interests to gather up all the contributors and get them to relicense their code under the GPLv3.  Ditch the code written by people that cannot make the decision to move to GPLv3 for one reason or another (there are many people that have contributed to the Linux kernel under the terms of the GPLv2, for example, that are no longer living), and rewrite code with similar or identical functionality to be released under the terms of the GPLv3.</p>
<p>I think that things would be far better for the Linux kernel if Linus would&#8217;ve required that all copyright ownership be transferred to him if he accepted the code for inclusion in the kernel.  That would avoid the large licensing mess, no matter what happened.  Though, it would also require that there be a large amount of trust be placed in Torvalds&#8217; for always doing The Right Thing™.  I should think that he would, but who knows—there are many people and businesses in the world that have similar trust placed in them and they seem to not care about doing the wrong things to the wrong people.  Two examples that come to mind are Brad Fitzpatrick and Six Apart, but of course those are just recent examples.</p>
]]></content:encoded>
			<wfw:commentRss>http://mike.trausch.us/blog/2007/08/14/worry-about-sco-no-more/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The GPL Version 3 has been released.</title>
		<link>http://mike.trausch.us/blog/2007/06/29/the-gpl-version-3-has-been-released/</link>
		<comments>http://mike.trausch.us/blog/2007/06/29/the-gpl-version-3-has-been-released/#comments</comments>
		<pubDate>Fri, 29 Jun 2007 16:51:29 +0000</pubDate>
		<dc:creator>Michael Trausch</dc:creator>
				<category><![CDATA[FLOSS]]></category>
		<category><![CDATA[GPLv3]]></category>
		<category><![CDATA[computing]]></category>
		<category><![CDATA[freedom]]></category>

		<guid isPermaLink="false">http://www.trausch.us/2007/06/29/the-gpl-version-3-has-been-released/</guid>
		<description><![CDATA[Welcome to GPLv3 — GPLv3 Version three of the GNU GPL license is released and now available after much revision. It is a good license, and I watched the streaming Ogg netcast of RMS announcing the release (or as much of it as I could—they were using a 700kbps stream, which is big as far [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://gplv3.fsf.org/">Welcome to GPLv3 — GPLv3</a></p>
<p>Version three of the GNU GPL license is released and now available after much revision.  It is a good license, and I watched the streaming Ogg netcast of RMS announcing the release (or as much of it as I could—they were using a 700kbps stream, which is big as far as streams go; and 500kbps was sound).  Today is a great day for the free software world, and for freedom in computing.</p>
]]></content:encoded>
			<wfw:commentRss>http://mike.trausch.us/blog/2007/06/29/the-gpl-version-3-has-been-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why switch to GPLv3?  Because it is good.</title>
		<link>http://mike.trausch.us/blog/2007/05/31/why-switch-to-gplv3-because-it-is-good/</link>
		<comments>http://mike.trausch.us/blog/2007/05/31/why-switch-to-gplv3-because-it-is-good/#comments</comments>
		<pubDate>Thu, 31 May 2007 18:37:13 +0000</pubDate>
		<dc:creator>Michael Trausch</dc:creator>
				<category><![CDATA[GPLv3]]></category>
		<category><![CDATA[computing]]></category>
		<category><![CDATA[freedom]]></category>

		<guid isPermaLink="false">http://www.trausch.us/2007/05/31/why-switch-to-gplv3-because-it-is-good/</guid>
		<description><![CDATA[I just received some mail from the GPLv3 mailing list that the Free Software Foundation maintains, and it is an essay titled “Why Upgrade to GPL Version 3”. In it, RMS notes that the GPLv3 protects against “tivoization”, or the embedding of GPL’d software into computerized appliances which prevent modification. This is, of course, a [...]]]></description>
			<content:encoded><![CDATA[<p>I just received some mail from the GPLv3 mailing list that the <a href="http://www.fsf.org/">Free Software Foundation</a> maintains, and it is an essay titled “Why Upgrade to GPL Version 3”.  In it, <acronym title="Richard M. Stallman">RMS</acronym> notes that the GPLv3 protects against “tivoization”, or the embedding of GPL’d software into computerized appliances which prevent modification.  This is, of course, a good thing:  It means that if the makers of such appliances want to benefit from free software, they can’t incorporate restrictions on how modifications of that software are to be installed.  It does <strong>not</strong> mean that such appliance makers have to support the modifications; just that they have to permit them.</p>
<p>This is a good thing, because it lets people who like to modify things like their routers, set-top boxes, and more to tweak them and make them behave the way that they want them to behave—much like people who run Ubuntu or other GNU/Linux distributions can do the same with their systems.  Some hardware already allows this to happen (in the <em>spirit</em> of the GPLv2, but the situation wasn’t something that was thought about when the GPLv2 came out so the letter doesn’t specify it).  Others, though, make the devices shut down if they detect modified firmware or software on them.</p>
<p>It also addresses some of the issues of <a href="http://en.wikipedia.org/wiki/Digital_rights_management" title="Wikipedia article on DRM">DRM</a> and how they are affected by the GPLv3.  Patent deals, such as the one made by Microsoft with Novell regarding open-source and free software, are also addressed.  The good news is that the GPLv3 is going to be a great license to write software under, because if it is used for all the currently-existing GPLv2 software, it will make fair competition possible in today’s quite anti-competitive software world.  Here is the mail from RMS: <span id="more-8"></span></p>
<blockquote><p>Version 3 of the GNU General Public License will soon be finished,<br />
enabling free software packages to upgrade from GPL version 2.  This<br />
article explains why upgrading the license is important.</p>
<p>First of all, it is important to note that upgrading is a choice.  GPL<br />
version 2 will remain a valid license, and no disaster will happen if<br />
some programs remain under GPLv2 while others advance to GPLv3.  These<br />
two licenses are incompatible, but that isn&#8217;t a serious problem.</p>
<p>When we say that GPLv2 and GPLv3 are incompatible, it means there is<br />
no legal way to combine code under GPLv2 with code under GPLv3 in a<br />
single program.  This is because both GPLv2 and GPLv3 are copyleft<br />
licenses: each of them says, &#8220;If you include code under this license<br />
in a larger program, the larger program must be under this license<br />
too.&#8221;  There is no way to make them compatible.  We could add a<br />
GPLv2-compatibility clause to GPLv3, but it wouldn&#8217;t do the job,<br />
because GPLv2 would need a similar clause.</p>
<p>Fortunately, license incompatibility only matters when you want to<br />
link, merge or combine code from two different programs into a single<br />
program.  There is no problem in having GPLv3-covered and<br />
GPLv2-covered programs side by side in an operating system.  For<br />
instance, the TeX license and the Apache license are incompatible with<br />
GPLv2, but that doesn&#8217;t stop us from running TeX and Apache in the<br />
same system with Linux, Bash and GCC.  This is because they are all<br />
separate programs.  Likewise, if Bash and GCC move to GPLv3, while<br />
Linux remains under GPLv2, there is no conflict.</p>
<p>Keeping a program under GPLv2 won&#8217;t create problems.  The reason to<br />
migrate is because of the existing problems which GPLv3 will address.</p>
<p>One major danger that GPLv3 will block is tivoization.  Tivoization<br />
means computers (called &#8220;appliances&#8221;) contain GPL-covered software<br />
that you can&#8217;t change, because the appliance shuts down if it detects<br />
modified software.  The usual motive for tivoization is that the<br />
software has features the manufacturer thinks lots of people won&#8217;t<br />
like.  The manufacturers of these computers take advantage of the<br />
freedom that free software provides, but they don&#8217;t let you do<br />
likewise.</p>
<p>Some argue that competition between appliances in a free market should<br />
suffice to keep nasty features to a low level.  Perhaps competition<br />
alone would avoid arbitrary, pointless misfeatures like &#8220;Must shut<br />
down between 1pm and 5pm every Tuesday&#8221;, but even so, a choice of<br />
masters isn&#8217;t freedom.  Freedom means _you_ control what your software<br />
does, not merely that you can beg or threaten someone else who decides<br />
for you.</p>
<p>In the crucial area of Digital Restrictions Management&#8211;nasty features<br />
designed to restrict your use of the data in your<br />
computer&#8211;competition is no help, because relevant competition is<br />
forbidden.  Under the Digital Millenuium Copyright Act and similar<br />
laws, it is illegal, in the US and many other countries, to distribute<br />
DVD players unless they restrict the user according to the official<br />
rules of the DVD conspiracy (its web site is http://www.dvdcca.org/,<br />
but the rules do not seem to be published there).  The public can&#8217;t<br />
reject DRM by buying non-DRM players, because none are available.  No<br />
matter how many products you can choose from, they all have equivalent<br />
digital handcuffs.</p>
<p>GPLv3 ensures you are free to remove the handcuffs.  It doesn&#8217;t forbid<br />
DRM, or any kind of feature.  It places no limits on the substantive<br />
functionality you can add to a program, or remove from it.  Rather, it<br />
makes sure that you are just as free to remove nasty features as the<br />
distributor of your copy was to add them.  Tivoization is the way they<br />
deny you that freedom; to protect your freedom, GPLv3 forbids<br />
tivoization.</p>
<p>The ban on tivoization applies to any product whose use by consumers,<br />
even occasionally, is to be expected.  GPLv3 tolerates tivoization<br />
only for products that are almost exclusively meant for businesses and<br />
organizations.  (The latest draft of GPLv3 states this criterion<br />
explicitly.)</p>
<p>Another threat that GPLv3 resists is that of patent deals like the<br />
Novell-Microsoft deal.  Microsoft wants to use its thousands of<br />
patents to make GNU/Linux users pay Microsoft for the privilege, and<br />
made this deal to try to get that.  The deal offers Novell&#8217;s customers<br />
rather limited protection from Microsoft patents.</p>
<p>Microsoft made a few mistakes in the Novell-Microsoft deal, and GPLv3<br />
is designed to turn them against Microsoft, extending that limited<br />
patent protection to the whole community.  In order to take advantage<br />
of this, programs need to use GPLv3.</p>
<p>Microsoft&#8217;s lawyers are not stupid, and next time they may manage to<br />
avoid those mistakes.  GPLv3 therefore says they don&#8217;t get a &#8220;next<br />
time&#8221;.  Releasing a program under GPL version 3 protects it from<br />
Microsoft&#8217;s future attempts to make redistributors collect Microsoft<br />
royalties from the program&#8217;s users.</p>
<p>GPLv3 also provides for explicit patent protection of the users from<br />
the program&#8217;s contributors and redistributors.  With GPLv2, users rely<br />
on an implicit patent license to make sure that the company which<br />
provided them a copy won&#8217;t sue them, or the people they redistribute<br />
copies to, for patent infringement.</p>
<p>The explicit patent license in GPLv3 does not go as far as we might<br />
have liked.  Ideally, we would make everyone who redistributes<br />
GPL-covered code surrender all software patents, along with everyone<br />
who does not redistribute GPL-covered code.  Software patents are a<br />
vicious and absurd system that puts all software developers in danger<br />
of being sued by companies they have never heard of, as well as by all<br />
the megacorporations in the field.  Large programs typically combine<br />
thousands of ideas, so it is no surprise if they implement ideas<br />
covered by hundreds of patents.  Megacorporations collect thousands of<br />
patents, and use those patents to bully smaller developers.  Patents<br />
already obstruct free software development.</p>
<p>The only way to make software development safe is to abolish software<br />
patents, and we aim to achieve this some day.  But we cannot do this<br />
through a software license.  Any program, free or not, can be killed<br />
by a software patent in the hands of an unrelated party, and the<br />
program&#8217;s license cannot prevent that.  Only court decisions or<br />
changes in patent law can make software development safe from patents.<br />
If we tried to do this with GPLv3, it would fail.</p>
<p>Therefore, GPLv3 seeks to limit and channel the danger.  In<br />
particular, we have tried to save free software from a fate worse than<br />
death: to be made effectively proprietary, through patents.  The<br />
explicit patent license of GPLv3 makes sure companies that use the GPL<br />
to give users the four freedoms cannot turn around and use their<br />
patents to tell some users &#8220;That doesn&#8217;t include you.&#8221;  It also stops<br />
them from colluding with other patent holders to do this.</p>
<p>Further advantages of GPLv3 include better internationalization,<br />
gentler termination, support for BitTorrent, and compatibility with<br />
the Apache license.  (For full information, see gplv3.fsf.org.)  All<br />
in all, plenty of reason to upgrade.</p>
<p>Change is unlikely to cease once GPLv3 is released.  If new threats to<br />
users&#8217; freedom develop, we will have to develop GPL version 4.  It is<br />
important to make sure that programs will have no trouble upgrading to<br />
GPLv4 when the time comes.</p>
<p>One way to do this is to release a program under &#8220;GPL version 3 or any<br />
later version&#8221;.  Another way is for all the contributors to a program<br />
to state a proxy who can decide on upgrading to future GPL versions.<br />
The third way is for all the contributors to assign copyright to one<br />
designated copyright holder, who will be in a position to upgrade the<br />
license version.  One way or another, programs should provide this<br />
flexibility for the future.</p>
<p>Copyright © 2007 Richard Stallman<br />
Verbatim copying and distribution of this entire article are permitted<br />
worldwide without royalty in any medium provided this notice is preserved.</p></blockquote>
<p>I have omitted the last call draft of the GPLv3, which can be <a href="http://www.fsf.org/news/gpl3dd4-released">found online</a>.  (This essay is also up on their web site at that link, actually, but I decided that it was more interesting to post it here as well).</p>
]]></content:encoded>
			<wfw:commentRss>http://mike.trausch.us/blog/2007/05/31/why-switch-to-gplv3-because-it-is-good/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

