
<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: More on Green Hills v. Express Logic</title>
	<atom:link href="http://techliberation.com/2006/07/21/more-on-green-hills-v-express-logic/feed/" rel="self" type="application/rss+xml" />
	<link>http://techliberation.com/2006/07/21/more-on-green-hills-v-express-logic/</link>
	<description>Keeping politicians&#039; hands off the Net &#38; everything else related to technology</description>
	<lastBuildDate>Fri, 25 May 2012 18:27:01 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: MikeT</title>
		<link>http://techliberation.com/2006/07/21/more-on-green-hills-v-express-logic/comment-page-1/#comment-54698</link>
		<dc:creator>MikeT</dc:creator>
		<pubDate>Fri, 21 Jul 2006 16:05:02 +0000</pubDate>
		<guid isPermaLink="false">http://techliberation.com/2006/07/21/more-on-green-hills-v-express-logic/#comment-54698</guid>
		<description>&lt;p&gt;The API itself is just the exposed code. Hence why the &quot;I&quot; in the acronym stands for &quot;interface.&quot; It is the entry-point that a developer uses to get to the functionality in a library. There isn&#039;t really a comparison to other areas of endeavor, though.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;Especially in higher-level languages that have design-by-contract concepts built into them, an API is often literally just a programmatic contract. You code against a special type of object called an &quot;interface&quot; which contains a list of methods that must be implemented by an object that implements the interface. This is a basic guarantee that certain functionality will be there.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;In Java, there is an interface called &quot;Runnable&quot; that is a bit similar to this sort of thing. Runnable contains one method: &lt;em&gt;void run();&lt;/em&gt;. run() by itself is nothing. It is a placeholder for functionality that is defined in a new class. I can write a class named ThreadedWindow that implements Runnable and its run() method will work completely differently from someone else&#039;s ThreadedWindow implementation, but the Java APIs will be able to interact with ThreadedWindow because it is marked as an implementer of Runnable and contains a (presumably) correct &lt;em&gt;run()&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;The short and sweet summary for those who don&#039;t do any programming is that it is entirely legally and technically possible to have two implementations of the same API that work almost completely differently internally, yet expose the same functionality. You can use two totally separate designs to arrive at the same conclusion.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;If you think that this is a violation of IP rights, then think again. A hardware equivalent would be Microsoft writing an emulator for the PS2 that runs on the XBox 360. The emulator exposes the instruction set of the PS2&#039;s &quot;emotion engine&quot; processor, but goes about it differently from the PS2. Still, a developer could target code to the PS2, then deploy onto the XBox 360 and it would work. An instruction set is, after all, nothing more than the electrical engineering equivalent of a software API.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>The API itself is just the exposed code. Hence why the &#8220;I&#8221; in the acronym stands for &#8220;interface.&#8221; It is the entry-point that a developer uses to get to the functionality in a library. There isn&#8217;t really a comparison to other areas of endeavor, though.</p>

<p><br /></p>

<p>Especially in higher-level languages that have design-by-contract concepts built into them, an API is often literally just a programmatic contract. You code against a special type of object called an &#8220;interface&#8221; which contains a list of methods that must be implemented by an object that implements the interface. This is a basic guarantee that certain functionality will be there.</p>

<p><br /></p>

<p>In Java, there is an interface called &#8220;Runnable&#8221; that is a bit similar to this sort of thing. Runnable contains one method: <em>void run();</em>. run() by itself is nothing. It is a placeholder for functionality that is defined in a new class. I can write a class named ThreadedWindow that implements Runnable and its run() method will work completely differently from someone else&#8217;s ThreadedWindow implementation, but the Java APIs will be able to interact with ThreadedWindow because it is marked as an implementer of Runnable and contains a (presumably) correct <em>run()</em>.</p>

<p><br /></p>

<p>The short and sweet summary for those who don&#8217;t do any programming is that it is entirely legally and technically possible to have two implementations of the same API that work almost completely differently internally, yet expose the same functionality. You can use two totally separate designs to arrive at the same conclusion.</p>

<p><br /></p>

