<?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>Mike Gerwitz &#187; Uncategorized</title>
	<atom:link href="http://mikegerwitz.com/cat/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://mikegerwitz.com</link>
	<description>Free Software Hacker</description>
	<lastBuildDate>Mon, 07 May 2012 14:14:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Reading and Writing Remote Files Using GPG and SSH</title>
		<link>http://mikegerwitz.com/reading-and-writing-remote-files-using-gpg-and-ssh/</link>
		<comments>http://mikegerwitz.com/reading-and-writing-remote-files-using-gpg-and-ssh/#comments</comments>
		<pubDate>Sat, 07 Apr 2012 01:28:11 +0000</pubDate>
		<dc:creator>Mike Gerwitz</dc:creator>
				<category><![CDATA[Shell Scripting]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cryptography]]></category>
		<category><![CDATA[gpg]]></category>
		<category><![CDATA[pgp]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://mikegerwitz.com/?p=532</guid>
		<description><![CDATA[I store certain information on my server rather than on my local PC. For example, I may have passwords that I either want to access from multiple locations* or that I want shared with other individuals. To ensure that the passwords are not compromised, I encrypt it with the public keys of whomever should have [...]]]></description>
			<content:encoded><![CDATA[<p>I store certain information on my server rather than on my local PC. For example, I may have passwords that I either want to access from multiple locations* or that I want shared with other individuals. To ensure that the passwords are not compromised, I encrypt it with the public keys of whomever should have access to the file (namely, myself).</p>
<p>When reading and modifying the file, it is pointless to have a copy stored locally, so I simply pipe the file to GPG and then to whatever program I feel to be necessary (perhaps <tt>less</tt> for reading, or <tt>vim</tt> for editing):</p>
<p><code>$ ssh host cat file.gpg | gpg | vi -n -</code></p>
<p>Note the <tt>-n</tt> flag to vim &#8212; this prevents it from creating a swap file. This is necessary, because I do not want the unencrypted contents written to disk! The same consideration should be taken to any file you pipe the decrypted contents to; ensure that the contents are stored only in memory (and ensure that the data in memory is safe from being snooped on, e.g. another user running <tt>`cat /dev/mem | strings`</tt>). You should also be aware of when your system swaps memory to disk** and ensure that your terminal does not write to disk (see <a href="http://www.climagic.org/bugreports/libvte-scrollback-written-to-disk.html">this libVTE bug report</a>, for example).</p>
<p>Similarly, when writing the modified file, I do not want the unencrypted contents written to disk. Should that happen, you can always use the <tt>shred</tt> utility to erase the data with a fairly high level of confidence, but the better option would be to write the file directly to the server. Using vim, I accomplish this with the following ex command:</p>
<p><code>:%!cat | gpg --recipient Mike --encrypt - | ssh host 'cat > file.gpg'</code></p>
<p>The above takes the contents of the buffer and pipes it to GPG, encrypting it with my public key (the dash simply tells GPG to read from stdin instead of a file). The encrypted data, since GPG is reading from stdin, is output to stdout, which is then piped to the remote server, overwriting the original file.</p>
<p>Alternatively, if a file-driven approach is more intuitive, we can make use of <a href="https://en.wikipedia.org/wiki/Tmpfs">tmpfs</a>. tmpfs, although mounted as a filesystem, stores all the data in RAM (subject to the same swapping issues as mentioned above**). On many <acronym title="GNU's Not Unix!">GNU</acronym>/Linux systems, <tt>/dev/shm</tt> is mounted as a tmpfs filesystem, allowing us to create a fairly trivial script to allow for editing of remote, encrypted files:</p>

<div class="wp_codebox"><table><tr id="p5322"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
</pre></td><td class="code" id="p532code2"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
<span style="color: #666666; font-style: italic;"># Important: This script uses the EDITOR environment variable, so</span>
<span style="color: #666666; font-style: italic;"># keep in mind any swap files, etc that your editor may create</span>
<span style="color: #666666; font-style: italic;">##</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #007800;">$#</span> <span style="color: #660033;">-lt</span> 2 <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
  <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Usage: $0 host remote_file [enc_recipient]&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;&amp;</span>2
  <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">64</span> <span style="color: #666666; font-style: italic;"># EX_USAGE</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #007800;">host</span>=<span style="color: #ff0000;">&quot;$1&quot;</span>
<span style="color: #c20cb9; font-weight: bold;">file</span>=<span style="color: #ff0000;">&quot;$2&quot;</span>
<span style="color: #007800;">recipient</span>=<span style="color: #ff0000;">&quot;<span style="color: #007800;">${3:-YourName}</span>&quot;</span>
&nbsp;
<span style="color: #007800;">tmp</span>=<span style="color: #ff0000;">&quot;/dev/shm/gpg-<span style="color: #007800;">$( date +%s )</span>&quot;</span>
<span style="color: #007800;">tmpwrite</span>=<span style="color: #ff0000;">&quot;<span style="color: #007800;">${tmp}</span>w&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># shred and remove the file when we exit (ensures that it is mangled in</span>
<span style="color: #666666; font-style: italic;"># memory)</span>
<span style="color: #7a0874; font-weight: bold;">trap</span> <span style="color: #ff0000;">'shred -zu &quot;$tmp&quot; &quot;$tmpwrite&quot; 2&gt;/dev/null'</span> EXIT
&nbsp;
<span style="color: #666666; font-style: italic;"># retrieve file and write to temporary file in memory</span>
<span style="color: #c20cb9; font-weight: bold;">ssh</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$host</span>&quot;</span> <span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$file</span>&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> gpg <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$tmp</span>&quot;</span> <span style="color: #000000; font-weight: bold;">||</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
  <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Failed to retrieve <span style="color: #007800;">$file</span> from <span style="color: #007800;">$host</span>&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;&amp;</span>2
  <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">1</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># open file for editing using the user's preferred editor (defaulting to vim</span>
<span style="color: #666666; font-style: italic;"># with no swap file)</span>
<span style="color: #800000;">${EDITOR:-vim -n}</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$tmp</span>&quot;</span> \
  <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> gpg <span style="color: #660033;">--recipient</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$recipient</span>&quot;</span> <span style="color: #660033;">--encrypt</span> - <span style="color: #000000; font-weight: bold;">&lt;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$tmp</span>&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$tmpwrite</span>&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># rather than piping directly to SSH, only write if the previous operation</span>
<span style="color: #666666; font-style: italic;"># succeeded (otherwise, we'll end up wiping out the remote file!)</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-s</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$tmpwrite</span>&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span> \ 
  <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> <span style="color: #c20cb9; font-weight: bold;">ssh</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$host</span>&quot;</span> <span style="color: #ff0000;">&quot;cat &gt; <span style="color: #007800;">$file</span>&quot;</span> <span style="color: #000000; font-weight: bold;">&lt;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$tmpwrite</span>&quot;</span> \
  <span style="color: #000000; font-weight: bold;">||</span> <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;warning: <span style="color: #007800;">$file</span> was not written to <span style="color: #007800;">$host</span>&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;&amp;</span><span style="color: #000000;">2</span></pre></td></tr></table></div>

<p>It is important to take care in dealing with reading and modifying your data; encrypting it serves little benefit if by decrypting it you open yourself to attack.</p>
<p>* Use caution when transporting your private key or using your private key on an untrusted PC/device or any PC/device that is connected to any network.<br />
** You can change the &#8220;swappiness&#8221; of your system to swap to disk only if absolutely necessary, or disable the swap entirely with <tt>swapoff -a</tt>. <a href="http://askubuntu.com/questions/103242/is-it-safe-to-turn-swap-off-permanently">This link</a> has useful information pertaining to swap.</p>
<p>(The above code sample is licensed under the <a href="http://www.gnu.org/copyleft/gpl.html"><acronym title="GNU's Not Unix!">GNU</acronym> GPLv3+</a>.)</p>]]></content:encoded>
			<wfw:commentRss>http://mikegerwitz.com/reading-and-writing-remote-files-using-gpg-and-ssh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GNU GPL / Copyleft: Guardian or Curse?</title>
		<link>http://mikegerwitz.com/gnu-gpl-copyleft-guardian-or-curse/</link>
		<comments>http://mikegerwitz.com/gnu-gpl-copyleft-guardian-or-curse/#comments</comments>
		<pubDate>Sat, 11 Dec 2010 15:07:32 +0000</pubDate>
		<dc:creator>Mike Gerwitz</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mikegerwitz.com/?p=444</guid>
		<description><![CDATA[The GNU General Public License is a free software license (one of many) created to protect the four essential freedoms of software users. Those freedoms are: Freedom 0. the freedom to use the software for any purpose, Freedom 1. the freedom to change the software to suit your needs, Freedom 2. the freedom to share [...]]]></description>
			<content:encoded><![CDATA[<p>The <a id="gpl" href="http://www.gnu.org/licenses/gpl.html"><acronym title="GNU's Not Unix!">GNU</acronym> General Public License</a> is a <a href="http://www.gnu.org/philosophy/free-sw.html">free software</a> license (<a href="http://www.gnu.org/licenses/license-list.html">one of many</a>) created to protect the <a href="http://www.gnu.org/licenses/quick-guide-gplv3.html#the-foundations-of-the-gpl">four essential freedoms</a> of software users. Those freedoms are:</p>
<ul id="four-freedoms">
<li><strong>Freedom 0.</strong> the freedom to use the software for any purpose,</li>
<li><strong>Freedom 1.</strong> the freedom to change the software to suit your needs,</li>
<li><strong>Freedom 2.</strong> the freedom to share the software with your friends and neighbors, and</li>
<li><strong>Freedom 3.</strong> the freedom to share the changes you make.</li>
</ul>
<p>The license is the child of <a href="http://stallman.org/">Richard M. Stallman</a> &#8211; the founder of the <a href="http://en.wikipedia.org/wiki/Free_software_movement">free software movement</a> &#8211; and the <a href="http://fsf.org">Free Software Foundation</a> &#8211; the not-for-profit organization that was born from his vision. There are multiple incarnations of the license, each with their own distinct purposes:</p>
<ul id="gpl-licenses">
<li><strong><acronym title="GNU's Not Unix!">GNU</acronym> General Public License (<acronym title="GNU General Public License">GPL</acronym>)</strong> &#8211; Designed to protect and enforce the aforementioned freedoms. All derivative works must also be licensed under the <acronym title="GNU General Public License">GPL</acronym> or a <a href="http://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses"><acronym title="GNU General Public License">GPL</acronym>-compatible</a> license.</li>
<li><strong><acronym title="GNU's Not Unix!">GNU</acronym> Lesser General Public License (<a href="http://www.gnu.org/licenses/lgpl.html"><acronym title="GNU Lesser General Public License">LGPL</acronym></a>)</strong> &#8211; Designed to protect the four freedoms, but <a href="http://www.gnu.org/licenses/why-not-lgpl.html">permits usage in proprietary applications to a limited degree</a>. Derivative works must still be licensed under a <acronym title="GNU General Public License">GPL</acronym>-compatible license.</li>
<li><strong><acronym title="GNU's Not Unix!">GNU</acronym> Affero General Public License (<a href="http://www.gnu.org/licenses/agpl.html">AGPL</a>)</strong> &#8211; The most noble and powerful of the <acronym title="GNU General Public License">GPL</acronym> licenses. It is an extension of the <acronym title="GNU's Not Unix!">GNU</acronym> <acronym title="GNU General Public License">GPL</acronym>, with an added clause requiring that <a href="http://www.gnu.org/licenses/why-affero-gpl.html">users accessing software through a server must have access to the software&#8217;s source code</a> (e.g. a website/web service). All derivative works must be licensed under the AGPL or a compatible license.</li>
</ul>
<p>In addition to the above licenses, the <a href="http://www.gnu.org/licenses/fdl.html"><acronym title="GNU's Not Unix!">GNU</acronym> Free Documentation License (<acronym title="GNU Free Documentation License">FDL</acronym>)</a> is also available for documentation and other written works.</p>
<p>The licenses attempt to defend a very noble cause &#8211; <a href="http://en.wikipedia.org/wiki/Free_software_movement">the free software movement</a>. You will notice that all of the above licenses have something in common &#8211; they permit derivative works <em>only if they are licensed under a <a href="http://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses">compatible license</a></em>. This ensure that <em>the software will forever remain <a href="http://www.gnu.org/philosophy/free-sw.html">free software</a></em> and will never be a part of proprietary software, which <a href="http://www.gnu.org/philosophy/categories.html#ProprietarySoftware">is not tolerated by the free software community</a>. This is known as a <a href="http://www.gnu.org/copyleft/copyleft.html">copyleft</a>.</p>
<p>And this is where, for some, the problem begins.</p>
<h3 id="why-copyleft">Why Copyleft?</h3>
<p>As mentioned above, the <acronym title="GNU's Not Unix!">GNU</acronym> licenses are all <a href="http://www.gnu.org/copyleft/copyleft.html">copyleft</a>. Copyleft is a strong alternative to other methods of making software <a href="http://www.gnu.org/philosophy/categories.html#FreeSoftware">free</a>, such as putting it into the <a href="http://www.gnu.org/philosophy/categories.html#PublicDomainSoftware">public domain</a>, that <a href="http://www.gnu.org/philosophy/pragmatic.html">provides incentive to improve upon free software</a>. By placing software into the public domain, for example, the author allows it to be incorporated into proprietary software, or even public the <em>exact code</em> as proprietary software. There are no restrictions in place and the freedoms of the users remain unprotected.</p>
<p>Simply applying a free software license to software doesn&#8217;t solve the issue. Consider, for example, one of the most permissive software licenses &#8211; the <a href="http://www.opensource.org/licenses/mit-license.php"><acronym title="Massachusetts Institute of Technology">MIT</acronym>/Expat license</a>. It is a <a href="http://www.gnu.org/philosophy/categories.html#Non-CopyleftedFreeSoftware">non-copyleft</a> license, permitting the use of the code within proprietary software so long as the license text is distributed with the resulting software. This is a problem. Should the code be included in proprietary software, it violates all of the four freedoms:</p>
<ul>
<li>The software could only be used under the terms permitted by the license of the proprietary software vendor,</li>
<li>the software could not be altered to suit your needs, as you would not have access to the source code,</li>
<li>the vendor may prevent you from sharing the software with your friends and neighbors, and</li>
<li>it would be illegal to share your changes.</li>
</ul>
<p>It is exactly this that the free software community is against and what <a href="http://www.gnu.org/philosophy/x.html">copyleft aims to prevent</a>. In fact, by using a non-copyleft license, the author of the software is <a href="http://www.gnu.org/philosophy/why-copyleft.html">failing to protect the freedom of his/her users</a> by permitting derivative works to completely trash the user&#8217;s freedoms.</p>
<h3 id="why-not-copyleft">Why [Not] Copyleft?</h3>
<p>There are many <a href="http://blogofbile.com/2009/08/05/how-richard-stallmans-gpl-platform-backfires-on-the-free-software-movement/">opponents to the <acronym title="GNU General Public License">GPL</acronym> and copyleft</a>. They argue that copyleft imposes unnecessary restrictions on developers by preventing them from using free software as they wish, wish some consider unethical. Denying a developer a right to use code however they please is denying a freedom. Copyleft has been deemed &#8220;viral&#8221; (by all means of the word, it is &#8211; all derivative works must also be copyleft, but the term &#8220;viral&#8221; has a highly negative connotation). Terms such as the <acronym title="GNU's Not Unix!">GNU</acronym> <a href="http://catb.org/esr/jargon/oldversions/jarg221.txt">&#8220;General Public Virus&#8221;</a> emerged shortly after its release.</p>
<p>It is noble to release your code into the wild with no restrictions, saying &#8220;I made this for the world and the world may use it as it pleases.&#8221; Your mind is likely in the right place. However, as mentioned above, <a href="http://www.gnu.org/philosophy/why-copyleft.html">you are failing to protect the freedoms of your users</a>. Consider, for example, the development of the nuclear fission. Let&#8217;s say that you were the one to discover the splitting an atom releases vast amounts of energy. You think to yourself that this has incredible implications for humanity. A viable, clean energy source &#8211; nuclear power. You release this information to the world with excellent intentions &#8211; to better humanity. Your intention was totally selfless. You&#8217;re asking nothing in return for this incredible discovery.</p>
<p>Months later, you hear that a city was completely annihilated. They used a bomb that exploited your discovery, calling it the &#8220;atomic bomb&#8221;. Your wonderful discovery has just been used in a way unimaginable, taking advantage of all your hard work to do harm to others.</p>
<p>Proprietary software is by no means comparable to the death of millions of individuals (in my opinion). It is, however, comparable to taking your beautiful, hard work that you released for the better of humanity, and using it to control users. This is what you are potentially dooming users of your software to by using a non-copyleft license.</p>
<div id="freedom-user-not-developer">Essentially, <a href="http://www.gnu.org/philosophy/misinterpreting-copyright.html">copyright is uses to protect the interests of corporations</a>, which <a href="http://www.gnu.org/philosophy/copyright-versus-community.html">limits user freedom</a>, where copyleft is designed to <em>ensure</em> freedom of the user. It is a trade off. By distributing your software as free software under a copyleft license such as the <acronym title="GNU General Public License">GPL</acronym>, you are surrendering your freedom as a developer to control your users. To play god in the world of software. The choice of whether or not to use copyleft is fairly simple:</p>
<ul>
<li>If you wish to protect the freedom of <em>developers</em> and allow your software to be used in any manner, choose <a href="http://www.gnu.org/philosophy/categories.html#Non-CopyleftedFreeSoftware">non-copyleft</a>.</li>
<li>If you wish to protect the freedom of your users at all costs, choose <a href="http://www.gnu.org/copyleft/copyleft.html">copyleft</a>.</li>
</ul>
</div>
<p>Some also argue that <a href="http://www.osnews.com/story/21192/ESR_GPL_No_Longer_Needed">copyleft is no longer needed</a>, because taking free software and using it in proprietary software has become a greatly unethical practice. That is true within many communities. But that will not stop others from <a href="http://www.softwarefreedom.org/resources/">taking your software and using it unjustly</a> or <a href="http://www.gnu.org/licenses/rms-why-gplv3.html">attempting to circumvent licensing terms to use your software in a manner that is non-free</a>.</p>
<h3>Copyleft Resistance</h3>
<p>This article was prompted by a couple of factors within a single day. The main reason was that I noticed strong resistance to the <acronym title="GNU General Public License">GPL</acronym> within a piece of software I was looking at to determine if I needed to develop a <a href="http://www.gnu.org/philosophy/categories.html#FreeSoftware">free</a> alternative for myself and others. I noticed the following in the licensing terms:</p>
<blockquote><p>
<tt><br />
##  LICENSE:<br />
##  <strong>1. You may not make this <acronym title="GNU General Public License">GPL</acronym> ever. I want my code to be freely</strong><br />
##&nbsp;&nbsp;&nbsp;&nbsp;<strong>available to everyone forever. The <acronym title="GNU General Public License">GPL</acronym> restricts freedom.</strong><br />
##  2. Copyright notices must remain intact and distributed with<br />
##&nbsp;&nbsp;&nbsp;&nbsp;the program.  This includes the contributors list.<br />
##  3. No warantee is present, whether express or implied.  Use at<br />
##&nbsp;&nbsp;&nbsp;&nbsp;your own risk.<br />
##  4. This license must be included with all distributions of this<br />
##&nbsp;&nbsp;&nbsp;&nbsp;program and no modifications to this license are allowed.<br />
##&nbsp;&nbsp;&nbsp;&nbsp;<strong>This implicitly makes this program <acronym title="GNU General Public License">GPL</acronym> incompatible but</strong><br />
##&nbsp;&nbsp;&nbsp;&nbsp;<strong>compatible with virtually every other OSI approved license.</strong><br />
##  5. You are otherwise free to distribute this program, modify it<br />
##&nbsp;&nbsp;&nbsp;&nbsp;and distribute those modified works.<br />
</tt>
</p></blockquote>
<p>I took the time to post a response on this person&#8217;s blog (the text below contains only minor grammatical fixes from the original and hyperlinks):</p>
<blockquote><p>
I noticed the following comment in your license:</p>
<p><tt>"The <acronym title="GNU General Public License">GPL</acronym> restricts freedom."</tt></p>
<p>This seems like a contradictory statement and brings into question your<br />
definition of &#8220;freedom&#8221;. Had you used the <a href="#gpl"><acronym title="GNU General Public License">GPL</acronym></a> in order to license this work, you<br />
would have ensured that the source code will be freely available indefinitely. You would<br />
have in fact been protecting the <a href="#four-freedoms">freedom of your users</a>.</p>
<p>You impose only restrictions on your license. You impose no restrictions<br />
whatsoever on the source code itself. This means that someone would be able take<br />
your script and use it in their own proprietary project, obfuscating or<br />
otherwise compiling the code, and still follow the license terms so long as they<br />
distribute your license and do not modify it. In doing so, <a href="#why-copyleft">the freedoms of your<br />
users have been assaulted</a>. Should they receive a copy of this modified<br />
software, they are not free to study and alter the source code &#8211; it is in a<br />
state that makes doing so very difficult.</p>
<p>By your statement, I assume you are referring to the <a href="#why-not-gpl">&#8220;viral&#8221; nature of the <acronym title="GNU's Not Unix!">GNU</acronym><br />
General Public license</a> &#8211; that it <a href="#gpl-licenses">forces any derivative works to also be free,<br />
released under a compatible license</a>. Some people see this as an assault on their<br />
freedom to distribute and use the software however they please. But <a href="#freedom-user-not-developer">the <acronym title="GNU's Not Unix!">GNU</acronym> <acronym title="GNU General Public License">GPL</acronym><br />
protects the <em>user</em>, not the developer</a> &#8211; ensuring that users are not bullied and<br />
taken advantage of. With your license, are protecting the developer (permitting<br />
them to do whatever they wish with your code), but dooming the users of your<br />
software.</p>
<p>It should also be noted that your software is stand-alone. It is not a library.<br />
Had it been released under the terms of the <acronym title="GNU General Public License">GPL</acronym>, you would have protected the<br />
<a href="#four-freedoms">four essential freedoms</a>. You also would have permitted developers to use your<br />
software in proprietary software, because they could simply call your script and<br />
use its output in their proprietary software.</p>
<p>Therefore, you have gained nothing here by disallowing the <acronym title="GNU General Public License">GPL</acronym>, but instead have<br />
forfeited the four essential freedoms.
</p></blockquote>
<p>When I returned to the blog to see if the author had responded, I found that my post had been deleted. The author either did not care about the freedom of his/her users or did not understand the implications of his actions or copyleft.</p>
<p>What the author of this software had done was develop his own <a href="http://www.gnu.org/philosophy/categories.html#Non-CopyleftedFreeSoftware>non-copyleft license</a> very similar to the aforementioned <a href="http://www.opensource.org/licenses/mit-license.php">Expat license</a> or other highly permissive licenses (such as the <a href="http://www.gnu.org/philosophy/bsd.html">original/modified BSD</a>). He/she places restrictions only on the license itself &#8211; not the source code. The user was free to distribute and modify the source code in any shape or form, including proprietary.</p>
<p>Rather than simply using an <a href="http://www.gnu.org/licenses/license-list.html">existing permissive license</a>, the author decided to explicitly state that the license should not be compatible with the <acronym title="GNU General Public License">GPL</acronym>. Therefore, ironically, <em>the author was placing more restrictions on the users than virtually any other permissive license</em>.</p>
<blockquote><p><tt>"[...] I want my code to be freely available to everyone forever."</tt></p></blockquote>
<p>The author failed in doing so. By stating that the code cannot ever be licensed under the <acronym title="GNU General Public License">GPL</acronym>, he/she ensures that the code can never be incorporated into any projects using the <a href="http://johnhaller.com/jh/useful_stuff/open_source_license_popularity/">most popular free software license in the world</a>. There are many other licenses, but the author has placed favor on proprietary software by disallowing so many free software projects the right to use his/her code.</p>
<blockquote><p><tt>"[...] The <acronym title="GNU General Public License">GPL</acronym> restricts freedom."</tt></p></blockquote>
<p>This was the line that really got to me. It is a fascinating line, because it represents a large difference in opinion &#8211; the difference in what we consider &#8220;freedom&#8221; to be. <a href="http://www.free-soft.org/gpl_history/">The <acronym title="GNU General Public License">GPL</acronym> was created to protect users&#8217; freedoms</a>. Why, then, does the author claim that the <acronym title="GNU General Public License">GPL</acronym> restricts freedom? As the author did not respond, I can only speculate. Likely, it represents the concept mentioned above &#8211; that the <a href="#freedom-user-not-developer"><acronym title="GNU General Public License">GPL</acronym> protects freedoms of the <em>user</em>, not the developer</a>. The author decided that it was more important to him/her that his/her code be able to be used anywhere and specifically singled out the license designed to protect the freedom of users. Therefore, the author decided that it was ethical to allow derivative works to control its users.</p>
<h3>Guardian or Curse</h3>
<p>Copyleft (and consequently, the <acronym title="GNU General Public License">GPL</acronym>) is something people tend to have strong feelings for on either side &#8211; they love it, or they hate it. I&#8217;m not one to state that someone else&#8217;s opinions are incorrect. I personally strongly support copyleft and <a href="http://www.gnu.org/philosophy/">philosophy of the <acronym title="GNU's Not Unix!">GNU</acronym> Project</a>. The <acronym title="GNU General Public License">GPL</acronym> has been the force driving the free software movement for two just over two decades. It allows individuals to develop software that respects the freedom of users &#8211; ensures that they cannot be <a href="http://www.defectivebydesign.org/">controlled and bullied</a> &#8211; and ensures that their software will never fall and surrender those freedoms by enforcing those freedoms with copyright.</p>
<p>At the same time, the <acronym title="GNU General Public License">GPL</acronym> is an assault on freedom to developers. <em>And that is a good thing!</em> Large corporations use their proprietary software to control their users. For example, <a href="http://www.defectivebydesign.org/amazon-kindle-swindle">Amazon used <acronym title="Digital Restrictions Management">DRM</acronym> on the Kindle to remove copies of the book 1984 from users&#8217; devices</a> &#8211; something that would not have been possible with free software. <a href="http://www.gnu.org/philosophy/opposing-drm.html"><acronym title="Digital Restrictions Management">DRM</acronym></a> cannot exist within free software. Users would simply remove the offending code from the software and likely fork the project, leaving the original author in shame.</p>
<p>Proprietary software can also be used to <a href="http://www.defectivebydesign.org/blog/1313">spy on your personal information</a>, with no way to disable it. In fact, devices like the iPhone/iPod/iPad cannot be modified at all. They must be &#8220;jailbroken&#8221; in order to do anything that Apple does not want you to do. It is the ultimate form of control over users. And who&#8217;s controlling the users? The developers.</p>
<p><strong>The <acronym title="GNU General Public License">GPL</acronym> is a guardian to those who believe that the user should, above all else, be free to use, alter and distribute the program as they wish. The <acronym title="GNU General Public License">GPL</acronym> is a curse to those who wish to take advantage of their users by creating proprietary software in order to control and exploit them.</strong></p>
<h3>More Information</h3>
<p>For more information on free software, <acronym title="GNU's Not Unix!">GNU</acronym> <acronym title="GNU General Public License">GPL</acronym> and copyleft, please see the links throughout this article. For your convenience, many have been summarized in the list below:</p>
<ul>
<li><a href="http://fsf.org">Free Software Foundation</a></li>
<li><a href="http://gnu.org">The <acronym title="GNU's Not Unix!">GNU</acronym> Operating System</a></li>
<li><a href="http://www.gnu.org/philosophy/free-sw.html">The Free Software Definition</a></li>
<li><a href="http://www.gnu.org/copyleft/copyleft.html">Copyleft</a></li>
<li><a href="http://www.gnu.org/philosophy/why-copyleft.html">Why Copyleft?</a></li>
<li><a href="http://www.gnu.org/philosophy/pragmatic.html">Copyleft: Pragmatic Idealism</a></li>
<li><a href="http://www.gnu.org/licenses/license-list.html">List of Software Licenses</a></li>
<li><a href="http://www.gnu.org/licenses/rms-why-gplv3.html">Why Upgrade to GPLv3</a></li>
<li><a href="http://www.gnu.org/philosophy/categories.html">Categories of free and nonfree software</a></li>
<li><a href="http://www.gnu.org/philosophy/x.html">The X Window System Trap</a></li>
<li><a href="http://www.gnu.org/philosophy/misinterpreting-copyright.html">Misinterpreting Copyright &#8211; A Series of Errors</a></li>
<li><a href="http://www.gnu.org/philosophy/copyright-versus-community.html">Copyright versus Community in the Age of Computer Networks</a></li>
<li><a href="http://en.wikipedia.org/wiki/Free_software_movement">Free Software Movement (Wikipedia)</a></li>
<li><a href="http://www.softwarefreedom.org/">Software Freedom Law Center</a></li>
<li><a href="http://stallman.org/">Richard M. Stallman</a></li>
</ul>
<p>I also encourage you to take a look at the following related websites::</p>
<ul>
<li><strong><a href="http://patentabsurdity.com/">Patent Absurdity</a></strong></li>
<li><a href="http://endsoftpatents.org/">End Software Patents</a></li>
<li><a href="http://libreplanet.org/">LibrePlanet</a></li>
<li><a href="http://www.defectivebydesign.org/">Defective By Design</a></li>
<li><a href="http://www.gnu.org/philosophy/opposing-drm.html">Opposing Digital Rights Management</a></li>
<li><a href="http://en.windows7sins.org/">Windows 7 Sins</a></li>
<li><a href="https://my.fsf.org/donate/directed-donations/riaa/">RIAA Lawsuits &#8211; Expert Witnesses Fund</a></li>
<li><a href="http://www.fsf.org/campaigns/acta/">Campaign Against the ACTA</a></li>
<li><a href="http://www.fsf.org/resources/hw">Hardware Devices that Support Free <acronym title="GNU's Not Unix!">GNU</acronym>/Linux</a></li>
<li><a href="http://www.fsf.org/campaigns/priority-projects/">High Priority Free Software Projects</a></li>
<li><a href="https://my.fsf.org/associate/support_freedom/join_fsf?referrer=5804">Join the Free Software Foundation</a></li>
</ul>
<p><em><strong>Disclaimer:</strong> No attempt was made to provide an unbiased article regarding the <acronym title="GNU's Not Unix!">GNU</acronym> <acronym title="GNU General Public License">GPL</acronym> and copyleft. It can be made very apparent from the rest of this website that I am a strong supporter of free software and copyleft. This article is intended to support the <acronym title="GNU General Public License">GPL</acronym> and copyleft. I am an <a href="https://my.fsf.org/associate/support_freedom/join_fsf?referrer=5804">associate member of the Free Software Foundation</a> and a free software developer and user.</em></p>]]></content:encoded>
			<wfw:commentRss>http://mikegerwitz.com/gnu-gpl-copyleft-guardian-or-curse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft: Hijacking Your Data</title>
		<link>http://mikegerwitz.com/microsoft-hijacking-your-data/</link>
		<comments>http://mikegerwitz.com/microsoft-hijacking-your-data/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 03:32:13 +0000</pubDate>
		<dc:creator>Mike Gerwitz</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[drm]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[privacy]]></category>

		<guid isPermaLink="false">http://www.mikegerwitz.com/?p=224</guid>
		<description><![CDATA[I recently read this story on Slashdot: Microsoft Seeks Patent On Shaming Fat Gamers The idea is that Microsoft wants to create a system whereby it will gather physical statistics on a user and alter the game play around those characteristics. For example, as the article mentioned, an obese player may be cut off from [...]]]></description>
			<content:encoded><![CDATA[<p>I recently read this story on Slashdot:</p>
<p><a href="http://games.slashdot.org/story/09/12/18/1649253/Microsoft-Seeks-Patent-On-Shaming-Fat-Gamers">Microsoft Seeks Patent On Shaming Fat Gamers</a></p>
<p>The idea is that Microsoft wants to create a system whereby it will gather physical statistics on a user and alter the game play around those characteristics. For example, as the article mentioned, an obese player may be cut off from playing. I suppose the idea could have benefits &#8211; such as helping players get into shape if they can&#8217;t wait to get back on their consoles. But this raises some serious ethical issues. What, for example, about those players who are unable to lose weight for genetic reasons? Or what ever happened to those who play video games to escape from the real world? Hell, that&#8217;s half the fun in my opinion.</p>
<blockquote><p>Microsoft also proposes shaping gaming experiences by using &#8216;psychological and demographic information such as education level, geographic location, age, sex, intelligence quotient, socioeconomic class, occupation, marital/relationship status, religious belief, political affiliation, etc.&#8217;</p></blockquote>
<p>This to me raises some serious privacy issues. I would never wish a video game or vendor to have <em>that</em> much personal information on myself. In fact, I feel the name on a credit card is too much information for the vendor or any party to have. But the traits listed above? Look, placing yourself in a video game is a pretty cool idea if you consent to it. For those who do want to give up all of that personal information, good for them. But basing game play off of factors like physical appearance, sex, religion, politically affiliation, etc could turn into a discriminatory battle.</p>
<p>Furthermore, you know that corporations will use this information for other statistical purposes, or to sell to other companies. Would you want a company like Microsoft to know more about you than you probably do? The only way I would subscribe to such a system is if it (a) used an open protocol, (b) was subject to very strict privacy standards and policies that are heavily enforced and investigated, (c) we were able to strictly state what information we wanted to give to the vendor, (d) we were able to choose what remote server to upload such statistical data to (i.e. one we may be able to trust) and (e) if the video game provided this is an <em>option</em> rather than a requirement. The patent does use the word &#8220;nonvolitionally&#8221; when referencing information gathered from the user, but we&#8217;ll see how that goes. Vendors can still state, &#8220;oh, uh, you can only play this game if you give us this, this, this and this.&#8221;</p>
<p>&#8230;surprise, the girl you&#8217;ve been lusting over in your video game is actually a guy, and this will prove it.</p>
<p>The patent states:</p>
<blockquote><p>[0009]In yet a further aspect, an apparatus is provided for interacting with a virtual gaming environment. An information source is accessed for receiving a health information nonvolitionally obtained from a user. These sources are at least two of a a physiological sensor, a networked healthcare information repository, and a healthcare smart card.</p></blockquote>
<p>I would be highly against anyone having access to information on that type of level &#8211; as everyone else should be. This is just one example of how vendors like Microsoft may try to steal information from you. If they were able to have access to heathcare records, you wouldn&#8217;t be able to say &#8220;I only want you to see this&#8221;. No, they&#8217;d probably be able to see it all.</p>
<p>Again, I&#8217;m not saying it&#8217;s a horrible idea. I&#8217;ve often fantasized about placing yourself in a virtual reality, where the game actually rendered you in the virtual environment. But considering Microsoft&#8217;s track record, they are not the company to implement or control this.</p>]]></content:encoded>
			<wfw:commentRss>http://mikegerwitz.com/microsoft-hijacking-your-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grub 2 Hangs on Boot</title>
		<link>http://mikegerwitz.com/grub-2-hangs-on-boot/</link>
		<comments>http://mikegerwitz.com/grub-2-hangs-on-boot/#comments</comments>
		<pubDate>Sun, 01 Nov 2009 00:10:36 +0000</pubDate>
		<dc:creator>Mike Gerwitz</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[grub]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.mikegerwitz.com/2009/11/01/grub-2-hangs-on-boot/</guid>
		<description><![CDATA[When BETA testing Ubuntu Karmic (9.10), I noticed that the whole boot process wasn&#8217;t so fast. This was primarily due to Grub 2 hanging for nearly 35 seconds each boot. I haven&#8217;t the time to figure out what Grub is trying to do in that amount of time, but I did notice a solution. I [...]]]></description>
			<content:encoded><![CDATA[<p>When BETA testing Ubuntu Karmic (9.10), I noticed that the whole boot process wasn&#8217;t so fast. This was primarily due to Grub 2 hanging for nearly 35 seconds each boot.</p>
<p>I haven&#8217;t the time to figure out what Grub is trying to do in that amount of time, but I did notice a solution. I have three HDDs. In the BIOS, it was set as the third boot device. By moving it to the top, Grub quickly moved along to boot Ubuntu.</p>]]></content:encoded>
			<wfw:commentRss>http://mikegerwitz.com/grub-2-hangs-on-boot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ssh-copy-id and sshd port</title>
		<link>http://mikegerwitz.com/ssh-copy-id-and-sshd-port/</link>
		<comments>http://mikegerwitz.com/ssh-copy-id-and-sshd-port/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 03:21:57 +0000</pubDate>
		<dc:creator>Mike Gerwitz</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://www.mikegerwitz.com/2009/10/07/ssh-copy-id-and-sshd-port/</guid>
		<description><![CDATA[For security purposes, I don&#8217;t run sshd on the default port (22). This gave me some problems when attempting to use the command ssh-copy-id. Ideally, you&#8217;d expect the following to work: 1 ssh-copy-id -p XXXX -i '~/.ssh/id_rsa.pub' username@host However, that didn&#8217;t do anything but output an error: Bad port 'umask 077; test -d .ssh &#124;&#124; [...]]]></description>
			<content:encoded><![CDATA[<p>For security purposes, I don&#8217;t run sshd on the default port (22). This gave me some problems when attempting to use the command <tt>ssh-copy-id</tt>. Ideally, you&#8217;d expect the following to work:</p>

<div class="wp_codebox"><table><tr id="p1204"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p120code4"><pre class="bash" style="font-family:monospace;">ssh-copy-id <span style="color: #660033;">-p</span> XXXX <span style="color: #660033;">-i</span> <span style="color: #ff0000;">'~/.ssh/id_rsa.pub'</span> username<span style="color: #000000; font-weight: bold;">@</span>host</pre></td></tr></table></div>

<p>However, that didn&#8217;t do anything but output an error:</p>
<p><tt>Bad port 'umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys'</tt></p>
<p>The solution was to enclose it in quotes as follows:</p>
<p>ssh-copy-id &#8216;-p XXXX -i ~/.ssh/id_rsa.pub username@host&#8217;</p>
<p>Hope that helps.</p>
<p>(The above error probably doesn&#8217;t make any sense. <tt>ssh-copy-id</tt> is a shell script. The command that appears in the error message is a command sent to the server via <acronym title="Secure Shell">SSH</acronym>. Feel free to take a look at the file: <tt>cat `locate ssh-copy-id | head -n1`</tt>)</p>]]></content:encoded>
			<wfw:commentRss>http://mikegerwitz.com/ssh-copy-id-and-sshd-port/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>gnome-screensaver: What happens when you can&#8217;t unlock your PC.</title>
		<link>http://mikegerwitz.com/gnome-screensaver-what-happens-when-you-cant-unlock-your-pc/</link>
		<comments>http://mikegerwitz.com/gnome-screensaver-what-happens-when-you-cant-unlock-your-pc/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 03:38:51 +0000</pubDate>
		<dc:creator>Mike Gerwitz</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[GNOME]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.mikegerwitz.com/2009/10/01/gnome-screensaver-what-happens-when-you-cant-unlock-your-pc/</guid>
		<description><![CDATA[This is an issue that has irritated me enough that I feel I should post my work-around. On Ubuntu (I&#8217;m not sure since what version &#8211; I&#8217;m currently using 9.04 Jaunty), I&#8217;ve noticed that every once in a while, gnome-screensaver would hang when I tried to log back in. Let me clarify a little. When [...]]]></description>
			<content:encoded><![CDATA[<p>This is an issue that has irritated me enough that I feel I should post my work-around. On Ubuntu (I&#8217;m not sure since what version &#8211; I&#8217;m currently using 9.04 Jaunty), I&#8217;ve noticed that every once in a while, gnome-screensaver would hang when I tried to log back in. Let me clarify a little. When you lock your computer, it fades out, that&#8217;s gnome-screensaver (assuming you&#8217;re using GNOME of course). When you move your mouse or hit a key and you are prompted for your password, that&#8217;s gnome-screensaver as well.</p>
<p>The problem is, there are times (however few) that I&#8217;d enter my password, and it&#8217;d just sit there. Everything would be disabled and it&#8217;d act like it was simply pausing due to an incorrect password.</p>
<p>But it&#8217;d never unlock.</p>
<p>As long as you know what the application is that&#8217;s running, you can kill it. Going off of a hunch, I hit <tt>Ctrl+Alt+F1</tt> to go to TTY1. I logged in under the same user, then typed the following command:</p>

<div class="wp_codebox"><table><tr id="p1186"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p118code6"><pre class="bash" style="font-family:monospace;">  <span style="color: #c20cb9; font-weight: bold;">killall</span> gnome-screensaver</pre></td></tr></table></div>

<p>This successfully gets rid of the login screen. Simply hit <tt>Ctrl+Alt+F8</tt> (or whatever TTY your X session was running on), and tada!</p>
<p>Of course, you&#8217;ll have to run gnome-screen saver again or you won&#8217;t be able to lock your computer. Hit Alt+F2 and type &#8220;gnome-screensaver&#8221; to have it run in the background as it was before. It may also be a good idea to go back to TTY1 and log out, since you never want to leave a terminal wide open unprotected.</p>
<p>If you&#8217;re worried that someone might use this to bypass your login, don&#8217;t worry. They&#8217;d have to either log in as you in order to kill gnome-screensaver on your session, or they&#8217;d have to log in as root. And if they&#8217;re root, you have nowhere to hide anyway.</p>]]></content:encoded>
			<wfw:commentRss>http://mikegerwitz.com/gnome-screensaver-what-happens-when-you-cant-unlock-your-pc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>compgen -d: No such file or directory</title>
		<link>http://mikegerwitz.com/compgen-d-no-such-file-or-directory/</link>
		<comments>http://mikegerwitz.com/compgen-d-no-such-file-or-directory/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 03:47:52 +0000</pubDate>
		<dc:creator>Mike Gerwitz</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[GNU/Linux]]></category>

		<guid isPermaLink="false">http://www.mikegerwitz.com/2009/08/25/compgen-d-no-such-file-or-directory/</guid>
		<description><![CDATA[For a while, I was having a problem on my Ubuntu server. After creating a user, I noticed that tab completion didn&#8217;t work properly. In fact, it went so far as to output an error:]]></description>
			<content:encoded><![CDATA[<p>For a while, I was having a problem on my Ubuntu server. After creating a user, I noticed that tab completion didn&#8217;t work properly. In fact, it went so far as to output an error:<br />
<code><br />
<( compgen -d -- '/my/dir' ): No such file or directory</code></p>
<p>Where "/my/dir" would vary depending on what you're tab-completing. I suspected the problem might be with permissions, but that came up short.</p>
<p>I finally came across the solution here:</p>
<p><a href="http://serverfault.com/questions/47554/ubuntu-tab-completon-and-mc-problems">http://serverfault.com/questions/47554/ubuntu-tab-completon-and-mc-problems</a></p>
<p>Since I had trouble finding much information on Google, hopefully this post will help. It turned out to be a shell issue. When I created the user, I never specified the default shell to use (<acronym title="Bourne Again Shell">BASH</acronym>), and I apparently never went back and changed it. Which explains why it worked on some of my users' accounts but not others.</p>]]></content:encoded>
			<wfw:commentRss>http://mikegerwitz.com/compgen-d-no-such-file-or-directory/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Defend Your Liberties &#8211; Speak Against ACTA!</title>
		<link>http://mikegerwitz.com/defend-your-liberties-speak-against-acta/</link>
		<comments>http://mikegerwitz.com/defend-your-liberties-speak-against-acta/#comments</comments>
		<pubDate>Sun, 21 Dec 2008 04:04:53 +0000</pubDate>
		<dc:creator>Mike Gerwitz</dc:creator>
				<category><![CDATA[Free Software]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[FSF]]></category>
		<category><![CDATA[liberties]]></category>

		<guid isPermaLink="false">http://www.mikegerwitz.com/?p=71</guid>
		<description><![CDATA[&#8220;ACTA, the Anti-Counterfeiting Trade Agreement, is a proposed enforcement treaty between United States, the European Community, Switzerland, Japan, Australia, the Republic of Korea, New Zealand and Mexico, with Canada set to join any day now.&#8221; &#8211; More information here The name of the treaty sounds innocent enough, but what are they not telling you? This [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>&#8220;ACTA, the Anti-Counterfeiting Trade Agreement, is a proposed enforcement treaty between United States, the European Community, Switzerland, Japan, Australia, the Republic of Korea, New Zealand and Mexico, with Canada set to join any day now.&#8221; &#8211; <a href="http://www.fsf.org/campaigns/acta/">More information here</a></p></blockquote>
<p>The name of the treaty sounds innocent enough, but what are they not telling you? This is just another addition to the huge string of laws recently forced upon us by corrupt governments and corporations to take away our liberties. For what? Money, as always.</p>
<p>What makes this law so bad? I just want to highlight a few points. I <a href="http://arstechnica.com/news.ars/post/20080916-100-groups-demand-to-see-secret-anticounterfeiting-treaty.html">quote ars technica</a> with the following details with what the treaty may cause:</p>
<ul>
<li>Require Internet Service Providers to monitor all consumers&#8217; Internet communications, terminate their customers&#8217; Internet connections based on rights-holders&#8217; repeated allegation of copyright infringement, and divulge the identity of alleged copyright infringers possibly without judicial process</li>
<li>Interfere with fair use of copyrighted materials</li>
<li>Criminalize peer-to-peer file sharing</li>
<li>Interfere with legitimate parallel trade in goods, including the resale of brand-name pharmaceutical products</li>
<li>Impose liability on manufacturers of active pharmaceutical ingredients (APIs), if those APIs are used to make counterfeits</li>
<li>Improperly criminalize acts not done for commercial purpose and with no public health consequences</li>
<li>Improperly divert public resources into enforcement of private rights</li>
</ul>
<p>What does this mean for the average computer user? Peer-to-peer (<acronym title="Peer to Peer">P2P</acronym>) file sharing will become unlawful, knocking out a huge chunk of collaborative file sharing, including Bittorrent. Some may consider this a good thing &#8211; after all, files are often unlawfully distributed using these services. But <em>not always</em>. Venues like bittorrent help reduce costs by allowing for the <em>legal distribution</em> of files, such as <a href="http://fsf.org">free software</a> or your own personal files. Corporations also use it to cut costs of file distribution (let&#8217;s take the popular example of Blizzard&#8217;s use of bittorrent to distribute World of Warcraft files to their users).</p>
<p>File sharing itself is not illegal! It is how some use it is that is. You should not criminalize an entire right for the sake of hindering pirates, which will simply find another venue. Crackers use computers to steal account information and steal identities &#8211; why not make computers illegal? The internet&#8217;s being used to download all these illegal files, why not abolish the internet? How soon before they begin taking away additional rights simply so corporations will stop fussing because <em>their multi-billion profits are not enough</em>?</p>
<p>Think of this like prohibition. The law was repealed because you cannot force people to behave. You cannot take away the right to free will &#8211; people will do what they want despite the laws. It&#8217;s the same with drugs &#8211; they&#8217;re illegal, yet still used. And what do we do? Waste countless tax dollars putting druggies in prison while that space and money could be put to much better use to catch <em>actual criminals!</em> (I highly recommend <a href="http://www.last.fm/music/System+of+a+Down/_/Prison+Song/+lyrics">reading the lyrics to Prison Song by System of a Down</a> for an excellent demonstration of this point.)</p>
<p>If this law passes &#8211; what will happen? The &#8220;good guys&#8221; will get screwed. We will be down a major, cheap venue for distributing our software when we may not have the money or resources to use other services. Businesses and corporations will also be forced to pay higher distribution costs. What about the pirates? What about those who are actually breaking the law? That won&#8217;t stop them. Hell, it may not even hinder them. They&#8217;ll come up with another method before the law is even passed. There already <em>are</em> plenty of other methods that are not <acronym title="Peer to Peer">P2P</acronym>. You are loosing your right because others do not know how to behave and it&#8217;s <em>not even going to stop them!</em></p>
<p>If you don&#8217;t know what <acronym title="Digital Restrictions Management">DRM</acronym> is yet (which may be surprising considering how often it is seen all over this website), I encourage you <a href="http://www.defectivebydesign.org/what_is_drm">to take a look</a>. Digital Right Management, more appropriately called Digital <em>Restrictions</em> Management, is seen all over, and is growing. With <acronym title="Digital Restrictions Management">DRM</acronym>, your computer, your devices, your software tells <em>you</em> what to do. It says, &#8220;oh, I don&#8217;t want you to do that&#8221; or &#8220;oh, you can only play this song this many times&#8221;. It restricts you. You should tell your computer what to do, <em>not</em> the other way around. It&#8217;s just another ploy to further remove our rights &#8211; to control our lives.</p>
<p>This treaty would enforce the use of <acronym title="Digital Restrictions Management">DRM</acronym>. You would not be able to buy any music that is not encrypted with <acronym title="Digital Restrictions Management">DRM</acronym> &#8211; meaning you cannot share it with your friends, you can&#8217;t transfer it to another device without your computer&#8217;s permission, and sometimes <em>if you upgrade your computer you will be denied the right to listen to your own music!</em> You will also only be able to play the music on <acronym title="Digital Restrictions Management">DRM</acronym>-compatible devices. Free software cannot play <acronym title="Digital Restrictions Management">DRM</acronym>-encrypted music. You will be eating out of the palms of the corporations.</p>
<p>I&#8217;m sure many recognize the recent release of the game Spore by EA Games. It was a very controversial release because it incorporated <acronym title="Digital Restrictions Management">DRM</acronym> to a ridiculous degree, needing to &#8220;call home&#8221; every once in a while (it may have been 10 days) to re-activate. This means that in the future, once the activation server was taken down, Spore would no longer be playable. It was as if you were renting the game, not purchasing it. Because EA tried to control its users, they ended up <a href="http://games.slashdot.org/article.pl?sid=08/12/06/0734206&amp;tid=95">making Spore the most pirated game of 2008</a> &#8211; exactly the opposite effect they had intended. The point &#8211; you cannot control people. They will rebel. You need to focus on the problem under the peoples&#8217; own terms or you&#8217;ll just make things worse. Now imagine what something like the ACTA will do. Probably make things worse.</p>
<p>Let&#8217;s not forget about the mention of ISPs (Internet Service Providers) monitoring their customers&#8217; connections for illegal material. Such plans are already attempting to be forced upon the users of other countries, such as the UK and Australia. What does this mean? Well, putting aside the fact that you are being <em>spied on without a warrant</em>, the software used to track your connection will <em>slow down your connection speeds</em>. This affects everyone &#8211; regardless of whether or not you are doing anything illegal. As if the connection monitoring wasn&#8217;t bad enough.</p>
<p><strong>The world&#8217;s governments need to prioritize and stop taking from us our liberties! </strong>Before you know it, they&#8217;ll all be gone. You have to help put a stop to it before it&#8217;s too late &#8211; before you wake up one morning and realize you have nothing left and are powerless to do anything about it. Stop letting your government and your corporations boss you around. Some may not think technology right are such a big deal &#8211; but keep in mind. Technology already rules society, and it&#8217;s only going to continue to take more control. We&#8217;re becoming increasingly dependant on technology and we cannot allow it to enslave us.</p>
<p><a href="http://arstechnica.com/news.ars/post/20080916-100-groups-demand-to-see-secret-anticounterfeiting-treaty.html">Please read more information about this treaty here.</a></p>]]></content:encoded>
			<wfw:commentRss>http://mikegerwitz.com/defend-your-liberties-speak-against-acta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RaLink Wireless &#8211; Random Disconnects (No ProbeResp)</title>
		<link>http://mikegerwitz.com/ralink-wireless-random-disconnects-no-proberesp/</link>
		<comments>http://mikegerwitz.com/ralink-wireless-random-disconnects-no-proberesp/#comments</comments>
		<pubDate>Wed, 15 Oct 2008 10:32:25 +0000</pubDate>
		<dc:creator>Mike Gerwitz</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.mikegerwitz.com/2008/10/15/ralink-wireless-random-disconnects-no-proberesp/</guid>
		<description><![CDATA[Some time ago, while using Gentoo, I modified the kernel to stop a wireless problem I had been having and forgot to make a post about it. Now, I&#8217;ve switched by to Ubuntu (didn&#8217;t have time to administer Gentoo and compile everything, and I missed Ubuntu). Luckily, version 8.10 BETA was released just a few [...]]]></description>
			<content:encoded><![CDATA[<p>Some time ago, while using Gentoo, I modified the kernel to stop a wireless problem I had been having and forgot to make a post about it. Now, I&#8217;ve switched by to Ubuntu (didn&#8217;t have time to administer Gentoo and compile everything, and I missed Ubuntu). Luckily, version 8.10 BETA was released just a few days earlier and I was able to upgrade, getting the 2.6.27 kernel (required so my computer wouldn&#8217;t randomly shut down (other computers may freeze instead) due to the drivers, while the net was in use).</p>
<p>For settings up RaLink drivers for your wireless device, please see a previous entry: <a href="http://www.mikegerwitz.com/2008/08/30/rt61-rt2x00-ralink-linux-driver-installation/">RT61 / RT2×00 RaLink Linux Driver Installation</a></p>
<p>In many previous kernel versions, including 2.6.27, my wireless would randomly go down. I checked <tt>dmesg | tail</tt> and found that I received the following error:</p>
<pre>
[41884.647257] wlan0: authenticate with AP 00:15:e9:76:1a:ee
[41884.658208] wlan0: authenticated
[41884.658208] wlan0: associate with AP 00:15:e9:76:1a:ee
[41884.668257] wlan0: RX ReassocResp from 00:15:e9:76:1a:ee (capab=0x431 status=0 aid=5)
[41884.668257] wlan0: associated
[41892.844239] wlan0: no IPv6 routers present
[68822.729255] wlan0: No ProbeResp from current AP 00:15:e9:76:1a:ee - assume out of range
</pre>
<p>For more information, please see my posts in the following bug report:<br />
<a href="https://bugs.launchpad.net/ubuntu/+source/linux/+bug/200500">https://bugs.launchpad.net/ubuntu/+source/linux/+bug/200500</a><br />
<a href="https://bugs.launchpad.net/ubuntu/+source/linux/+bug/200500/comments/35">https://bugs.launchpad.net/ubuntu/+source/linux/+bug/200500/comments/35</a></p>
<p>Within the bug report, a link was referenced to modify the kernel, increasing the amount of time to wait for a response, so it doesn&#8217;t assume it&#8217;s out of range and disconnect. The problem is &#8211; the file to edit didn&#8217;t exist anymore in 2.6.27:</p>
<p><a href="http://rt2x00.serialmonkey.com/phpBB/viewtopic.php?f=5&amp;t=2081&amp;p=30312&amp;hilit=No+ProbeResp+from+current+AP#p30312" rel="nofollow">http://<wbr></wbr>rt2x00.<wbr></wbr>serialmonkey.<wbr></wbr>com/phpBB/<wbr></wbr>viewtopic.<wbr></wbr>php?f=5&amp;<wbr></wbr>t=2081&amp;<wbr></wbr>p=30312&amp;<wbr></wbr>hilit=No+<wbr></wbr>ProbeResp+<wbr></wbr>from+current+<wbr></wbr>AP#p30312</a></p>
<p>First, you must obtain your kernel source. In gentoo, emerge the vanilla or gentoo sources. In Ubuntu, run the following commands (taken and modified from https://help.ubuntu.com/community/Kernel/Compile):</p>

<div class="wp_codebox"><table><tr id="p4013"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p40code13"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">su</span>
<span style="color: #666666; font-style: italic;"># (Enter root password - if it's not set, run &quot;sudo su&quot; instead)</span>
$ <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> linux-source
$ <span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>src
$ <span style="color: #c20cb9; font-weight: bold;">tar</span> xjvf <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>src<span style="color: #000000; font-weight: bold;">/</span>linux-source-<span style="color: #000000; font-weight: bold;">*</span>.tar.bz2
$ <span style="color: #7a0874; font-weight: bold;">cd</span> linux-source-<span style="color: #000000; font-weight: bold;">*</span>
$ <span style="color: #c20cb9; font-weight: bold;">vi</span> .<span style="color: #000000; font-weight: bold;">/</span>net<span style="color: #000000; font-weight: bold;">/</span>mac80211<span style="color: #000000; font-weight: bold;">/</span>mlme.c <span style="color: #666666; font-style: italic;">#or use your favorite text editor</span></pre></td></tr></table></div>

<p>In the file <tt>mlme.c</tt>, find the following line:</p>

<div class="wp_codebox"><table><tr id="p4014"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p40code14"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#define IEEE80211_MONITORING_INTERVAL (2 * HZ)</span></pre></td></tr></table></div>

<p>Modify it so it looks like this (we&#8217;re changing the &#8220;2&#8243; to &#8220;100&#8243;):</p>

<div class="wp_codebox"><table><tr id="p4015"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p40code15"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#define IEEE80211_MONITORING_INTERVAL (100 * HZ)</span></pre></td></tr></table></div>

<p>Save and close the file. Let&#8217;s get to building it. With Gentoo, you would simply run &#8220;make &amp;&amp; make modules_install&#8221;, navigate to &#8220;arch/your_arch/boot&#8221;, find the image, and copy it to /boot. Then modify GRUB/Lilo accordingly. Since Gentoo users probably know what they&#8217;re doing, I&#8217;ll focus on Ubuntu, which I recently figured out how to do via the above wiki. Ubuntu does it oddly.</p>
<p>Using the commands in the wiki, I had some trouble. It was trying to build using the &#8220;xen&#8221; archeticture &#8211; definatly not what I have. I wanted amd64 (which is x86_64 in the eyes of the kernel). So, I added the &#8211;arch option to the below commands. Be sure to specify YOUR architecture (such as i386). Also note the &#8211;apend-to-version line. This will append text to the kernel version (which&#8217;ll show up in <tt>uname -r</tt>). Remove it if you don&#8217;t want anything. If you do, modify the text in the command.</p>
<p><strong>Multi-core/multiple processors: </strong>If you have multiple processors or cores (such as dual-core), type the following command before continuing, replacing the number with <tt>1 + number of processors/cores</tt>. This will increase the compiling speed (trust me, you want that) by utilizing all available processors/cores. If you&#8217;re busy doing something else, you may wish not to set it, so your computer doesn&#8217;t slow down too much.</p>

<div class="wp_codebox"><table><tr id="p4016"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p40code16"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Do this only if you have multiple processors (see above paragraph)</span>
$ <span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">CONCURRENCY_LEVEL</span>=<span style="color: #000000;">3</span></pre></td></tr></table></div>


<div class="wp_codebox"><table><tr id="p4017"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p40code17"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #660033;">-vi</span> <span style="color: #000000; font-weight: bold;">/</span>boot<span style="color: #000000; font-weight: bold;">/</span>config-<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">uname</span> -r<span style="color: #000000; font-weight: bold;">`</span> .config <span style="color: #666666; font-style: italic;">#copy current configuration to use when building kernel</span>
$ make-kpkg <span style="color: #660033;">--arch</span>=amd64 clean
$ fakeroot make-kpkg <span style="color: #660033;">--arch</span>=amd64 <span style="color: #660033;">--initrd</span> <span style="color: #660033;">--append-to-version</span>=-some-string-here kernel-image kernel-headers</pre></td></tr></table></div>

<p>Go grab something to eat, watch TV, throw pebbles at young children &#8211; something to pass the time. It&#8217;ll take a while.</p>
<p>After it is complete, in Ubuntu, this will have created *.deb files and placed them in the parent directory (in this case, /usr/src). Let&#8217;s install them!</p>

<div class="wp_codebox"><table><tr id="p4018"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p40code18"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">echo</span> vesafb <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">tee</span> <span style="color: #660033;">-a</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>initramfs-tools<span style="color: #000000; font-weight: bold;">/</span>modules
$ <span style="color: #7a0874; font-weight: bold;">echo</span> fbcon <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">tee</span> <span style="color: #660033;">-a</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>initramfs-tools<span style="color: #000000; font-weight: bold;">/</span>modules
$ <span style="color: #c20cb9; font-weight: bold;">dpkg</span> <span style="color: #660033;">-i</span> linux-<span style="color: #000000; font-weight: bold;">*</span>.deb</pre></td></tr></table></div>

<p>After that, check out the following link for building the restricted modules:<br />
<a href="https://help.ubuntu.com/community/CustomRestrictedModule">https://help.ubuntu.com/community/CustomRestrictedModules</a></p>
<p>Then, of course, modify GRUB to boot the new image. Good luck!</p>]]></content:encoded>
			<wfw:commentRss>http://mikegerwitz.com/ralink-wireless-random-disconnects-no-proberesp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Warmer Weather</title>
		<link>http://mikegerwitz.com/warmer-weather/</link>
		<comments>http://mikegerwitz.com/warmer-weather/#comments</comments>
		<pubDate>Tue, 08 Apr 2008 23:27:39 +0000</pubDate>
		<dc:creator>Mike Gerwitz</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[MyCustomBB]]></category>

		<guid isPermaLink="false">http://www.mikegerwitz.com/2008/04/08/warmer-weather/</guid>
		<description><![CDATA[Ah &#8211; the weather in NY is finally starting to look up. I&#8217;m sure it&#8217;ll be a while yet before it is consistantly warm, however it gives me a wonderful glimpse of how things will be. In spring/summer, the quality of my work (as well as quantity) tends to increase. Hopefully this means MyCustomBB will [...]]]></description>
			<content:encoded><![CDATA[<p>Ah &#8211; the weather in NY is finally starting to look up. I&#8217;m sure it&#8217;ll be a while yet before it is consistantly warm, however it gives me a wonderful glimpse of how things will be. In spring/summer, the quality of my work (as well as quantity) tends to increase. Hopefully this means MyCustomBB will start to grow a bit more quickly than it has been.</p>]]></content:encoded>
			<wfw:commentRss>http://mikegerwitz.com/warmer-weather/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

