<?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>Adam Fourney</title>
	<atom:link href="http://www.adamfourney.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.adamfourney.com</link>
	<description></description>
	<lastBuildDate>Thu, 25 May 2017 04:18:33 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.7.5</generator>
	<item>
		<title>Using the Arduino Uno as a Lego Mindstorms NXT Sensor (with Galvanic Isolation of the I2C Serial Bus)</title>
		<link>http://www.adamfourney.com</link>
		<comments>http://www.adamfourney.com/news/using-the-arduino-uno-as-a-lego-mindstorms-nxt-sensor-with-galvanic-isolation/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 18:56:31 +0000</pubDate>
		<dc:creator><![CDATA[afourney]]></dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Galvanic Isolation]]></category>
		<category><![CDATA[i2c]]></category>
		<category><![CDATA[LeJOS]]></category>
		<category><![CDATA[Mindstorms]]></category>
		<category><![CDATA[NXT]]></category>

		<guid isPermaLink="false">http://www.adamfourney.com/?p=465</guid>
		<description><![CDATA[There are many fantastic online tutorials describing how to interface a Lego Mindstorms NXT robot with the Arduino microcontroller, and there are several reasons for this project&#8217;s popularity. First, the NXT actually uses an AVR microcontroller internally for IO, so interfacing with these devices is easy! Second, the Arduino makes it fantastically inexpensive to add <a href="http://www.adamfourney.com/news/using-the-arduino-uno-as-a-lego-mindstorms-nxt-sensor-with-galvanic-isolation/">[...]</a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.adamfourney.com/wp-content/uploads/2012/02/arduino_nxt.png"><img class="alignleft size-medium wp-image-476" title="arduino_nxt" src="http://www.adamfourney.com/wp-content/uploads/2012/02/arduino_nxt-300x199.png" alt="" width="300" height="199" srcset="http://www.adamfourney.com/wp-content/uploads/2012/02/arduino_nxt-300x199.png 300w, http://www.adamfourney.com/wp-content/uploads/2012/02/arduino_nxt.png 835w" sizes="(max-width: 300px) 100vw, 300px" /></a><br />
There are many fantastic online tutorials describing how to interface a Lego Mindstorms NXT robot with the Arduino microcontroller, and there are several reasons for this project&#8217;s popularity. First, the NXT actually uses an AVR microcontroller internally for IO, so interfacing with these devices is easy! Second, the Arduino makes it fantastically  inexpensive to add sensors to NXT. For example, you can buy an Arduino compatible <a href="http://www.adafruit.com/products/163">3-axis accelerometer from Adafruit Industries for $20.00</a>, whereas a <a href="http://shop.lego.com/en-CA/Accelerometer-Sensor-for-MINDSTORMS-NXT-2852724">Lego accelerometer costs $70.00</a>.</p>
<p>So why am I publishing yet another tutorial on this topic? Well, <strong> I am not an electrical engineer</strong>. I make tonnes of wiring mistakes, and I should have killed my Arduino many times over by now. This is acceptable for a $27 microcontroller platform, but not for the Lego Mindstorms (which is an order of order of magnitude more expensive). So I set out to find a safe way to isolate Arduino wiring errors from the Lego controller brick.</p>
<h3>Watchword: Galvanic Isolation</h3>
<p>So we want the Arduino to talk to the Lego Mindstorms, but we don&#8217;t want shorts and other errors to propagate to the Lego device. This is the perfect situation for something called Galvanic Isolation. Quoting <a href="http://en.wikipedia.org/wiki/Galvanic_isolation">Wikipedia</a>:</p>
<blockquote><p>Galvanic isolation is a principle of isolating functional sections of electrical systems, thus preventing the movement of charge-carrying particles from one section to another, i.e. no direct current flows between the sections. Information can still be exchanged between the sections by other means, e.g. capacitance, induction or electromagnetic waves, or by optical, acoustic or mechanical means.</p></blockquote>
<p>So, galvanic isolation allows information to be exchanged without the exchange of electrons. This is exactly what we need.</p>
<h3>I2C Serial Communication</h3>
<p>Ok, so we know we want galvanic isolation to protect the NXT from the Arduino &#8212; but what kind of communication needs to take place? Well, it turns out that the Lego NXT brick uses the <a href="http://en.wikipedia.org/wiki/I2C">I2C serial bus</a> for low-speed (9600 bps) communication with some advanced sensors (e.g., the <a href="http://shop.lego.com/en-US/Ultrasonic-Sensor-9846">ultrasonic rangefinder</a>). Fortunately for us, the Arduino can also speak I2C with the help of the built-in <a href="http://arduino.cc/it/Reference/Wire">wire.h</a> library. There are many tutorials describing how this can be accomplished.</p>
<p>So how do we galvanically isolate the I2C serial bus? Well there are actually several approaches for this (e.g., see the article <a href="http://www.eetimes.com/design/embedded/4025023/Opto-electrical-isolation-of-the-I2C-Bus">Opto-electrical isolation of the I2C-Bus</a>). Many of these approaches are complex, and require a number of components. Fortunately, there are several one-chip solutions. In this article, I use the <a href="http://www.silabs.com/applications/industrial/Pages/i2c-isolation.aspx">Silicon labs Si8400</a>, but I have heard reports that <a href="http://www.analog.com/en/interface/digital-isolators/adum1250/products/product.html">Analog Device&#8217;s ADUM1250</a> is pin compatible (Thanks Anton for pointing this out!).  </p>
<p><center><strong>Here&#8217;s how we can use the Si8400AA-B-IS to connect the Arduino to the NXT</strong>:</center><br />
<a href="http://www.adamfourney.com/wp-content/uploads/2012/02/schematic.png"><img src="http://www.adamfourney.com/wp-content/uploads/2012/02/schematic_small.png" alt="" title="schematic_small" width="550" height="184" class="aligncenter size-full wp-image-500" /></a></p>
<p><strong style="color: red">Note 1</strong>:   The NXT&#8217;s I2C interface has some very peculiar requirements &#8212; namely, the use of very high 82K Ohm pull-up resistors.</p>
<p><strong style="color: red">Note 2</strong>: In this schematic there are no pull-up resistors on the Arduino side. This is because Arduino&#8217;s wire.h library enables the AVR atmega&#8217;s internal pull-up resistors.</p>
<p><center><strong>Here is a video of the device in action:</strong></center><br />
<center><iframe width="560" height="315" src="http://www.youtube.com/embed/BUwGB3tCfSs" frameborder="0" allowfullscreen></iframe></center></p>
<p><center><strong>And here is a close-up of the prototype board:</strong></center><br />
<a href="http://www.adamfourney.com/wp-content/uploads/2012/02/i2c_isolator_2.jpg"><img class="aligncenter size-medium wp-image-475" title="Mindstorms NXT Isolator" src="http://www.adamfourney.com/wp-content/uploads/2012/02/i2c_isolator_2-300x198.jpg" alt="" width="300" height="198" srcset="http://www.adamfourney.com/wp-content/uploads/2012/02/i2c_isolator_2-300x198.jpg 300w, http://www.adamfourney.com/wp-content/uploads/2012/02/i2c_isolator_2.jpg 1000w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p><strong style="color: red">Note 3</strong>:   The Si8400 is only available in the SOIC-8 surface mount package form. You will need a SOIC-to-DIP breakout board (e.g., see <a href="http://www.schmartboard.com/index.asp?page=products_smttodip&amp;id=448">ShmartBoard</a>&#8216;s offerings) to use this chip in standard 0.1&#8243; perfboard.</p>
<h3>Arduino Code</h3>
<pre>
/*
  * Adapted from Gatsu's post on Arduino's forums:
  * http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1262353163
  */
#include &lt;Wire.h&gt;

int ADDRESS = 0x43;   // The Arduino's I2C Address

uint8_t SensorVersion[9]  =    "V0.1    ";
uint8_t SensorName[9]     =    "Arduino ";
uint8_t SensorType[9]     =    "Exprmntl";

byte x = 0;
byte val = 0;
byte sendbuffer[] = {0};

void setup() {
    Wire.begin(ADDRESS);
    Wire.onReceive(receiveEvent); 
    Wire.onRequest(requestEvent);
}

void loop() {
  // This could be any code used to read a sensor.
  // In this simple example, we just count up once a second
  val++;
  delay(1000);
}

void receiveEvent(int howMany) {
    if (Wire.available() &gt;0 ) {
        x = Wire.read(); // receive register address (1 byte)
    }
}

void requestEvent() { 
    if (x == 0x00) {   
        Wire.write(SensorVersion, 8); 
    } 
    else if (x == 0x08) {   
        Wire.write(SensorName, 8); 
    }
    else if (x == 0x10) {
        Wire.write(SensorType, 8); 
    }
    else if (x == 0x42) {
        sendbuffer[0] = val;
        Wire.write(sendbuffer, 1); 
    }
}</pre>
<h3>Mindstorms Code (LeJOS 0.9)</h3>
<p><strong style="color: red">Note 4</strong>: This code reports a &#8220;Bus Error&#8221; whenever the NXT cannot find the Arduino on the serial bus. There are a variety of potential causes for this error. In my experience, the first problem to rule out is that of mismatching I2C addresses. <span style="color: red">Due to some addressing incompatibilities, the LeJOS code must address the Arduino at an address which is twice the value declared in the Arduino code (i.e., left shifted one bit).</span> See the comments in the code below for more details.<br />
</p>
<p><strong style="color: red">Note 5</strong>: The latest LeJOS build (v0.9.1) changed the LeJOS API <em>again</em>. The necessary changes are documented below.</p>
<pre>import lejos.nxt.*;

public class TalkToArduino {

     /* The Lego/NXT uses 8-bit I2C addresses in the range 0x02-0xFE,
      * where the low bit is always zero. Many devices (like the Arduino) 
      * use 7-bit addresses in the range 0x01-0x7F. To compensate, 7-bit
      * addresses must be shifted left one place (multiplied by 2).
      * This issue cost me hours of frustration.
      */
    private static int ARDUINO_ADDRESS = 0x43 &lt;&lt; 1;

    public static void main (String[] args) { 
        I2CSensor arduino = new I2CSensor(SensorPort.S1); 
        arduino.setAddress(ARDUINO_ADDRESS);

        byte [] buf = new byte[1];
        buf[0] = 0;

        LCD.setAutoRefresh(false);

        while(!Button.ESCAPE.isPressed()){
            LCD.clear();
            int result = arduino.getData(0x42, buf, 1);  

            if (result == -5) {
                LCD.drawString("Not connected", 0, 0);
            }
            else if (result == -3) {
                LCD.drawString("Bus error", 0, 0);
            }
            else {		           
                LCD.drawString("Name:    " + arduino.getProductID(), 0, 0);

		// If LeJOS version 0.9, then use this line                     
                LCD.drawString("Type:    " + arduino.getSensorType(), 0, 1);
                
                // Else if LeJOS version 0.9.1 and above, then use this line instead of the previous                     
                // LCD.drawString("Vendor: " + arduino.getVendorID(), 0, 1);
                
                LCD.drawString("Version: " + arduino.getVersion(), 0, 2);
                LCD.drawString("===============", 0, 3);
                LCD.drawString("Value: " +  buf[0], 0, 4);
            }

            LCD.refresh();
            try{Thread.sleep(100);}catch(Exception e) {}
        }
    }
}</pre>
<h3>Other resources</h3>
<ul>
<li><a href="http://lejos.sourceforge.net/">LeJOS Website</a></li>
<li><a href="http://arduino.cc/it/Reference/Wire">Arduino <em>wire.h</em> library documentation</a></li>
<li><a href="http://en.wikipedia.org/wiki/Lego_Mindstorms_NXT#Connector">Wikipedia Lego NXT Entry (with cable pinout)</a></li>
<li><a href="http://ca.mouser.com/ProductDetail/Silicon-Labs/Si8400AA-B-IS/?qs=sGAEpiMZZMttmiwpWlqA07VlqNbTvxXs">Si8400 on Mouser</a></li>
<li><a href="http://search.digikey.com/ca/en/products/ADUM1250ARZ/ADUM1250ARZ-ND/1242409">ADUM1250 on Digikey</a></li>
<li><a href="http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1262353163">Arduino as Lego Mindstorms NXT RC Sensor (Arduino Forums)</a></li>
<li><a href="http://www.bartneck.de/2010/01/25/results-lego-beyond-toys-3/">Lego Beyond Toys (Several projects in the 2009 offering use Arduino)</a><br /> &#8212; PS: I like the WordPress theme they chose!</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.adamfourney.com/news/using-the-arduino-uno-as-a-lego-mindstorms-nxt-sensor-with-galvanic-isolation/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Ardour: An Example of Why FOSS Usability Can Be Hard</title>
		<link>http://www.adamfourney.com</link>
		<comments>http://www.adamfourney.com/cs889/ardour-an-example-of-why-foss-usability-cab-be-hard/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 14:20:51 +0000</pubDate>
		<dc:creator><![CDATA[afourney]]></dc:creator>
				<category><![CDATA[CS889: Open Source Usability]]></category>
		<category><![CDATA[Open Source Usability]]></category>

		<guid isPermaLink="false">http://www.adamfourney.com/?p=294</guid>
		<description><![CDATA[In a previous post I mentioned hearing a very interesting interview with Paul Davis, the head developer of Ardour (a FOSS digital audio workbench) on the FLOSS Weekly podcast. In this interview conducted by Leo Laporte and Jono Bacon, Paul Davis explains how interfaces can become overly complicated when trying to appease many expert users, <a href="http://www.adamfourney.com/cs889/ardour-an-example-of-why-foss-usability-cab-be-hard/">[...]</a>]]></description>
				<content:encoded><![CDATA[<p>In a previous post I mentioned hearing a very interesting interview with Paul Davis, the head developer of Ardour (a FOSS digital audio  workbench) on the <a href="http://twit.tv/floss86">FLOSS Weekly podcast</a>. In this interview conducted by Leo Laporte and Jono Bacon,  Paul Davis explains how interfaces can become overly complicated when trying to appease many expert users, and why (despite Ardour&#8217;s modular design), changing out the front-end is not  as easy as it sounds. In fact, these issues directly reflect on Mattew Paul Thomas&#8217; points 10 and 14 in his post &#8220;<a href="http://mpt.net.nz/archive/2008/08/01/free-software-usability">Why Free Software has poor usability, and how to improve it</a>&#8220;. Let me quote those two points directly so that we&#8217;re all on the same page.<strong> </strong></p>
<blockquote><p><em>&#8220;10. Placating people with options. In any software project with multiple contributors, sometimes they will disagree on a design issue. Where the contributors are employees, usually they’ll continue work even if they disagree with the design. But with volunteers, it’s much more likely that the project maintainer will agree to placate a contributor by adding a configuration setting for the behavior in question. The number, obscurity, and triviality of such preferences ends up confusing ordinary users, while everyone is penalized by the resulting bloat and reduced thoroughness of testing.&#8221;</em> &#8212; mpt</p></blockquote>
<p>And,</p>
<blockquote><p><em>&#8220;14. Mediocrity through modularity. Free software hackers prize code reuse. Often they talk of writing code to perform a function, so that other programmers can write a “front end” (or multiple alternative “front ends”) to let humans actually use it. They consider it important to be able to swap out any layer of the system in favor of alternative implementations.</em><em><br />
</em></p>
<p><em><br />
This is good for the long-term health of a system, because it avoids relying on any single component. But it also leads to a lack of integration which lessens usability, especially if the interfaces between the layers weren’t designed with usability in mind.</em><em>&#8221; &#8212; </em>mpt<em><br />
</em></p></blockquote>
<p>Ok,  keeping those points in mind, have a look at the following partial transcript of Paul Davis&#8217; interview. Note, Paul is cognizant  of the issues, but the problems remain quite challenging to overcome. (Sorry for any transcription errors. This interview is just  filled with amazing points on usability!)</p>
<blockquote><p><strong>[Starting at 8:44]</strong><br />
<strong>Jono</strong>: So, with Ardour &#8212; I come from a Q-base background. I use  Q-base in my studio, and I&#8217;ve always found it pretty easy to use, and  I&#8217;ve never really got on with pro-tools either; I found it a little bit  too complex &#8212; I remember a while back I evaluated Ardour as an option  to move over to Linux, and I found it very very complex. Is the back-end  and the front-end sufficiently separated so you can kind of put some  lipstick on it and make it easy to use.</p>
<p><strong>Paul</strong>: Yes. You absolutely can. … And so it&#8217;s quite possible to  imagine that, if somebody wanted to put the work into making a super  simplified version of an Ardour interface, then you could do that still  based on that back-end.</p>
<p><strong>Jono</strong>: And is that a project that you are actively working on.  Because, I tried Ardour fairly recently. I&#8217;m running the development  version of Ubuntu and I installed it from Ubuntu, so it&#8217;s a pretty  recent release. And I still found I could feel my eyeballs spinning  around due to the complexity of the interface. Like I don&#8217;t care about  bits and streams and any of these details. I just want to record music.</p>
<p><strong>Paul</strong>: No it&#8217;s not a direction that currently I or any of the  other developers are really paying too much attention to. We are very  focused on workflow issues. Which is where people can identify specific  tasks that they need to perform with the software. We definitely want to  make sure that the task is accomplishable with a minimal number of  mouse clicks and keyboard operations and so-on.</p>
<p>But, the general goal of trying to create a program that, for example  is as easy to use as GrarageBand, which I think is a very nicely  designed program for people who are new to this sort of stuff, that&#8217;s  not a goal that we have right now. I think its quite a difficult problem  to solve.</p>
<p><span style="color: #ff0000;">My  experience so far has been that most people who use digital audio  workstations have a list of things that they would like to be able to do  very easily, and they believe that the program that is before them  ought to do those things very easily. And they are right. The problem is  that there is a whole bunch of other people who have their own list of  things that it ought to be able to do very easily and straightforwardly.  And, when you take the union of all these lists, you end up with a  program that looks like pro-tools or like Ardour.</span></p>
<p><span style="color: #ff0000;">So  you end up having to make some choices at some point where you  say,  okay we are absolutely not going to cater to the following types of  goals. We are going to limit it entirely to this set of things. And my  experience so far is that when you do that you immediately run into the  wrath of the user who says &#8216;well it was great, I got started nice and  quickly and I understood how to use it but it doesn&#8217;t do this ?!? Are  you crazy?&#8217;</span></p>
<p>So we haven&#8217;t really resolved that and for the moment we&#8217;re happier  working on Ardour 3.0, which we can talk about as we roll along, as  apposed to figuring out how we can build a really simple interface that  is sort-of roughly equivalent to GarageBand. I think another way to put  it is that for me, in the back of my head, I&#8217;m writing Ardour catering  to audio engineers or musicians who have audio engineering skills. I&#8217;m  not really writing it with the idea of targeting musicians who just  don&#8217;t do that sort of thing.</p>
<p><strong>Jono</strong>: So just to clarify, you&#8217;re kind of going for the  professional and the semi-professional audio engineer. Kind of, those  people who are passionate about audio. People who want to produce bands  professionally, as opposed to kind-of the hobbyists with a laptop who  just wants to put down some guitar riffs.</p>
<p><strong>Paul</strong>: Yes. Yeah, that&#8217;s certainly our general goal. And I  would say that I&#8217;m quite happy to come across quite significant amounts  of feedback from new users who do report back to us saying &#8216;Oh, it was  really great. I just clicked a few buttons and it all worked&#8217;. Certainly  we are happy when that happens, but there is not a lot of effort going  into making things really easy for that second group that you mentioned.</p>
<p><strong>Jono</strong>: Some time ago, when I was looking into Ardour, and I  thought it was a bit too complicated, I formed a project called Jokosher  &#8212; a simplified multitrack editor. I&#8217;m really interested int he fact  that you said that the back-end is completely separate. Because Jokosher  was kind of build from the perspective of just throw away all the  assumed knowledge of audio engineering and think of it from a completely  new usability standpoint. So are you saying that we could conceivably  take Jokosher interface and hook into the Ardour back-end?</p>
<p><strong>Paul</strong>: Yes. You can do that. In fact, there is already a  project whose name I wish I could give you right now but I can&#8217;t. There  is a project that took libardour &#8212; which is basically our back-end &#8212;  and I think that that project has died. There is no activity with it  now. But they were attempting to build a completely modular workstation  system where, rather than everything being one program, there were  completely separate applications with their own windows and so-on. And  that was built on Ardour&#8217;s back-end. (…)</p>
<p><span style="color: #ff0000;">So  yeah. It&#8217;s completely possible to do that. The only thing I would say is  that, of the current code-base of Ardour, approximately 75% of all the  code  is the GUI. So, once you get up to talking about a fairly rich  user interface with lots of things that pop up and bits that control  ability, you will will probably get into a situation where you realize  that the back-end is actually not that much code. And, the really hard  work is actually implementing the user interface.</span></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.adamfourney.com/cs889/ardour-an-example-of-why-foss-usability-cab-be-hard/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FOSS Usability</title>
		<link>http://www.adamfourney.com</link>
		<pubDate>Wed, 16 Jun 2010 14:55:56 +0000</pubDate>
		<dc:creator><![CDATA[afourney]]></dc:creator>
				<category><![CDATA[CS889: Open Source Usability]]></category>

		<guid isPermaLink="false">http://www.adamfourney.com/?p=284</guid>
		<description><![CDATA[I&#8217;m excited about today&#8217;s CS849 class &#8212; it&#8217;s the first class all semester that specifically deals with usability issues that emerge in FOSS software and culture. I&#8217;m leading the discussion of several high profile blog postings on this topic. These blog postings, and their connections to one another are as follows (notably not in chronological <a href="http://www.adamfourney.com/cs889/foss-software-usability/">[...]</a>]]></description>
				<content:encoded><![CDATA[<p>I&#8217;m excited about today&#8217;s <a href="http://hci.uwaterloo.ca/courses/CS889/S10/">CS849</a> class &#8212; it&#8217;s the first class all semester that specifically deals with usability issues that emerge in FOSS software and culture. I&#8217;m leading the discussion of several high profile blog postings on this topic. These blog postings, and their connections to one another are as follows (notably <strong>not</strong> in chronological order):</p>
<p>The story begins with Eric S. Raymond trying to configure CUPS (Common Unix Printing System) to print to a shared printer cue on a remote machine. In the process, Raymond became frustrated with the usability issues of this process, and so he decided to write the essay &#8220;<a href="http://catb.org/~esr/writings/cups-horror.html">The Luxury of Ignorance: An Open-Source Horror Story</a>&#8220;. In this essay, Raymond describes some legitimate usability issues; but the tone of the essay was highly condescending to almost everyone. Repeatedly he describes the need to better design interactions to make Linux more accessible to &#8220;dumb clueless users&#8221; (his words, not mine). As we will see in the other blog posts (not yet mentioned), it is actually quite challenging to attract good designers to open source projects. Perhaps attitudes like Raymond&#8217;s are part of the problem: above all, a good designer knows to respect their users. This can be contrasted to Raymond&#8217;s suggestion that designers &#8220;sit down at the system like a dumb user who&#8217;s never seen it before&#8221;.</p>
<p>Anyways, I digress from the story. So a few days after posting the aforementioned easy, Raymond post a follow-up entitled &#8220;The Luxury of Ignorance: Part Deux&#8221;. In this essay, Raymond described positive feedback to the first essay, and notes that he received numerous emails with comments such as &#8220;Gee. And all this time I thought it was just me.&#8221; At this point, Raymond&#8217;s essay get the attention of John Gruber over at <a href="http://daringfireball.net/2004/04/spray_on_usability">Daring Fireball</a>. Gruber&#8217;s reaction is more inline with my own. Specifically, he notes:</p>
<blockquote><p><em>&#8220;Developing software with a good UI requires both aptitude and a lot of hard work. Raymond acknowledges neither.&#8221;</em></p></blockquote>
<p>And later,</p>
<blockquote><p><em>&#8220;If there’s a glib, nutshell synopsis for why Linux desktop software tends to suck, it’s this: Raymond and his ilk have no respect for anyone but themselves.&#8221;</em></p></blockquote>
<p>But it&#8217;s more than that. Gruber goes on to point out that it wasn&#8217;t just the &#8220;dumb users&#8221; who had trouble configuring CUPS, it was Raymond himself, along with other UNIX geeks who read his blog. The problem is certainly much deeper than Raymond realizes. On this note, Gruber wonders how Raymond could write an essay on FOSS usability problems but not mention Matthew Paul Thomas&#8217;s (apparently well-known) blog post &#8220;<a href="http://web.archive.org/web/20030201183139/http://mpt.phrasewise.com/discuss/msgReader$173">Why Free Software usability tends to suck</a>&#8220;. This is where things get really interesting.</p>
<p>In Matthew Paul Thomas&#8217;s (M.T.P) blog post, he describes 9 hypothesis or observations why might help to explain some of the usability issues common to many free and open source software projects. While these are interesting in their own right, M.T.P&#8217;s follow up essay &#8220;<a href="http://mpt.net.nz/archive/2008/08/01/free-software-usability">Why Free Software has poor usability, and how to improve it</a>&#8221; expands the list to 15 items, and represents six years of reflection on this topic. As such, I will be focusing on this later piece. In brief, the 15 reasons are as follows:</p>
<ol>
<li>Without monetary reward (e.g., salaries), there are few incentives to do usability work in FOSS.</li>
<li>It is difficult to attract good designers. (Noted above)</li>
<li>Related to 2., design suggestions are not welcomed by developers.</li>
<li>It is difficult to measure success or improvements to usability.</li>
<li>In FOSS, projects are started by Coders. Design is tacked on later.</li>
<li>With many people voicing design decisions, it&#8217;s hard to maintain a unified and consistent design trajectory.</li>
<li>FOSS software tends to simply imitate proprietary interfaces.</li>
<li>Developers work on parts of the system that they are interested in. Design is often not of interest.</li>
<li>Small usability errors are often assigned low priority, and fixes are delayed.</li>
<li>Project leaders often agree to add new options and configurations to placate the many volunteer contributors.</li>
<li>Every developer want to have their &#8220;15 pixels of fame&#8221; on the GUI.</li>
<li>FOSS communication channels are not suitable for doing design work.</li>
<li>Release early, release often means that early adopters get used to poorly thought-out designs.</li>
<li>Developers often code &#8220;back end&#8221; functionality, assuming usability issues will be addressed by those writing a &#8220;front end&#8221;.</li>
<li>FOSS software often interacts with other FOSS software from different projects &#8212; but the communities rarely communicate.</li>
</ol>
<p>Ok, that&#8217;s the long list of M.P.T&#8217;s points. I&#8217;m sure I&#8217;ll be discussing some of these in more detail in future posts.</p>
]]></content:encoded>
			</item>
		<item>
		<title>Motivations and Social Development in FOSS</title>
		<link>http://www.adamfourney.com</link>
		<comments>http://www.adamfourney.com/cs889/motivations-and-social-development-in-foss/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 00:11:57 +0000</pubDate>
		<dc:creator><![CDATA[afourney]]></dc:creator>
				<category><![CDATA[CS889: Open Source Usability]]></category>

		<guid isPermaLink="false">http://www.adamfourney.com/?p=272</guid>
		<description><![CDATA[Admittedly, I&#8217;ve been slightly behind in posting to this blog the for CS849 course. However, papers from the last two lectures (June 9th and 14th) have been researching the motivations and social development of developers within FOSS communities. As such, I will discuss the contents of both lectures in one blog post. The papers at <a href="http://www.adamfourney.com/cs889/motivations-and-social-development-in-foss/">[...]</a>]]></description>
				<content:encoded><![CDATA[<p>Admittedly, I&#8217;ve been slightly behind in posting to this blog the for <a href="http://hci.uwaterloo.ca/courses/CS889/S10/">CS849</a> course. However, papers from the last two lectures (June 9th and 14th) have been researching the motivations and social development of developers within FOSS communities. As such, I will discuss the contents of both lectures in one blog post. The papers at the heart of these blog posts are as follows:</p>
<ul>
<li>Scacchi, W. 2007. <em>Free/open source software development: recent research results and emerging opportunities</em>. In the 6th Joint Meeting on European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering: Companion Papers (Dubrovnik, Croatia, September 03 &#8211; 07, 2007). ESEC-FSE companion &#8217;07. ACM, New York, NY, 459-468.</li>
</ul>
<ul>
<li>Ye, Y. and Kishida, K. 2003. <em>Toward an understanding of the motivation Open Source Software developers</em>. In Proceedings of the 25th international Conference on Software Engineering (Portland, Oregon, May 03 &#8211; 10, 2003). International Conference on Software Engineering. IEEE Computer Society, Washington, DC, 419-429.</li>
</ul>
<ul>
<li>Ducheneaut, N. 2005. <em>Socialization in an Open Source Software Community: A Socio-Technical Analysis</em>. Comput. Supported Coop. Work 14, 4 (Aug. 2005), 323-368.</li>
</ul>
<p>I will refer to these papers as [Scacchi], [Ye], and [Ducheneaut] respectively.</p>
<p>The [Scacchi] paper is basically a literature review of research studying a vast range of aspects related to FOSS development. For example, the paper discusses everything from the ad-hoc arrangement of personal resources (computers, bandwidth etc.) contributed to projects, their trust and accountability mechanisms, the systems for supporting cooperation and coordination, and even a discussion of the beliefs supporting FOSS development. On this note, one of the more interesting findings is that developers enjoy various freedoms that are not typically discussed in the literature. These freedoms include choice of:</p>
<ul>
<li>What problem to work on.</li>
<li>What tools to employ.</li>
<li>When to release products.</li>
<li>When and what to review.</li>
<li>&#8220;What can be said to whom or without reservation.&#8221;</li>
</ul>
<p>Another really interesting take-home message from this paper is that people participate in FOSS projects for a variety of complex reasons &#8211;but gaining &#8220;social capital&#8221; is one major contributor.</p>
<p>This notion of gaining social capital is also expressed in the [Ye] paper. This paper argues that the <em>learning</em> theory of &#8220;legitimate peripheral participation&#8221; is &#8220;one of the major motivational forces that attract developers and users to participate in OSS development&#8221;. Don&#8217;t let the name fool you. The motivation is not simply to learn, but instead to move from &#8220;apprentice&#8221; to &#8220;master&#8221; through participation in the community. Along with the new skills acquired, the apprentice gains social capital as they move through the ranks. I would argue that this latter point is the stronger motivation, and I think the authors would agree &#8212; otherwise there would be no way to explain the motivation of the &#8220;masters&#8221; or &#8220;core developers&#8221;. Regarding this point, Ye et al. argue:</p>
<blockquote><p><em>&#8220;By establishing their own identities or shaping the identities of others through voluntary participation in the community practice, members help reproduce and preserve the community. This process is also in their own interests because their identity, skills, and reputation as master rely on the continuous existence of the community. Therefore, from the perspective of the community to which each member belongs, an individual’s altruistic behavior is &#8216;altruistically&#8217; selfish and &#8216;selfishly&#8217; altruistic&#8221; </em>[Ye]<em> </em></p></blockquote>
<p>Later, on the same topic, the authors add:</p>
<blockquote><p><em>&#8220;Relying purely on altruism makes OSS unsustainable. Intrinsic motivation is positively reinforced and amplified when social structure and conventions of the community recognize and reward the contributions of its members.&#8221; </em>[Ye]</p></blockquote>
<p>This idea of &#8220;selfish altruism&#8221; appeals to me as a leading hypothesis as to why people participate in these online communities. Specifically, one should not undervalue the importance or the appeal of belonging, and of being recognized and appreciated by a community.</p>
<p>This brings us to the final paper by Nicolas Ducheneaut. This paper stresses the dynamic nature of a FOSS project&#8217;s community, and describes (in detail) the various trials a new developer must face in order to achieve &#8220;core developer&#8221; status. On this topic, the paper follows the trajectory of two aspiring developers: one who achieves core developer status, and one who does not. Importantly, this paper makes it clear that the aspiring contributors are already very skilled developers who may bring well-developed (complete, or nearly complete) contributions. Nevertheless, it requires a tremendous amount of additional effort to successfully incorporate these additions into the project trunk. This would seem to suggest that learning alone cannot fully explain the motivation of successful FOSS developers; it is difficult to argue that significant technical learning is taking place when the hurdles are chiefly political and bureaucratic.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adamfourney.com/cs889/motivations-and-social-development-in-foss/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Gulf oil leak, live robot footage, and a new perspective on the challenges facing BP</title>
		<link>http://www.adamfourney.com</link>
		<pubDate>Wed, 02 Jun 2010 15:20:44 +0000</pubDate>
		<dc:creator><![CDATA[afourney]]></dc:creator>
				<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://www.adamfourney.com/?p=249</guid>
		<description><![CDATA[I must admit, I&#8217;ve recently become transfixed watching the live footage of BP&#8217;s underwater robots frantically trying to mitigate the deepwater horizon oil leak. The video feed gave me a whole new perspective of the technical challenges of deep-sea offshore oil drilling. I&#8217;ve attached a few of the screenshots of the feed that I&#8217;ve captured <a href="http://www.adamfourney.com/misc/gulf-oil-leak-live-robot-footage-and-challenge/">[...]</a>]]></description>
				<content:encoded><![CDATA[<p>I must admit, I&#8217;ve recently become transfixed watching the live footage of BP&#8217;s underwater robots frantically trying to mitigate the <a href="http://en.wikipedia.org/wiki/Deepwater_Horizon_oil_spill">deepwater horizon oil leak</a>. The video feed gave me a whole new perspective of the technical challenges of deep-sea offshore oil drilling. I&#8217;ve attached a few of the screenshots of the feed that I&#8217;ve captured &#8212; screenshots which I think tell at least part of the story. In many of the images you can clearly see the blowout preventer and the riser which collapsed when the platform sank on April 22<sup>nd</sup>, 2010.</p>

<a href='http://www.adamfourney.com/misc/gulf-oil-leak-live-robot-footage-and-challenge/attachment/leak1/'><img width="150" height="150" src="http://www.adamfourney.com/wp-content/uploads/2010/06/leak1-150x150.png" class="attachment-thumbnail size-thumbnail" alt="" /></a>
<a href='http://www.adamfourney.com/misc/gulf-oil-leak-live-robot-footage-and-challenge/attachment/leak2/'><img width="150" height="150" src="http://www.adamfourney.com/wp-content/uploads/2010/06/leak2-150x150.png" class="attachment-thumbnail size-thumbnail" alt="" /></a>
<a href='http://www.adamfourney.com/misc/gulf-oil-leak-live-robot-footage-and-challenge/attachment/leak3/'><img width="150" height="150" src="http://www.adamfourney.com/wp-content/uploads/2010/06/leak3-150x150.png" class="attachment-thumbnail size-thumbnail" alt="" /></a>
<a href='http://www.adamfourney.com/misc/gulf-oil-leak-live-robot-footage-and-challenge/attachment/leak4/'><img width="150" height="150" src="http://www.adamfourney.com/wp-content/uploads/2010/06/leak4-150x150.png" class="attachment-thumbnail size-thumbnail" alt="" /></a>
<a href='http://www.adamfourney.com/misc/gulf-oil-leak-live-robot-footage-and-challenge/attachment/leak5/'><img width="150" height="150" src="http://www.adamfourney.com/wp-content/uploads/2010/06/leak5-150x150.png" class="attachment-thumbnail size-thumbnail" alt="" /></a>
<a href='http://www.adamfourney.com/misc/gulf-oil-leak-live-robot-footage-and-challenge/attachment/leak11/'><img width="150" height="150" src="http://www.adamfourney.com/wp-content/uploads/2010/06/leak11-150x150.png" class="attachment-thumbnail size-thumbnail" alt="" /></a>
<a href='http://www.adamfourney.com/misc/gulf-oil-leak-live-robot-footage-and-challenge/attachment/leak12/'><img width="150" height="150" src="http://www.adamfourney.com/wp-content/uploads/2010/06/leak12-150x150.png" class="attachment-thumbnail size-thumbnail" alt="" /></a>
<a href='http://www.adamfourney.com/misc/gulf-oil-leak-live-robot-footage-and-challenge/attachment/leak14/'><img width="150" height="150" src="http://www.adamfourney.com/wp-content/uploads/2010/06/leak14-150x150.png" class="attachment-thumbnail size-thumbnail" alt="" /></a>
<a href='http://www.adamfourney.com/misc/gulf-oil-leak-live-robot-footage-and-challenge/attachment/leak15/'><img width="150" height="150" src="http://www.adamfourney.com/wp-content/uploads/2010/06/leak15-150x150.png" class="attachment-thumbnail size-thumbnail" alt="" /></a>

]]></content:encoded>
			</item>
		<item>
		<title>Case Studies for FOSS Development</title>
		<link>http://www.adamfourney.com</link>
		<pubDate>Wed, 02 Jun 2010 14:39:12 +0000</pubDate>
		<dc:creator><![CDATA[afourney]]></dc:creator>
				<category><![CDATA[CS889: Open Source Usability]]></category>

		<guid isPermaLink="false">http://www.adamfourney.com/?p=238</guid>
		<description><![CDATA[In Tomorrow&#8217;s CS889 class (June 2nd) I am again leading the second half of the discussion. This time my focus is on the work of Audris Mockus&#8217; et al. Their article, &#8220;Two case studies of open source software development: Apache and Mozilla&#8221; compares the very different development processes of these two projects. I found this <a href="http://www.adamfourney.com/cs889/cases-studies-for-foss-development/">[...]</a>]]></description>
				<content:encoded><![CDATA[<p>In Tomorrow&#8217;s <a href="http://hci.uwaterloo.ca/courses/CS889/S10/">CS889</a> class (June 2nd) I am again leading the second half of the discussion. This time my focus is on the work of Audris Mockus&#8217; et al. Their article, &#8220;<a href="http://portal.acm.org/citation.cfm?doid=567793.567795">Two case studies of open source software development: Apache and Mozilla</a>&#8221; compares the very different development processes of these two projects. I found this article to be quite interesting, and the hypotheses the authors develop (and later modify) are quite informative. In this post, I list some of the more interesting findings:</p>
<h4>Apache</h4>
<ul>
<li>Apache was, for the most part, entirely volunteer driven. All the core project members had other &#8220;day jobs&#8221;.</li>
<li>Coordination between core members was done almost exclusively through the developer mailing list.</li>
<li>The core apache group (AG) has between 8 and 25 members. At the time of the study, the AG had 12 members.</li>
<li>At any given time, 4 to 6 members of the AG were actively writing code alongside 2 to 3 AG nominees (highly active, non-AG developers).</li>
<li>There was little evidence of code ownership. AG members were trusted to modify any parts of the code.</li>
<li>Over 400 developers contributed some code.</li>
<li>15 developers (the &#8220;core developers&#8221;) contributed 83% of the CVS commits for new functionality.</li>
<li>15 developers produced 66% of the code related to bug fixes.</li>
<li>Over 3000 contributors submitted about 4000 problem reports. 591 of those problem reports resulted in a code (or documentation change)</li>
<li>The top 15 problem report submitters contributed only 5% of the total PRs.</li>
<li>Reported problems are typically addressed very quickly (depending on priority), with half of the problem reports being corrected within a single day.</li>
</ul>
<h4>Mozilla</h4>
<ul>
<li>Mozilla had a number of payed employees, many of them originally from Netscape.</li>
<li>Code ownership was strongly enforced. For each of Mozilla&#8217;s modules, one developer (the module owner) was responsible for reviewing and committing changes.</li>
<li>Mozilla modules had 22-35 core members. I.e., 22 to 35 people wrote 83% of the code for new functionality.</li>
<li>Apache had 76 or modules. For each module, between 87 and 174 people contributed code.</li>
<li>6837 contributors submitted about 58,000 problem reports. 11,616 of those problem reports resulted in a code (or documentation change)</li>
<li>The top 113 submitters reported 50% of all problems. Only 25 of these were external. There were formal testing teams tasked with finding problems.</li>
<li>Reported problems required longer to fix. This was mostly because all changes needed to be approved by the module owners.</li>
</ul>
<h4>Hypotheses</h4>
<p>From these two studies, the authors made the folowing 7 hypothesis for OSS projects in general (quoted directly, and included in this summary for completeness):</p>
<blockquote><p><em>&#8220;Hypothesis 1a: Open source developments will have a core of developers who control the code base, and will create approximately 80% or more of the new functionality. If this core group uses only informal, ad hoc means of coordinating their work, it will be no larger than 10-15 people.</em></p>
<p><em>Hypothesis 2a: If a project is so large that more than 10-15 people are required to complete 80% of the code in the desired time frame, then other mechanisms, rather than just informal, ad hoc arrangements, will be required in order to coordinate the work. These mechanisms may include one or more of the following: explicit development processes, individual or group code ownership, and required inspections.</em></p>
<div id="_mcePaste"><em>Hypothesis 3: In successful open source developments, a group larger by an order of magnitude than the core will repair defects, and a yet larger group (by another order of magnitude) will report problems.</em></div>
<div><em><br />
</em></div>
<div id="_mcePaste"><em>Hypothesis 4: Open source developments that have a strong core of developers but never achieve large numbers of contributors beyond that core will be able to create new functionality but will fail because of a lack of resources devoted to finding and repairing defects.</em></div>
<div><em><br />
</em></div>
<div id="_mcePaste"><em>Hypothesis 5: Defect density in open source releases will generally be lower than commercial code that has only been feature-tested, i.e., received a comparable level of testing.</em></div>
<div id="_mcePaste"><em><br />
</em></div>
<div><em>Hypothesis 6: In successful open source developments, the developers will also be users of the software.</em></div>
<div><em><br />
</em></div>
<div><em><span style="font-style: normal;"><em>Hypothesis 7: OSS developments exhibit very rapid responses to customer problems.&#8221;, </em>[<a href="http://portal.acm.org/citation.cfm?doid=567793.567795">Mockus, et al.</a>]</span></em></div>
</blockquote>
<div style="text-align: left;"><em><br />
</em></div>
]]></content:encoded>
			</item>
		<item>
		<title>The Open Source Definition</title>
		<link>http://www.adamfourney.com</link>
		<comments>http://www.adamfourney.com/cs889/the-open-source-definition/#comments</comments>
		<pubDate>Wed, 19 May 2010 16:19:34 +0000</pubDate>
		<dc:creator><![CDATA[afourney]]></dc:creator>
				<category><![CDATA[CS889: Open Source Usability]]></category>

		<guid isPermaLink="false">http://www.adamfourney.com/?p=229</guid>
		<description><![CDATA[This week, in CS889, I am charged with leading the discussion on Open Source and the Open Source Definition. So what is &#8220;Open Source&#8221;? And, how does it differ from &#8220;Free Software&#8221;? Compared to &#8220;free software&#8221; (circa. 1984), the term &#8220;open source&#8221; is relatively new. The term came out of a 1998 meeting at the <a href="http://www.adamfourney.com/cs889/the-open-source-definition/">[...]</a>]]></description>
				<content:encoded><![CDATA[<p>This week, in <a href="http://hci.uwaterloo.ca/courses/CS889/S10/">CS889</a>, I am charged with leading the discussion on Open Source and the Open Source Definition. So what is &#8220;Open Source&#8221;? And, how does it differ from &#8220;Free Software&#8221;?</p>
<p>Compared to &#8220;free software&#8221; (circa. 1984), the term &#8220;open source&#8221; is relatively new. The term came out of a 1998 meeting at the offices of VA Research as part of a strategy to market free software to the business world:</p>
<blockquote><p><em>&#8220;(This strategy was) conceived as a program to market the free software concept to people who wore ties.&#8221;</em> &#8212; Bruce Perens</p></blockquote>
<p>This meeting was in response to Netscape releasing its web browser as free software &#8212; a decision largely influenced by Eric Raymond&#8217;s essay &#8216;The Cathedral and the Bazaar&#8217;.  Recognizing that Netscape Navigator would be the first case study of commercial free software, Raymond posited that the community could not afford to let Netscape fail. Additionally, Netscape would also be setting an example for other businesses to follow. Hence, the VA Research meeting was called in order to devise strategies to leverage these recent events and to make free software more appealing to businesses. The main part of this strategy was to rebrand free software as &#8216;open source&#8217; (in part, to distance themselves from the Free Software Foundation, whose philosophies were not considered conducive to business).</p>
<p>Notably absent from this meeting was Bruce Perens. At the time, Bruce Perens was the community leader of the Debian project. One day after the meeting Raymond recruited Perens, and the pair founded the Open Source Initiative. One of the first orders of business was to establish the <a href="http://www.opensource.org/osd.html">open source definition</a>. This definition was based on the Debian Social Contract, and includes statements on the following 10 topics (which I do not discuss here in any detail):</p>
<ol>
<li>Free distribution</li>
<li>Access to source code</li>
<li>Distribution of derived works</li>
<li>Option to maintain integrity of author&#8217;s source code</li>
<li>No discrimination against persons</li>
<li>No discrimination against fields or endeavours</li>
<li>Distribution of license (I don&#8217;t quite fully understand this point)</li>
<li>Licence must not be specific to a product</li>
<li>Licence must not restrict other software</li>
<li>License must be technology neutral</li>
</ol>
<p>Importantly, the open source marketing campaign was highly successful. The mass media was frequently discussing open source in the late 1990&#8217;s and early 2000&#8217;s. Moreover, many businesses (e.g., IBM) embraced open source.</p>
<p>However, almost immediately after establishing the Open Source Initiative, the movement was controversial. Advocates of free software felt that the open source movement was abandoning the principles established by the free software foundation. Moreover, by marketing with the term &#8216;open source&#8217;, newcomers would not fully appreciate the freedoms that free software has granted. As such, they would not know how to fight to protect those freedoms. On this topic, Stallman writes:</p>
<blockquote><p><em>The philosophy of open source, with its purely practical values, impedes understanding of the deeper ideas of free software; it brings many people into our community, but does not teach them to defend it. That is good, as far as it goes, but it is not enough to make freedom secure.</em></p></blockquote>
<p>He also writes:</p>
<blockquote><p><em>To spread this idea, we have to talk about freedom. A certain amount of the &#8216;keep quiet&#8217; approach to business can be useful for the community, but it is dangerous if it becomes so common that the love of freedom comes to seem like an eccentricity.</em></p></blockquote>
<p>This latter sentiment is reflected almost exactly in Bruce Perens&#8217; essay &#8216;<a href="http://lists.debian.org/debian-devel/1999/02/msg01641.html">It&#8217;s Time to Talk about Free Software Again</a>&#8216;. Bruce Perens left the Open Source Initiative only a year after founding it with Raymond. Here, I get the feeling that Perens has some regret about those early years. In one of his <a href="http://oreilly.com/catalog/opensources/book/perens.html">essays</a>, he notes that the dialog between Stallman and Raymond become so heated, and the community so divided, that he asked Raymond to tone down the rhetoric.</p>
<p>Sadly, open source and free software cover almost exactly the same body of work. The open source definition is slightly more permissive than the free software definition, but most software in this area qualifies as both free software and as open source software. As such, the conflict is largely unnecessary.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.adamfourney.com/cs889/the-open-source-definition/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>On GPL v3</title>
		<link>http://www.adamfourney.com</link>
		<pubDate>Mon, 17 May 2010 18:22:52 +0000</pubDate>
		<dc:creator><![CDATA[afourney]]></dc:creator>
				<category><![CDATA[CS889: Open Source Usability]]></category>

		<guid isPermaLink="false">http://www.adamfourney.com/?p=217</guid>
		<description><![CDATA[This week&#8217;s readings (for CS 889) are primarily on the GNU General Public License, with a heavy focus on GPL v3. In this post I will focus on GPL v3, and how it differs from previous versions. I will then discuss some of the controversy with this license, and my thoughts regarding these issues. GPL <a href="http://www.adamfourney.com/cs889/on-gpl-v3/">[...]</a>]]></description>
				<content:encoded><![CDATA[<p>This week&#8217;s readings (for <a href="http://hci.uwaterloo.ca/courses/CS889/S10/">CS 889</a>) are primarily on the GNU General Public License, with a heavy focus on GPL v3. In this post I will focus on GPL v3, and how it differs from previous versions. I will then discuss some of the controversy with this license, and my thoughts regarding these issues.</p>
<h3>GPL v3 vs. Previous Versions</h3>
<p>According to the FSF document &#8216;<a href="http://www.gnu.org/licenses/quick-guide-gplv3.html">A quick guide to GPLv3</a>&#8216;, and supported by excerpts from  an <a href="http://twit.tv/floss13">audio interview</a> with Eben Moglen, the GPLv3 differs from its predecessors in three important ways:</p>
<ol>
<li><strong>Internationalization</strong>. Previous versions of the GPL were very US-centric, and were based on US copyright laws. In writing the GPLv3, much attention was paid to ensuring that the GPL is internationally enforceable. This could prove to be very important reason to use this newer version of the license. Then again, previous versions of the GPL seem to have stood the test of time even when used internationally.</li>
<li><strong>Clauses to prevent Tivoization</strong>. This is a terrible term, but basically, the GPLv3 ensures that, should a device manufacture choose to use GPL&#8217;ed software, they must ensure that users can continue to modify the software, and that modified versions will actually run on the device. This is clearly in the spirt of the GPL, and I think it is a very important (albeit, highly-specific) point.</li>
<li><strong>Clauses regarding DRM</strong>. My understanding of the GPLv3 is that it allows developers to implement new DRM techniques in GPL&#8217;ed software, but goes on to state that this DRM cannot be considered an &#8216;effective measure&#8217; for preventing copying. Basically, this ensure that DRM in GPL&#8217;ed software will never fall under the enforcement of the Digital Millennium Copyright Act. I think this is a very clever clause, and I am very much in agreement with the FSF on this point. However, it is highly political: no company would be crazy enough to implement DRM in open source software because it would be ineffective. DRM relies on security through obscurity for protection (since any device that allows playback has all the tools needed to circumvent the DRM&#8230; its just that this capability is very well hidden and hard to reverse engineer). By open-sourcing DRM, companies would basically be opening the kimono.</li>
<li><strong>Patent clauses</strong>. The GPLv3 also includes numerous clauses to protect developers and users from patent litigation. Specifically, if a company modifies and contributes to GPL&#8217;ed software, and then uses patent law to litigate against other developers and users, then the company&#8217;s license to the software is revoked. I must admit that I don&#8217;t fully understand how this works.</li>
<li><strong>Increased compatibility with other licences</strong>. The GPLv3 allows users to make small changes to the default terms and conditions of the license. This is designed to make GPLv3 more compatible with other licences (like the Apache licence). This is one possible response to addressing the problem of license proliferation. However, <a href="http://lwn.net/Articles/200422/">critics</a> argue that this will only increase the number of license variations, and will make the problem worse. On this topic, Eben Moglen believes that there will initially be many variations that are tried, but (as is the case with other forms of law), a few variations will become standard; hence, there will be increased compatibility without contributing much to the proliferation problem.</li>
</ol>
<h3>GPLv3 Controversy</h3>
<p>Ok, so those are the 5 major ways in which GPLv3 differs from previous version. These differences have been somewhat controversial in the FLOSS community. Most notably, the Linux Kernel developers have been very outspoken as to why they will not adopt  v3. On this topic, they published a <a href="http://lwn.net/Articles/200422/">position paper</a>. This paper is based on an early draft of GPLv3 &#8212; it is not clear how their position may have changed in regards to the the licence&#8217;s final draft. In any case, the kernel developers take issue with almost all of the 5 points outlined above. Unfortunately, the position paper lacks specifics. Some of the objections become more clear in Linus&#8217;s postings <a href="http://lkml.org/lkml/2006/9/25/161">[1]</a><a href="http://lkml.org/lkml/2006/1/25/273">[2]</a> to the kernel developer mailing list. For example, on the topic DRM, Linus writes:</p>
<blockquote>
<div id="_mcePaste"><em>&#8220;I&#8217;m very much on record as not liking (DRM). That changes nothing. I&#8217;m also very much on record as saying that DRM, TPC etc have nothing at all to do with the kernel license. If you want to fight DRM, do so by joining the Creative Commons movement. (&#8230;) The whole &#8216;content&#8217; discussion has </em><strong><em>nothing</em></strong><em> to do with an operating system. Trying to add that tie-in is a bad idea. It tries to link things that aren&#8217;t relevant.&#8221;</em></div>
</blockquote>
<div>Interestingly, Linus and the kernel developers could have avoided moving to the GPLv3 based purely on technical terms: The Linux kernel opted out of the &#8220;or any future version&#8221; clause of the GPLv2. This makes it nearly impossible to update the Linux Kernel license. As such, the Linux kernel developers&#8217; publication of the aforementioned document is again rather political.</div>
]]></content:encoded>
			</item>
		<item>
		<title>RE: Some Confusing or Loaded Words and Phrases to Avoid</title>
		<link>http://www.adamfourney.com</link>
		<pubDate>Wed, 12 May 2010 14:55:08 +0000</pubDate>
		<dc:creator><![CDATA[afourney]]></dc:creator>
				<category><![CDATA[CS889: Open Source Usability]]></category>

		<guid isPermaLink="false">http://www.adamfourney.com/?p=199</guid>
		<description><![CDATA[Part of the assigned reading for CS889 is the Free Software Foundation&#8217;s document &#8216;Some Confusing or Loaded Words and Phrases to Avoid (or Use with Care)&#8216;. While I mostly agree with this listing, I just wanted to comment on some of the entries which I find particularly objectionable: &#8220;BSD-Style License&#8221; The FSF writes: &#8220;The expression <a href="http://www.adamfourney.com/cs889/re-some-confusing-or-loaded-words-and-phrases-to-avoid/">[...]</a>]]></description>
				<content:encoded><![CDATA[<p>Part of the assigned reading for <a href="http://hci.uwaterloo.ca/courses/CS889/S10/">CS889</a> is the Free Software Foundation&#8217;s document &#8216;<a href="http://www.gnu.org/philosophy/words-to-avoid.html">Some Confusing or Loaded Words and Phrases to Avoid (or Use with Care)</a>&#8216;. While I mostly agree with this listing, I just wanted to comment on some of the entries which I find particularly objectionable:</p>
<p><strong>&#8220;BSD-Style License&#8221;</strong></p>
<p>The FSF writes:</p>
<blockquote><p><em>&#8220;The expression &#8216;BSD-style license&#8217; leads to confusion because it lumps together licenses that have important differences. For instance, the original BSD license with the advertising clause is incompatible with the GNU General Public License, but the revised BSD license is compatible with the GPL.&#8221;</em></p></blockquote>
<p>The original version of the BSD license (with the advertising clause) <a href="http://www.opensource.org/licenses/bsd-license.php">was rescinded over ten years ago</a>. Go ahead. Call these licenses &#8220;Modified BSD-style&#8221; if you must; but, at present, there is not much risk of confusion.</p>
<p><strong>&#8220;Content&#8221;</strong></p>
<p>The FSF writes:</p>
<blockquote><p><em>&#8220;If you want to describe a feeling of comfort and satisfaction, by all means say you are &#8216;content,&#8217; but using the word as a noun to describe written and other works of authorship adopts an attitude you might rather avoid. It regards these works as a commodity whose purpose is to fill a box and make money.&#8221;</em></p></blockquote>
<p>Alright. This is ridiculous.  The <a href="http://www.merriam-webster.com/dictionary/content?show=3">second (noun) definition</a> of &#8220;content&#8221; offered by Merriam-Webster dictionary reads &#8220;the topics or matter treated in a written work &lt;table of content<em>s</em>&gt;&#8221;. Let me use this word in a sentence: I find some of the <strong>content</strong> this FSF article to be objectionable.</p>
<p><strong>&#8220;Linux system&#8221;</strong></p>
<p>The FSF writes:</p>
<blockquote><p><em>&#8220;Linux is the name of the kernel that Linus Torvalds developed starting in 1991. The operating system in which Linux is used is basically GNU with Linux added. To call the whole system &#8216;Linux&#8217; is both unfair and confusing.&#8221;</em></p></blockquote>
<p>Ok, so this is the subject of a <a href="http://en.wikipedia.org/wiki/GNU/Linux_naming_controversy">well-known</a> religious war. Here I firmly state that I am opposed to rebranding Linux as GNU/Linux. While I definitely appreciate the history of GNU and of Linux, and I understand Stallman&#8217;s reasons for the rebranding campaign, I have chosen sides for various reasons:</p>
<ul>
<li>Primarily, the GNU name is plastered throughout Linux (e.g., GNU prefixes, gzip, gcc, gmake, glibc, GIMP, GNOME, GEdit, etc.). For users of Linux, GNU&#8217;s contributions will not be overlooked.</li>
<li>Moreover, it is increasingly common to brand Linux by it&#8217;s distributions (e.g, Ubuntu, Red Hat, Fedora, Debian, etc.). If the Linux Kernel is indeed the only missing piece of a GNU system (and I&#8217;m not arguing against this stance), then perhaps FSF should distribute a GNU-branded <strong>complete system</strong> which they are free to name whatever they want.</li>
<li>It is easy to argue that Linux&#8217;s early success is due, in large part, from the success of other non-GNU projects such as Apache. More recently, Linux is making great strides in desktops and mobile devices because of amazing web browsers. Specifically, Mozilla Firefox and KHTML (or WebKit). Yet, we don&#8217;t field complaints for rebranding things to &#8220;Apache/KDE/Mozilla/GNU/Linux&#8221;.</li>
</ul>
<p><strong>&#8220;Protection&#8221;</strong></p>
<p>The FSF writes:</p>
<blockquote><p><em>&#8220;Publishers&#8217; lawyers love to use the term &#8216;protection&#8217; to describe copyright. This word carries the implication of preventing destruction or suffering; therefore, it encourages people to identify with the owner and publisher who benefit from copyright, rather than with the users who are restricted by it.&#8221;</em></p></blockquote>
<p>In fact, I think &#8220;protection&#8221; is a reasonable and natural word to use when discussing copyrights. After all, the preamble of the <a href="http://www.gnu.org/licenses/gpl-3.0.txt">GPL v3</a> uses variations of the term &#8220;protection&#8221; in no fewer than 5 places. For example:</p>
<blockquote>
<div id="_mcePaste"><em>&#8220;For the developers&#8217; and authors&#8217; protection, the GPL clearly explains that there is no warranty for this free software.&#8221;</em></div>
</blockquote>
<div>In conclusion, I just wanted to reiterate that I consider myself a supporter of free software, but I think that the FSF should be somewhat careful in its rhetoric which can occasionally be off-putting. That being said, I do not disagree with most of the recommendations listed in the FSF&#8217;s document  &#8216;<a href="http://www.gnu.org/philosophy/words-to-avoid.html">Some Confusing or Loaded Words and Phrases to Avoid (or Use with Care)</a>&#8216;.</div>
]]></content:encoded>
			</item>
		<item>
		<title>The Movers and Shakers of FLOSS</title>
		<link>http://www.adamfourney.com</link>
		<pubDate>Mon, 10 May 2010 15:51:28 +0000</pubDate>
		<dc:creator><![CDATA[afourney]]></dc:creator>
				<category><![CDATA[CS889: Open Source Usability]]></category>

		<guid isPermaLink="false">http://www.adamfourney.com/?p=168</guid>
		<description><![CDATA[Continuing the series on the history of free, libre, open source software, May 10th&#8217;s class reviews the contributions of some of FLOSS&#8217;s most famous movers and shakers. Linus Torvalds Linus Torvalds was the original author, and is presently the chief architect and engineer of the Linux kernel.  The Linux project was started in 1991-1992 while <a href="http://www.adamfourney.com/cs889/the-movers-and-shakers-of-floss/">[...]</a>]]></description>
				<content:encoded><![CDATA[<p>Continuing the series on the history of free, libre, open source software, May 10th&#8217;s <a href="http://hci.uwaterloo.ca/courses/CS889/S10/">class</a> reviews the contributions of some of FLOSS&#8217;s most famous movers and shakers.</p>
<p><strong>Linus Torvalds</strong></p>
<p><strong><span style="font-weight: normal;">Linus Torvalds was the original author, and is presently the chief architect and engineer of the Linux kernel.  The Linux project was started in 1991-1992 while Linus was studying at the University of Helsinki. The project started out as a hobby but later became Linus&#8217; Masters thesis. As quoted in Glyn Moody&#8217;s book <em>Rebel Code</em>, an early newsgroup posting regarding Linux begins:</span></strong></p>
<blockquote><p><strong><span style="font-weight: normal;"><em>&#8220;I&#8217;m doing a (free) operating system (just a hobby, won&#8217;t be big and professional like gnu) for 386(486) clones. This has been brewing since April, and is starting to get ready.&#8221; &#8212; </em>Torvalds, as quoted by Moody, pp. 42</span></strong></p></blockquote>
<p><strong><span style="font-weight: normal;">On the same topic, a later newsgroup posting reads:</span></strong></p>
<blockquote><p><strong><span style="font-weight: normal;"><em>&#8220;I can (well, almost) hear you asking yourselves `Why?&#8217;. Hurd will be out in a year (or two, or next month, who knows), and I&#8217;ve already got minix. This is a program for hackers by a hacker. I&#8217;ve enjoyed doing it, and somebody might enjoy looking at it and even modifying it for their own needs.&#8221; </em>&#8212; Torvalds, as quoted by Moody, pp. 45</span></strong></p></blockquote>
<p>In <em>Rebel Code</em>, and elsewhere (e.g., Linus&#8217; <a href="http://en.wikipedia.org/wiki/Linus_Torvalds">Wikipedia Entry</a>), Linus is often described as a pragmatist. The Wikipedia article notes that Linus simply &#8220;uses the best tool for the job&#8221;, noting that Linus believes the open source model to be the best model for developing software. This pragmatism is evidenced by the fact that the Linux source repository was, for years, hosted using the proprietary BitKeeper revision control system. In regards to the licensing of Linux, the project was not always distributed under the GPL; in the early days, Linus wrote his own (simpler) license with a similar copyleft clause. This original license did not allow any money to be charged for distribution. When distributors complained, Linus revised the licensing to use the GPL. Linus is quoted as saying:</p>
<blockquote><p><em>&#8220;I wasn&#8217;t really a GPL fan. It was too much lawyerese, and it&#8217;s a bit too strict in my opinion. (&#8230;) on the other hand, I can&#8217;t say I&#8217;m unhappy (with the license).&#8221; </em>&#8211;Torvalds, as quoted by Moody, pp. 49</p></blockquote>
<p>Presently, Linus is working for the <a href="http://en.wikipedia.org/wiki/Linux_Foundation">Linux Foundation</a>, a not-for-profit consortium which developed independently, and which later hired Linus so that he could work on the Linux kernel as a career (as opposed to a hobby).</p>
<ul>
<li>ASIDE: I am a fan of the <a href="http://twit.tv/FLOSS">FLOSS Weekly</a> podcast. Listen <a href="http://twit.tv/floss88">here</a> for an interview with Linus Torvalds.</li>
</ul>
<p><strong>Richard Matthew Stallman (RMS)</strong></p>
<p>Before writing about Stallman, it is important to note that there is much to say about this individual. As such, I will keep this section brief. I will provide additional details in other sections and postings (as necessary).</p>
<p>In my <a href="http://www.adamfourney.com/cs889/free-software-and-the-open-source-revolution/">previous post</a>, I discussed Richard Stallman, and his role as principle founder and visionary of the <a href="http://www.fsf.org/">Free Software Foundation (FSF)</a>. Simply put, Stallman is a champion for software freedoms, and is generally cast as an individual bound by principle.</p>
<p>In his early programming career, Stallman worked as a programmer in MIT&#8217;s Artificial Intelligence Laboratory. At the time, software was freely shared between institutions, practitioners, etc. However, times change. Software became proprietary, and source code became more like trade secretes. Stallman was against this turn of events, and his views against proprietary software were crystallized by an incident when Stallman could not acquire the source code for a <a href="http://oreilly.com/openbook/freedom/ch01.html">printer driver</a>.</p>
<p>Upon leaving MIT, and founding the Free Software Foundation, Stallman set out to develop a free (libre) computing infrastructure. This began with the release of the GNU public license, GNU emacs, the GNU c compile, etc. The most notable missing piece of this free system was an operating system kernel. Work started on the GNU Hurd microkernel, but the Linux kernel was released (and gained much popularity) before Hurd could be completed.</p>
<p><strong>Eric Steven Raymond (EMS)</strong></p>
<p>Eric Raymond is another key player in the FLOSS community. Raymond is perhaps best known for  his essay, <a href="http://catb.org/esr/writings/homesteading/cathedral-bazaar/cathedral-bazaar.ps">The Cathedral and the Bazaar</a>, which describes the mechanisms and ethos of open source software development. He is also known for his role in co-founding the <a href="http://www.opensource.org/">Open Source Initiative</a>.</p>
<p>I must admit that I first became aware of Raymond via. the book <a href="http://www.amazon.ca/New-Hackers-Dictionary-3rd/dp/0262680920"><em>The New Hacker&#8217;s Dictionary</em></a>, a print version of the <a href="http://catb.org/jargon/">Jargon File</a> which Raymond actively maintains. I was particularly moved by the piece contributed by Ed Nather entitled <a href="http://www.cs.utah.edu/~elb/folklore/mel.html"><em>The Story of Mel, a Real Programmer</em></a>.</p>
<p>As with Stallman, there is is much to say about Raymond. For now it suffices to say that, when it comes to FLOSS licenses, he is more flexible than Stallman, and often rejects the FSF&#8217;s staunch position of software freedoms at all costs. In the blog post <em>A Fan of Freedom: Thoughts on the Biography of RMS, </em>Raymond writes:</p>
<blockquote><p><em>&#8220;I thought Richard&#8217;s anti-propertarian dream was crazy, a nightmare that would lead to starving programmers and no good results. (&#8230;) We couldn&#8217;t sign on to Richard&#8217;s eccentric messianism.&#8221;</em></p></blockquote>
<p>That being said, Raymond added</p>
<blockquote><p><em>&#8220;(Richard Stallman&#8217;s) artifacts &#8212; GCC, Emacs, the GNU Public License &#8212; really have changed the world. The processes of open, collaborative development he did so much to invent is triumphing.&#8221;</em></p></blockquote>
<p>In fact, it is this &#8220;open collaborative development&#8221; process is which Raymond so champions in support for open source software.</p>
<p><em><br />
</em></p>
]]></content:encoded>
			</item>
	</channel>
</rss>