<p>If you think that this is a violation of IP rights, then think again. A hardware equivalent would be Microsoft writing an emulator for the PS2 that runs on the XBox 360. The emulator exposes the instruction set of the PS2&#8242;s &#8220;emotion engine&#8221; processor, but goes about it differently from the PS2. Still, a developer could target code to the PS2, then deploy onto the XBox 360 and it would work. An instruction set is, after all, nothing more than the electrical engineering equivalent of a software API.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: MikeT</title>
		<link>http://techliberation.com/2006/07/21/more-on-green-hills-v-express-logic/comment-page-1/#comment-34184</link>
		<dc:creator>MikeT</dc:creator>
		<pubDate>Fri, 21 Jul 2006 15:05:02 +0000</pubDate>
		<guid isPermaLink="false">http://techliberation.com/2006/07/21/more-on-green-hills-v-express-logic/#comment-34184</guid>
		<description>&lt;p&gt;The API itself is just the exposed code. Hence why the &quot;I&quot; in the acronym stands for &quot;interface.&quot; It is the entry-point that a developer uses to get to the functionality in a library. There isn&#039;t really a comparison to other areas of endeavor, though.&lt;/p&gt;

&lt;p&gt;Especially in higher-level languages that have design-by-contract concepts built into them, an API is often literally just a programmatic contract. You code against a special type of object called an &quot;interface&quot; which contains a list of methods that must be implemented by an object that implements the interface. This is a basic guarantee that certain functionality will be there.&lt;/p&gt;

&lt;p&gt;In Java, there is an interface called &quot;Runnable&quot; that is a bit similar to this sort of thing. Runnable contains one method: &lt;em&gt;void run();&lt;/em&gt;. run() by itself is nothing. It is a placeholder for functionality that is defined in a new class. I can write a class named ThreadedWindow that implements Runnable and its run() method will work completely differently from someone else&#039;s ThreadedWindow implementation, but the Java APIs will be able to interact with ThreadedWindow because it is marked as an implementer of Runnable and contains a (presumably) correct &lt;em&gt;run()&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The short and sweet summary for those who don&#039;t do any programming is that it is entirely legally and technically possible to have two implementations of the same API that work almost completely differently internally, yet expose the same functionality. You can use two totally separate designs to arrive at the same conclusion.&lt;/p&gt;

&lt;p&gt;If you think that this is a violation of IP rights, then think again. A hardware equivalent would be Microsoft writing an emulator for the PS2 that runs on the XBox 360. The emulator exposes the instruction set of the PS2&#039;s &quot;emotion engine&quot; processor, but goes about it differently from the PS2. Still, a developer could target code to the PS2, then deploy onto the XBox 360 and it would work. An instruction set is, after all, nothing more than the electrical engineering equivalent of a software API.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>The API itself is just the exposed code. Hence why the &#8220;I&#8221; in the acronym stands for &#8220;interface.&#8221; It is the entry-point that a developer uses to get to the functionality in a library. There isn&#8217;t really a comparison to other areas of endeavor, though.</p>

<p>Especially in higher-level languages that have design-by-contract concepts built into them, an API is often literally just a programmatic contract. You code against a special type of object called an &#8220;interface&#8221; which contains a list of methods that must be implemented by an object that implements the interface. This is a basic guarantee that certain functionality will be there.</p>

<p>In Java, there is an interface called &#8220;Runnable&#8221; that is a bit similar to this sort of thing. Runnable contains one method: <em>void run();</em>. run() by itself is nothing. It is a placeholder for functionality that is defined in a new class. I can write a class named ThreadedWindow that implements Runnable and its run() method will work completely differently from someone else&#8217;s ThreadedWindow implementation, but the Java APIs will be able to interact with ThreadedWindow because it is marked as an implementer of Runnable and contains a (presumably) correct <em>run()</em>.</p>

<p>The short and sweet summary for those who don&#8217;t do any programming is that it is entirely legally and technically possible to have two implementations of the same API that work almost completely differently internally, yet expose the same functionality. You can use two totally separate designs to arrive at the same conclusion.</p>

<p>If you think that this is a violation of IP rights, then think again. A hardware equivalent would be Microsoft writing an emulator for the PS2 that runs on the XBox 360. The emulator exposes the instruction set of the PS2&#8242;s &#8220;emotion engine&#8221; processor, but goes about it differently from the PS2. Still, a developer could target code to the PS2, then deploy onto the XBox 360 and it would work. An instruction set is, after all, nothing more than the electrical engineering equivalent of a software API.</p>]]></content:encoded>
	</item>
</channel>
</rss>

