<?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: Microsoft Admitted Mono is a Patent Trap Back in 2006 (Updated)</title>
	<atom:link href="http://techrights.org/2008/09/13/microsoft-admitted-mono-trap/feed/" rel="self" type="application/rss+xml" />
	<link>http://techrights.org/2008/09/13/microsoft-admitted-mono-trap/</link>
	<description>Free Software Sentry – watching and reporting maneuvers of those threatened by software freedom</description>
	<lastBuildDate>Tue, 07 Feb 2012 14:00:35 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Roy Schestowitz</title>
		<link>http://techrights.org/2008/09/13/microsoft-admitted-mono-trap/comment-page-31/#comment-24437</link>
		<dc:creator>Roy Schestowitz</dc:creator>
		<pubDate>Sat, 20 Sep 2008 08:53:38 +0000</pubDate>
		<guid isPermaLink="false">http://boycottnovell.com/2008/09/13/microsoft-admitted-mono-trap/#comment-24437</guid>
		<description>&lt;blockquote&gt;
Let’s hope someone tests Microsoft by forking mono and then diverging from dotnet. 
&lt;/blockquote&gt;

To properly fragment and harm .NET, it would take quite some userbase. Either way, from my point of view, Mono developers willingly put themselves at Microsoft&#039;s mercy, enabling the tools to be restricted, pulled or sabotaged (remember what Microsoft did to Java and DR-DOS?) at any time. They need to keep &quot;The Beast&quot;  satisfied.

For the Free Desktop to depend on Mono is a big gamble.</description>
		<content:encoded><![CDATA[<blockquote><p>
Let’s hope someone tests Microsoft by forking mono and then diverging from dotnet.
</p></blockquote>
<p>To properly fragment and harm .NET, it would take quite some userbase. Either way, from my point of view, Mono developers willingly put themselves at Microsoft&#8217;s mercy, enabling the tools to be restricted, pulled or sabotaged (remember what Microsoft did to Java and DR-DOS?) at any time. They need to keep &#8220;The Beast&#8221;  satisfied.</p>
<p>For the Free Desktop to depend on Mono is a big gamble.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jose_X</title>
		<link>http://techrights.org/2008/09/13/microsoft-admitted-mono-trap/comment-page-31/#comment-24418</link>
		<dc:creator>Jose_X</dc:creator>
		<pubDate>Sat, 20 Sep 2008 03:51:50 +0000</pubDate>
		<guid isPermaLink="false">http://boycottnovell.com/2008/09/13/microsoft-admitted-mono-trap/#comment-24418</guid>
		<description>&gt;&gt; 1. As Jose has mentioned, Mono is not useless w/o interoperability. It can stand on its own 2 feet.

I haven&#039;t used it, but I don&#039;t see why it wouldn&#039;t be possible at least at some point.

I have also said that I personally would not tax my brain with MS protocol specifics. mono follows Microsoft and so helps grow the dotnet ecosystem where advantage goes to Microsoft in many ways. This is the main reason I would not use mono but would instead opt for a different set of specs if I ever wanted to use something like mono.

Let&#039;s hope someone tests Microsoft by forking mono and then diverging from dotnet. I would welcome such success since eventually that would mean I would have yet another FOSS tool at my disposal.</description>
		<content:encoded><![CDATA[<p>&gt;&gt; 1. As Jose has mentioned, Mono is not useless w/o interoperability. It can stand on its own 2 feet.</p>
<p>I haven&#8217;t used it, but I don&#8217;t see why it wouldn&#8217;t be possible at least at some point.</p>
<p>I have also said that I personally would not tax my brain with MS protocol specifics. mono follows Microsoft and so helps grow the dotnet ecosystem where advantage goes to Microsoft in many ways. This is the main reason I would not use mono but would instead opt for a different set of specs if I ever wanted to use something like mono.</p>
<p>Let&#8217;s hope someone tests Microsoft by forking mono and then diverging from dotnet. I would welcome such success since eventually that would mean I would have yet another FOSS tool at my disposal.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jose_X</title>
		<link>http://techrights.org/2008/09/13/microsoft-admitted-mono-trap/comment-page-31/#comment-24410</link>
		<dc:creator>Jose_X</dc:creator>
		<pubDate>Sat, 20 Sep 2008 03:38:12 +0000</pubDate>
		<guid isPermaLink="false">http://boycottnovell.com/2008/09/13/microsoft-admitted-mono-trap/#comment-24410</guid>
		<description>Simple examples of plausible deniability.

Consider a company, Monowallow, that controls servers of a certain type, builds corresponding client apps that compete with third party client apps, and publishes the protocol specs to the server-client interactions.

A particular call/message accepts various parameters including a &quot;quality&quot; parameter that has a few values, eg, OPTIMIZE_FOR_SPEED, OPTIMIZE_FOR_FAIRNESS, OPTIMIZE_FOR_PAYLOAD_SIZE. There are also two private/undisclosed values used internally and a few repetitions of these but using older slightly buggy implementations within the server (for &quot;backwards compat&quot;).

The OPTIMIZE_FOR_FAIRNESS is defined in the spec, but it&#039;s a bit ambiguous. Examples of use are given, but this doesn&#039;t solve the confusion. Most third party devs avoid this value.

Monowallow internal devs use the 2 undisclosed calls. For these, the semantics and range of values for the other parameters also change, perhaps subtly. Maybe a &quot;size&quot; value is actually a shifted and scaled value and maybe a few such values map even more strangely. Undisclosed values give performance boosts, new functionality, etc.

The internal devs also use a set of C macros that map to the integral values; however, there is a &quot;typo&quot; in the macro files used internally relative to the published spec. The internal developers always use the macro names so never know the actual numbers except in passing when they debug (or the tools they use hide the numbers). The various levels of macro indirection led to the bug/typo so that the OPTIMIZE_FOR_FAIRNESS is implemented as OPTIMIZE_FOR_SPEED and vice-versa. This means the calls will not do what the public api say, yet virtually no one, even internal devs, will realize this. Since these are optimization hints, it&#039;s not a big deal except for perhaps servers under pressure. Here using the wrong optimization will have some noticeable penalties. Those doing reverse-engineering along with profiling may catch this bug (and maybe keep it as a company secret for market advantage). Others will likely try to use OPTIMIZE_FOR_SPEED frequently but instead get the performance characteristics of the confusing OPTIMIZE_FOR_FAIRNESS and never realize it.

Also, you can use your imagination as to why there will be good and buggy versions of the same code in there. The buggy was simply bit rotted in some cases. Maybe a small boundary error occurs in the other (so some packets might be dropped unnecessarily). Maybe some of the shipped developer tools (Monowallow also sells devel tools) map to one set of quality implementations or another based on who is receiving the tools (eg, a tier 2 or tier 3 customer or the community vs the deluxe tools).

Maybe some of the values in the actual published spec map to buggy implementations, so that by default everyone uses a less than efficient/correct call for some values. Maybe the error is only noticeable in conditions that occur infrequently. Also, we have old API vs. the new and improved API. The old have problems to discourage use (bit rot might mean that only 16 bit sizes are used where nowadays you are likely to find a larger size). OTOH, the new API&#039;s might do DRM.

Also, the undocumented values used internally lead to superior performance but only for internal client/server interactions since these server calls make assumptions that only client apps made by the internal developers would also make (eg, info known already from the OS or from out of band from initialization). Others that try and use these calls (eg, they heard from a friend who.. or they were reverse-engineering and noticed better performance at some time) likely will get corrupted data at some point.

There is a ton that can be done, but this should give a flavor of how easily it is to naturally find ways to give handicaps to outsiders and benefits to insiders while partly hiding your tracks and even having plausible deniability should some of this ever get discovered.

Really, this are small items. Anything can be done when you have closed source and put decoys and errors in place.

&quot;I dunno. We have sloppy devs.&quot;</description>
		<content:encoded><![CDATA[<p>Simple examples of plausible deniability.</p>
<p>Consider a company, Monowallow, that controls servers of a certain type, builds corresponding client apps that compete with third party client apps, and publishes the protocol specs to the server-client interactions.</p>
<p>A particular call/message accepts various parameters including a &#8220;quality&#8221; parameter that has a few values, eg, OPTIMIZE_FOR_SPEED, OPTIMIZE_FOR_FAIRNESS, OPTIMIZE_FOR_PAYLOAD_SIZE. There are also two private/undisclosed values used internally and a few repetitions of these but using older slightly buggy implementations within the server (for &#8220;backwards compat&#8221;).</p>
<p>The OPTIMIZE_FOR_FAIRNESS is defined in the spec, but it&#8217;s a bit ambiguous. Examples of use are given, but this doesn&#8217;t solve the confusion. Most third party devs avoid this value.</p>
<p>Monowallow internal devs use the 2 undisclosed calls. For these, the semantics and range of values for the other parameters also change, perhaps subtly. Maybe a &#8220;size&#8221; value is actually a shifted and scaled value and maybe a few such values map even more strangely. Undisclosed values give performance boosts, new functionality, etc.</p>
<p>The internal devs also use a set of C macros that map to the integral values; however, there is a &#8220;typo&#8221; in the macro files used internally relative to the published spec. The internal developers always use the macro names so never know the actual numbers except in passing when they debug (or the tools they use hide the numbers). The various levels of macro indirection led to the bug/typo so that the OPTIMIZE_FOR_FAIRNESS is implemented as OPTIMIZE_FOR_SPEED and vice-versa. This means the calls will not do what the public api say, yet virtually no one, even internal devs, will realize this. Since these are optimization hints, it&#8217;s not a big deal except for perhaps servers under pressure. Here using the wrong optimization will have some noticeable penalties. Those doing reverse-engineering along with profiling may catch this bug (and maybe keep it as a company secret for market advantage). Others will likely try to use OPTIMIZE_FOR_SPEED frequently but instead get the performance characteristics of the confusing OPTIMIZE_FOR_FAIRNESS and never realize it.</p>
<p>Also, you can use your imagination as to why there will be good and buggy versions of the same code in there. The buggy was simply bit rotted in some cases. Maybe a small boundary error occurs in the other (so some packets might be dropped unnecessarily). Maybe some of the shipped developer tools (Monowallow also sells devel tools) map to one set of quality implementations or another based on who is receiving the tools (eg, a tier 2 or tier 3 customer or the community vs the deluxe tools).</p>
<p>Maybe some of the values in the actual published spec map to buggy implementations, so that by default everyone uses a less than efficient/correct call for some values. Maybe the error is only noticeable in conditions that occur infrequently. Also, we have old API vs. the new and improved API. The old have problems to discourage use (bit rot might mean that only 16 bit sizes are used where nowadays you are likely to find a larger size). OTOH, the new API&#8217;s might do DRM.</p>
<p>Also, the undocumented values used internally lead to superior performance but only for internal client/server interactions since these server calls make assumptions that only client apps made by the internal developers would also make (eg, info known already from the OS or from out of band from initialization). Others that try and use these calls (eg, they heard from a friend who.. or they were reverse-engineering and noticed better performance at some time) likely will get corrupted data at some point.</p>
<p>There is a ton that can be done, but this should give a flavor of how easily it is to naturally find ways to give handicaps to outsiders and benefits to insiders while partly hiding your tracks and even having plausible deniability should some of this ever get discovered.</p>
<p>Really, this are small items. Anything can be done when you have closed source and put decoys and errors in place.</p>
<p>&#8220;I dunno. We have sloppy devs.&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jose_X</title>
		<link>http://techrights.org/2008/09/13/microsoft-admitted-mono-trap/comment-page-31/#comment-24402</link>
		<dc:creator>Jose_X</dc:creator>
		<pubDate>Sat, 20 Sep 2008 02:50:27 +0000</pubDate>
		<guid isPermaLink="false">http://boycottnovell.com/2008/09/13/microsoft-admitted-mono-trap/#comment-24402</guid>
		<description>&gt;&gt; Show me a single third party product you think works identically to any specific MS product in every single respect at all times.

To be fair, I should ask, &quot;once we find a mistake, can we fix it?&quot;

With FOSS we also will find mistakes (in many cases anyway), but once the bug is diagnosed, we can fix it and usually very quickly. We have the source. This is important not just to find little bugs but to verify that very strange things or violations are not being attempted or lie in wait (eg, the closed source &quot;time-bomb&quot; that is not disclosed and maybe does something even more nasty).

That reverse-engineering sometimes does a good enough job (within a limited context), and many times this is not even true, is because developers don&#039;t usually spend time crafting tricks in their code or into the toolchain. Microsoft has a multi-billion dollar per month revenue set of monopolies to protect. They have also shown to have gotten into that position because of their willingness to stretch the law and the boundaries of ethics. Use your imagination to see what they might do with some of that money. Consider too that it only takes a few developers working at a high clearance level to adjust the code the others do (or perhaps automatically through the in-house tools).. &quot;to foil reverse engineering of our IP.&quot;

On boycottnovell, I&#039;ve seen a 1988 quote of Gates apparently wanting the OS to isolate third party apps for misbehavior. Back then computers, the Internet/networking, Microsoft&#039;s software, their revenues, their size, etc, were a small or even tiny fraction in magnitude of what it is now. I think this was still the large-floppies-in-a-bag world with sparse online connectivity and low bandwidth. Microsoft was very small.

Fast forward to today many years and experiences later. Much has changed, including what is at stake for Microsoft and the many times they have managed to have their way with the law. Even simply coding in bugs is enough to foil reverse-engineering if the bugs are well placed (not to mention that bugs, ambiguous specs, tired employees, etc, offer plausible deniability).

It&#039;s very easy to foil apps if you control the OS. I might eventually get to doing a distro that does just this (but with source code).. it tracks you, it collects data, it gives variable quality hooks to the apps isolating each app individually.. Then maybe have people use the distro and through online updates change the behavior based on some secret formula (ie, &quot;which project forums treated me well&quot;). ... :-P

The problem:
(a) Do we know what the software is supposed to be doing? Yes for FOSS or honest closed apps. No for Microsoft sw.
(b) Is there an active effort to foil spec&#039;d behavior and reverse-engineering? No for FOSS or honest closed apps. Yes for Microsoft sw.

This is why testing and reverse engineering is likely to miss many problem areas. And Microsoft has lots of money to help build their &quot;protections of IP.&quot;

Also, in practice simply by keeping secrets and using other levers, Microsoft can come out ahead. They likely reserve their greatest tricks when they target specific apps or groups. I can&#039;t stand competition where you are only safe so long as you don&#039;t pose a threat or aren&#039;t doing a very good app.</description>
		<content:encoded><![CDATA[<p>&gt;&gt; Show me a single third party product you think works identically to any specific MS product in every single respect at all times.</p>
<p>To be fair, I should ask, &#8220;once we find a mistake, can we fix it?&#8221;</p>
<p>With FOSS we also will find mistakes (in many cases anyway), but once the bug is diagnosed, we can fix it and usually very quickly. We have the source. This is important not just to find little bugs but to verify that very strange things or violations are not being attempted or lie in wait (eg, the closed source &#8220;time-bomb&#8221; that is not disclosed and maybe does something even more nasty).</p>
<p>That reverse-engineering sometimes does a good enough job (within a limited context), and many times this is not even true, is because developers don&#8217;t usually spend time crafting tricks in their code or into the toolchain. Microsoft has a multi-billion dollar per month revenue set of monopolies to protect. They have also shown to have gotten into that position because of their willingness to stretch the law and the boundaries of ethics. Use your imagination to see what they might do with some of that money. Consider too that it only takes a few developers working at a high clearance level to adjust the code the others do (or perhaps automatically through the in-house tools).. &#8220;to foil reverse engineering of our IP.&#8221;</p>
<p>On boycottnovell, I&#8217;ve seen a 1988 quote of Gates apparently wanting the OS to isolate third party apps for misbehavior. Back then computers, the Internet/networking, Microsoft&#8217;s software, their revenues, their size, etc, were a small or even tiny fraction in magnitude of what it is now. I think this was still the large-floppies-in-a-bag world with sparse online connectivity and low bandwidth. Microsoft was very small.</p>
<p>Fast forward to today many years and experiences later. Much has changed, including what is at stake for Microsoft and the many times they have managed to have their way with the law. Even simply coding in bugs is enough to foil reverse-engineering if the bugs are well placed (not to mention that bugs, ambiguous specs, tired employees, etc, offer plausible deniability).</p>
<p>It&#8217;s very easy to foil apps if you control the OS. I might eventually get to doing a distro that does just this (but with source code).. it tracks you, it collects data, it gives variable quality hooks to the apps isolating each app individually.. Then maybe have people use the distro and through online updates change the behavior based on some secret formula (ie, &#8220;which project forums treated me well&#8221;). &#8230; <img src='http://techrights.org/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> </p>
<p>The problem:<br />
(a) Do we know what the software is supposed to be doing? Yes for FOSS or honest closed apps. No for Microsoft sw.<br />
(b) Is there an active effort to foil spec&#8217;d behavior and reverse-engineering? No for FOSS or honest closed apps. Yes for Microsoft sw.</p>
<p>This is why testing and reverse engineering is likely to miss many problem areas. And Microsoft has lots of money to help build their &#8220;protections of IP.&#8221;</p>
<p>Also, in practice simply by keeping secrets and using other levers, Microsoft can come out ahead. They likely reserve their greatest tricks when they target specific apps or groups. I can&#8217;t stand competition where you are only safe so long as you don&#8217;t pose a threat or aren&#8217;t doing a very good app.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jose_X</title>
		<link>http://techrights.org/2008/09/13/microsoft-admitted-mono-trap/comment-page-30/#comment-24399</link>
		<dc:creator>Jose_X</dc:creator>
		<pubDate>Sat, 20 Sep 2008 02:14:02 +0000</pubDate>
		<guid isPermaLink="false">http://boycottnovell.com/2008/09/13/microsoft-admitted-mono-trap/#comment-24399</guid>
		<description>&gt;&gt; 2. Jose: I&#039;m guessing what BITBW was referring to was that you write a bunch of tests that check the behavior of something in a bunch of different situations. From that, you can deduce how something works. You then go and implement something else with the same API, and you can very effectively mimick the behavior.
&gt;&gt; This is called reverse engineering.\

And my answer was that you can only feel &quot;good enough&quot; comfortable about what you specifically tested. You can take your chances with everything else.

In practice, ie, among friends, you can get great coverage if you know what the behavior is supposed to be and you test boundary points and various key data in general.

With Microsoft software, the spec is not what their software is supposed to do. What is their software supposed to do if not the spec? What their software is supposed to do is something only Bill Gates and I know, but I&#039;d have to shoot you if I told you ;-)

Let&#039;s talk a second about continuous well-defined (etc etc) math functions vs. a computer program. If you know you have a linear function in mathematics, you need only know two test points and then you know everything. That is because math defines a line perfectly that way. A discrete computer program OTOH can produce any arbitrary map from its inputs to its outputs. It&#039;s the math equiv of an arbitrary mapping from an infinite domain to the corresponding infinite range. This means that if you don&#039;t measure every output for every input, you could leave holes behind that don&#039;t conform to the model you are reverse-guessgeneering. In other words, a &quot;line&quot; function in the computer can plot all X&#039;s to the proper Y&#039;s except for 34.32. Why? Because that happened to have been the value the developers of the program decided to use for trap/secret bypassing backdoors or to execute a set of secret extensions... or to create rarely occurring misbehavior for the interfacing third party app... or because of a bug.. because they want voting tallies to reverse and start counting backwards when some point is reached.. why? I don&#039;t know, but the point is that anything like this can happen.

If Microsoft could be assumed to want to follow the spec at all costs, we would not be here. They would not be in court every day of the year, and they also would not have a monopoly. Bill Gates would have much less money. ETC.

Show me a single third party product you think works identically to any specific MS product in every single respect at all times. .. oh, time! I was just looking above at space mappings at a single point in time. You mean that the &quot;tricks&quot; and traps can change location and behavior over time, too? [BTW, list such an app for the record, but I won&#039;t make an attempt to use it to disprove you. Surely, you can find 10 or 20 such clones, right? Surely, reverse engineering is an art.. I mean, a science many practice, right? I don&#039;t think I can find or create such apps, but I think you have that magic reverse-engineering touch. I look forward to your submission. Surely, people would not keep trying unless several had succeeded before among the thousands that had tried.. unless of course there is money involved for continuing to try.]</description>
		<content:encoded><![CDATA[<p>&gt;&gt; 2. Jose: I&#8217;m guessing what BITBW was referring to was that you write a bunch of tests that check the behavior of something in a bunch of different situations. From that, you can deduce how something works. You then go and implement something else with the same API, and you can very effectively mimick the behavior.<br />
&gt;&gt; This is called reverse engineering.\</p>
<p>And my answer was that you can only feel &#8220;good enough&#8221; comfortable about what you specifically tested. You can take your chances with everything else.</p>
<p>In practice, ie, among friends, you can get great coverage if you know what the behavior is supposed to be and you test boundary points and various key data in general.</p>
<p>With Microsoft software, the spec is not what their software is supposed to do. What is their software supposed to do if not the spec? What their software is supposed to do is something only Bill Gates and I know, but I&#8217;d have to shoot you if I told you <img src='http://techrights.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Let&#8217;s talk a second about continuous well-defined (etc etc) math functions vs. a computer program. If you know you have a linear function in mathematics, you need only know two test points and then you know everything. That is because math defines a line perfectly that way. A discrete computer program OTOH can produce any arbitrary map from its inputs to its outputs. It&#8217;s the math equiv of an arbitrary mapping from an infinite domain to the corresponding infinite range. This means that if you don&#8217;t measure every output for every input, you could leave holes behind that don&#8217;t conform to the model you are reverse-guessgeneering. In other words, a &#8220;line&#8221; function in the computer can plot all X&#8217;s to the proper Y&#8217;s except for 34.32. Why? Because that happened to have been the value the developers of the program decided to use for trap/secret bypassing backdoors or to execute a set of secret extensions&#8230; or to create rarely occurring misbehavior for the interfacing third party app&#8230; or because of a bug.. because they want voting tallies to reverse and start counting backwards when some point is reached.. why? I don&#8217;t know, but the point is that anything like this can happen.</p>
<p>If Microsoft could be assumed to want to follow the spec at all costs, we would not be here. They would not be in court every day of the year, and they also would not have a monopoly. Bill Gates would have much less money. ETC.</p>
<p>Show me a single third party product you think works identically to any specific MS product in every single respect at all times. .. oh, time! I was just looking above at space mappings at a single point in time. You mean that the &#8220;tricks&#8221; and traps can change location and behavior over time, too? [BTW, list such an app for the record, but I won't make an attempt to use it to disprove you. Surely, you can find 10 or 20 such clones, right? Surely, reverse engineering is an art.. I mean, a science many practice, right? I don't think I can find or create such apps, but I think you have that magic reverse-engineering touch. I look forward to your submission. Surely, people would not keep trying unless several had succeeded before among the thousands that had tried.. unless of course there is money involved for continuing to try.]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jose_X</title>
		<link>http://techrights.org/2008/09/13/microsoft-admitted-mono-trap/comment-page-30/#comment-24397</link>
		<dc:creator>Jose_X</dc:creator>
		<pubDate>Sat, 20 Sep 2008 01:52:11 +0000</pubDate>
		<guid isPermaLink="false">http://boycottnovell.com/2008/09/13/microsoft-admitted-mono-trap/#comment-24397</guid>
		<description>&gt;&gt;This term, &quot;interoperability&quot;, is becoming loathed by more and more people because, unlike standards, it strives for approximation.

The people wanting a good standard would strive for a quality product capable of allowing perfect interop merely through the study of the standard, at least this would be true in the ideal case (eg, no implementation bugs, no spec ambiguities, etc).

I don&#039;t believe English can be made that precise in general. OASIS is working on testsuite specs for ODF (tests are useful if on top of a solid standard). OO.o, KOffice, ... source code are available to enable interop with those particular products.

Does MS reveal source code? Well, they should reveal some for $$, but even here there is no way to verify what they showed you is what they ship. You also don&#039;t have access to the source code of their toolchain. This means deviations in their compilers from the standards will lead the code they showed you not to work as you would expect. Finally, I am assuming good faith on their part since they can play many sorts of games even through revealing source.

Everything about OO.o is open source (all functions calls all the way straight into the heart of the kernel).

Everything about MSO carries a red flag, from the lack of source code all the way to the expected motivations of the monopolist vendor.</description>
		<content:encoded><![CDATA[<p>&gt;&gt;This term, &#8220;interoperability&#8221;, is becoming loathed by more and more people because, unlike standards, it strives for approximation.</p>
<p>The people wanting a good standard would strive for a quality product capable of allowing perfect interop merely through the study of the standard, at least this would be true in the ideal case (eg, no implementation bugs, no spec ambiguities, etc).</p>
<p>I don&#8217;t believe English can be made that precise in general. OASIS is working on testsuite specs for ODF (tests are useful if on top of a solid standard). OO.o, KOffice, &#8230; source code are available to enable interop with those particular products.</p>
<p>Does MS reveal source code? Well, they should reveal some for $$, but even here there is no way to verify what they showed you is what they ship. You also don&#8217;t have access to the source code of their toolchain. This means deviations in their compilers from the standards will lead the code they showed you not to work as you would expect. Finally, I am assuming good faith on their part since they can play many sorts of games even through revealing source.</p>
<p>Everything about OO.o is open source (all functions calls all the way straight into the heart of the kernel).</p>
<p>Everything about MSO carries a red flag, from the lack of source code all the way to the expected motivations of the monopolist vendor.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dan O'Brian</title>
		<link>http://techrights.org/2008/09/13/microsoft-admitted-mono-trap/comment-page-30/#comment-24394</link>
		<dc:creator>Dan O'Brian</dc:creator>
		<pubDate>Sat, 20 Sep 2008 01:18:13 +0000</pubDate>
		<guid isPermaLink="false">http://boycottnovell.com/2008/09/13/microsoft-admitted-mono-trap/#comment-24394</guid>
		<description>1. As Jose has mentioned, Mono is not useless w/o interoperability. It can stand on its own 2 feet.

2. Jose: I&#039;m guessing what BITBW was referring to was that you write a bunch of tests that check the behavior of something in a bunch of different situations. From that, you can deduce how something works. You then go and implement something else with the same API, and you can very effectively mimick the behavior.

This is called reverse engineering.</description>
		<content:encoded><![CDATA[<p>1. As Jose has mentioned, Mono is not useless w/o interoperability. It can stand on its own 2 feet.</p>
<p>2. Jose: I&#8217;m guessing what BITBW was referring to was that you write a bunch of tests that check the behavior of something in a bunch of different situations. From that, you can deduce how something works. You then go and implement something else with the same API, and you can very effectively mimick the behavior.</p>
<p>This is called reverse engineering.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Roy Schestowitz</title>
		<link>http://techrights.org/2008/09/13/microsoft-admitted-mono-trap/comment-page-30/#comment-24386</link>
		<dc:creator>Roy Schestowitz</dc:creator>
		<pubDate>Sat, 20 Sep 2008 00:41:44 +0000</pubDate>
		<guid isPermaLink="false">http://boycottnovell.com/2008/09/13/microsoft-admitted-mono-trap/#comment-24386</guid>
		<description>I really love the example which illustrates the impossibility of interoperability. This term, &quot;interoperability&quot;, is becoming loathed by more and more people because, unlike standards, it strives for approximation. It&#039;s the best it can achieve and it typically involves just two parties, thus limiting the space of competition to just a colluding few. If Mono needs to rely on this thing called &quot;interoperability&quot; (OOXML has the same problem), then it&#039;s doomed to begin with. It&#039;s about one leader&#039;s implementation (Microsoft) and a bunch of followers begging for a rope.</description>
		<content:encoded><![CDATA[<p>I really love the example which illustrates the impossibility of interoperability. This term, &#8220;interoperability&#8221;, is becoming loathed by more and more people because, unlike standards, it strives for approximation. It&#8217;s the best it can achieve and it typically involves just two parties, thus limiting the space of competition to just a colluding few. If Mono needs to rely on this thing called &#8220;interoperability&#8221; (OOXML has the same problem), then it&#8217;s doomed to begin with. It&#8217;s about one leader&#8217;s implementation (Microsoft) and a bunch of followers begging for a rope.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jose_X</title>
		<link>http://techrights.org/2008/09/13/microsoft-admitted-mono-trap/comment-page-30/#comment-24379</link>
		<dc:creator>Jose_X</dc:creator>
		<pubDate>Sat, 20 Sep 2008 00:21:34 +0000</pubDate>
		<guid isPermaLink="false">http://boycottnovell.com/2008/09/13/microsoft-admitted-mono-trap/#comment-24379</guid>
		<description>&gt;&gt; You don&#039;t actually need source code to get compatibility, you simply need to write unit tests and make sure they work on both systems.

Don&#039;t be silly. Why does having 10 unit tests matter? Isn&#039;t 1 enough? Maybe 1000000 is better? Why?

A unit test simply shows that that particular test works. It says nothing about what wasn&#039;t tested.

More importantly, however, is that you can&#039;t measure the behavior on Windows because it is not transparent (unless you are running it so that every single instruction is trapped, recorded, analyzed, compared, while every single memory byte and byte on the drives are similarly recorded and tracked for each such instruction).

I know you did not do this. Possibly a &quot;Hello World&quot; program would take at least millions of such (eg) x86 instructions. Not to mention that hardware on the PC bus would also have to be tracked (including opaque graphics cards and motherboard chips etc).

Look. I am saying something that is not supposed to be an issue among friends, but it is when Microsoft gets together with hardware vendors and chooses to mess things up. And they don&#039;t have to get together with any hardware makers. Windows is plenty. Windows is opaque unless you literally do what I just described above to in effect reverse engineer Windows. This is not a task humans or their computer programs are likely to do anytime soon for such a large blob that is an OS like Windows. [How well we succeed depends on how much or not Microsoft wants to hide their tracks and succeeds at doing so, though, in any case Windows is a monster of a program in size and complexity.]

If I have lost you, let me try again with an example.

How do you define &quot;something works&quot;? You can look and study the code and believe that X should happen. Then you might observe X on both platforms and conclude that the two implementations work the same. And perhaps they mostly do.

But what if when you study the code, you think X yet on Windows Y happens which is behavior that is subtly different, eg, the registry is modified so that on next log in you app fails to work. Maybe you observe Y as if it were X because you weren&#039;t measuring too carefully or tracking instructions, memory, nor the registry (btw, you can&#039;t track memory the OS occupies on x386 and above unless the OS allows you and no OS does this.. or if you run within the OS).

I can re-explain if you want. Just ask.

This crazy things I am talking about matter because it&#039;s ridiculously easy for Microsoft to pull off (just by being sloppy, in fact), and means that your app might end up doing or lead to anything in reality (eg, phoning home to Microsoft behind your back). Another example, your next OS call to allocate a memory buffer simultaneously corrupts memory you were already using.

We can achieve some level of interop (a high percent), especially, if there is no intelligent/concerted effort to sabotage. Otherwise, you can&#039;t really know/measure.

If you trust Microsoft for all your applications for all time, go ahead. I do not. I don&#039;t even trust their (superhuman) ability to code bug free or make specs that are completely unambiguous, consistent, fully specified, etc. I certainly don&#039;t trust their intentions or business plan.

You are talking about interop at a very high level for toy programs. The reality is that MS lock-in will never be solved except in pieces and even then we can&#039;t be sure. We play the rat race and our software is never quite just right with their stuff. This is especially true for complex programs.

So in practice things might work most of the time &quot;good enough&quot;, but that can change the moment Microsoft feels threatened (and they always feel threatened). It&#039;s especially easy to thwart your app in predictable ways if you reveal your source. Also, Microsoft likely always gives you something subpar so that you can&#039;t compete on an even field with their integration-apps.

As for performance, that is not really an issue for toy apps with today&#039;s computers, but you might be using a lot more CPU than you should.

Was your app a toy? Did you even test everything you can see? Do you know if the exact input string &quot;http://www.google.com/X/Y/Z&quot; won&#039;t translate to &quot;http://www.microsoft.com/A/B/Z&quot;? Have you tested every possible input string? .. I am just getting started.

If you insist you can have interop, I did not make myself clear above, but I don&#039;t know what your background is so don&#039;t know how much more to explain without you asking me first for more examples.

&gt;&gt; From what I&#039;ve seen, Mono has a LOT of unit tests, more than any other Free Software project I have seen.

I have no idea, but surely you haven&#039;t tested everything under the sun. For arbitrary inputs (eg, mouse clicks on screen or typed strings), this would constitute an infinite set).

Mono might work if you guys separate from Microsoft&#039;s lead. This way, you can at least have as much confidence as you want/need whenever you run the app over a FOSS platform. You would also find out quickly if Microsoft will sue.

Try it and see if Microsoft comes after anyone. Ditch Windows, for security, if for nothing of what I have said in this reply or if you don&#039;t care about privacy.

BTW, I don&#039;t pretend that FOSS has behavior (especially on a desktop) that anyone is likely to completely predict, but being able to check up and verify or being able to find the problems is priceless.

As you can see, for practical &quot;good enough&quot; results, Microsoft platforms are usually fine.. at least until it&#039;s time for an upgrade.

[I *may* not post again until earliest tomorrow.]</description>
		<content:encoded><![CDATA[<p>&gt;&gt; You don&#8217;t actually need source code to get compatibility, you simply need to write unit tests and make sure they work on both systems.</p>
<p>Don&#8217;t be silly. Why does having 10 unit tests matter? Isn&#8217;t 1 enough? Maybe 1000000 is better? Why?</p>
<p>A unit test simply shows that that particular test works. It says nothing about what wasn&#8217;t tested.</p>
<p>More importantly, however, is that you can&#8217;t measure the behavior on Windows because it is not transparent (unless you are running it so that every single instruction is trapped, recorded, analyzed, compared, while every single memory byte and byte on the drives are similarly recorded and tracked for each such instruction).</p>
<p>I know you did not do this. Possibly a &#8220;Hello World&#8221; program would take at least millions of such (eg) x86 instructions. Not to mention that hardware on the PC bus would also have to be tracked (including opaque graphics cards and motherboard chips etc).</p>
<p>Look. I am saying something that is not supposed to be an issue among friends, but it is when Microsoft gets together with hardware vendors and chooses to mess things up. And they don&#8217;t have to get together with any hardware makers. Windows is plenty. Windows is opaque unless you literally do what I just described above to in effect reverse engineer Windows. This is not a task humans or their computer programs are likely to do anytime soon for such a large blob that is an OS like Windows. [How well we succeed depends on how much or not Microsoft wants to hide their tracks and succeeds at doing so, though, in any case Windows is a monster of a program in size and complexity.]</p>
<p>If I have lost you, let me try again with an example.</p>
<p>How do you define &#8220;something works&#8221;? You can look and study the code and believe that X should happen. Then you might observe X on both platforms and conclude that the two implementations work the same. And perhaps they mostly do.</p>
<p>But what if when you study the code, you think X yet on Windows Y happens which is behavior that is subtly different, eg, the registry is modified so that on next log in you app fails to work. Maybe you observe Y as if it were X because you weren&#8217;t measuring too carefully or tracking instructions, memory, nor the registry (btw, you can&#8217;t track memory the OS occupies on x386 and above unless the OS allows you and no OS does this.. or if you run within the OS).</p>
<p>I can re-explain if you want. Just ask.</p>
<p>This crazy things I am talking about matter because it&#8217;s ridiculously easy for Microsoft to pull off (just by being sloppy, in fact), and means that your app might end up doing or lead to anything in reality (eg, phoning home to Microsoft behind your back). Another example, your next OS call to allocate a memory buffer simultaneously corrupts memory you were already using.</p>
<p>We can achieve some level of interop (a high percent), especially, if there is no intelligent/concerted effort to sabotage. Otherwise, you can&#8217;t really know/measure.</p>
<p>If you trust Microsoft for all your applications for all time, go ahead. I do not. I don&#8217;t even trust their (superhuman) ability to code bug free or make specs that are completely unambiguous, consistent, fully specified, etc. I certainly don&#8217;t trust their intentions or business plan.</p>
<p>You are talking about interop at a very high level for toy programs. The reality is that MS lock-in will never be solved except in pieces and even then we can&#8217;t be sure. We play the rat race and our software is never quite just right with their stuff. This is especially true for complex programs.</p>
<p>So in practice things might work most of the time &#8220;good enough&#8221;, but that can change the moment Microsoft feels threatened (and they always feel threatened). It&#8217;s especially easy to thwart your app in predictable ways if you reveal your source. Also, Microsoft likely always gives you something subpar so that you can&#8217;t compete on an even field with their integration-apps.</p>
<p>As for performance, that is not really an issue for toy apps with today&#8217;s computers, but you might be using a lot more CPU than you should.</p>
<p>Was your app a toy? Did you even test everything you can see? Do you know if the exact input string &#8220;http://www.google.com/X/Y/Z&#8221; won&#8217;t translate to &#8220;http://www.microsoft.com/A/B/Z&#8221;? Have you tested every possible input string? .. I am just getting started.</p>
<p>If you insist you can have interop, I did not make myself clear above, but I don&#8217;t know what your background is so don&#8217;t know how much more to explain without you asking me first for more examples.</p>
<p>&gt;&gt; From what I&#8217;ve seen, Mono has a LOT of unit tests, more than any other Free Software project I have seen.</p>
<p>I have no idea, but surely you haven&#8217;t tested everything under the sun. For arbitrary inputs (eg, mouse clicks on screen or typed strings), this would constitute an infinite set).</p>
<p>Mono might work if you guys separate from Microsoft&#8217;s lead. This way, you can at least have as much confidence as you want/need whenever you run the app over a FOSS platform. You would also find out quickly if Microsoft will sue.</p>
<p>Try it and see if Microsoft comes after anyone. Ditch Windows, for security, if for nothing of what I have said in this reply or if you don&#8217;t care about privacy.</p>
<p>BTW, I don&#8217;t pretend that FOSS has behavior (especially on a desktop) that anyone is likely to completely predict, but being able to check up and verify or being able to find the problems is priceless.</p>
<p>As you can see, for practical &#8220;good enough&#8221; results, Microsoft platforms are usually fine.. at least until it&#8217;s time for an upgrade.</p>
<p>[I *may* not post again until earliest tomorrow.]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Baby In The Bath Water</title>
		<link>http://techrights.org/2008/09/13/microsoft-admitted-mono-trap/comment-page-29/#comment-24376</link>
		<dc:creator>Baby In The Bath Water</dc:creator>
		<pubDate>Fri, 19 Sep 2008 23:43:07 +0000</pubDate>
		<guid isPermaLink="false">http://boycottnovell.com/2008/09/13/microsoft-admitted-mono-trap/#comment-24376</guid>
		<description>Mono does, in fact, achieve interoperability. I have personally run .NET apps written for Windows under Mono on Linux and they work. No recompile or anything.

You don&#039;t actually need source code to get compatibility, you simply need to write unit tests and make sure they work on both systems.

From what I&#039;ve seen, Mono has a LOT of unit tests, more than any other Free Software project I have seen.

&lt;font color=&quot;#ff0000&quot;&gt;&lt;b&gt;Note&lt;/b&gt;: this comment was &lt;a href=&quot;http://boycottnovell.com/2009/01/09/novell-is-heckling-critics/&quot; rel=&quot;nofollow&quot;&gt;posted from Novell&#039;s headquarters&lt;/a&gt;.</description>
		<content:encoded><![CDATA[<p>Mono does, in fact, achieve interoperability. I have personally run .NET apps written for Windows under Mono on Linux and they work. No recompile or anything.</p>
<p>You don&#8217;t actually need source code to get compatibility, you simply need to write unit tests and make sure they work on both systems.</p>
<p>From what I&#8217;ve seen, Mono has a LOT of unit tests, more than any other Free Software project I have seen.</p>
<p><font color="#ff0000"><b>Note</b>: this comment was <a href="http://boycottnovell.com/2009/01/09/novell-is-heckling-critics/" rel="nofollow">posted from Novell&#8217;s headquarters</a>.</font></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jose_X</title>
		<link>http://techrights.org/2008/09/13/microsoft-admitted-mono-trap/comment-page-29/#comment-24368</link>
		<dc:creator>Jose_X</dc:creator>
		<pubDate>Fri, 19 Sep 2008 22:58:08 +0000</pubDate>
		<guid isPermaLink="false">http://boycottnovell.com/2008/09/13/microsoft-admitted-mono-trap/#comment-24368</guid>
		<description>&gt;&gt; I can&#039;t say why the Mono team decided to implement .NET, but one possible reason they did that rather than inventing their own wheel is because inventing your own wheel is quite costly.

Microsoft is not an ordinary player. Re-inventing their wheels, especially when they wave patent threats around and work from a closed source monopoly position, is a very good idea. We re-invent wheels in real society when necessary. You just don&#039;t want to do it when the existing wheels will do.

&gt;&gt; The amount of research and development that went into designing .NET was huge and Microsoft had a lot of the best minds in the field working on it. Does the Mono team have those kinds of things going for it? Probably not.

This excuse is weak unless you don&#039;t mind using that wheel. People reinvent wheels all the time. Microsoft leveraged much existing material. Don&#039;t overestimate their minds. FOSS is not supposed to work, remember -- a ragtag bunch of hippies scratching themselves -- but it does.

&gt;&gt; Besides having a a design to start with by implementing the .NET specifications, they also get compatibility with Microsof&#039;s .NET (which is a bonus)

Not really possible.

Not to mention this is inconsistent with Novell&#039;s (inaccurate) position that they are achieving interop because they are working closely with Microsoft, unless the mono people never expected to achieve (essentially impossible) interop except through special deals and contacts with Microsoft. If the mono people believed this, then this is as wonderful a reason as any to reinvent the wheel unless you want to run a Microsoft rat race (and risk much time and money much as IBM did with OS/2). If the mono people don&#039;t believe this (ie, if they believe that you *can* achieve interop straight from following the spec), then they (would be fools and) would be contradicting Novell&#039;s position that they have an advantage over all other implementations because of the deals they have with MS.

&gt;&gt; It seems to me that if it is made trivial for them to write applications that work both on Windows and Linux, then Linux users win because they get a wider selection of software to choose from.

Again, interop is not achieved from the spec (ask Novell). You need to have access to the entire source code (and then only with the assumption there are no bugs).

The reality is that full interop is not really possible but some % of it is possible. Of course, if you think Microsoft will help that percentage be very high and cover everything of significance or else offer money to the customers when mis-matching occurs, I have some land in Florida....

When FOSS apps fail to interoperate, have bugs, etc, you have the source code right there. There is good faith among most FOSS developers (not that faith is needed when the source is right there). These things are not only not true with Microsoft, but Microsoft has every incentive to be sloppy and break with the &quot;best&quot; interpretation of any given standard since that would help secure their monopoly position.

Working on mono seems to me as practice for trying to get a job with Microsoft. The whole premise to trying to interop with Microsoft is broken.

&quot;What about OO.o .doc formats,&quot; AlexH will say? That is most certainly not a perfect or complete conversion by any means. Fortunately, for adequate subsets of MSO, it can do a good enough job.

But there is a real difference. If text is a little off on the page, you can still read that and fix it perhaps. You may not even notice in some cases.

If a bit is off within a long instruction stream, the whole system might come &quot;crashing down&quot; (ie, interop broken perhaps horribly badly leading to nothing useful).

Now, it&#039;s very easy to be off by a bit somewhere, especially when one side of the conversation has real interests in having those bits be incorrect here and there.

Also, the bit thing also can apply to documents to the extent off-by-a-bit can lead to complete garbage (eg, change a single random bit on a .tgz file and likely you will get garbage). To this end, OOXML might be a format more &quot;properly&quot; designed to make it easier for such garbage to result from such a small error. OO.o tries to find all the things it needs so that .doc work. In some cases, they fail a little, in others (probably more so with macros and instructions), they fail much more.

[For those not following, &quot;bit&quot; is the term used to describe a single on/off entity within a computer.]

&gt;&gt; Why didn&#039;t they use the Parrot VM?

I think parrot was new as well, but the question isn&#039;t why didn&#039;t they use parrot, it&#039;s why didn&#039;t they join a group to build parrot instead of starting mono? Of course, you already gave a partial response to that (&gt;&gt; too much trouble to re-implement that wheel).

Don&#039;t mean to be feisty in this post, btw, or to appear to be attacking you. It&#039;s a bit of frustration on my part. The interop thing is exactly why people spend lots of dollars and time playing a never-ending game of catch with Microsoft (a Rat Race).

Deal with a closed source monopolist? No no.

[Mono can be useful without interop with MSdotnet. I don&#039;t deny that. In earlier posts, I explained why I wouldn&#039;t take the mono path, but different strokes for different folks. ..And maybe in the future some day I will be using mono! .. ah-ah- ah  ahh aaaachew... sorry.]</description>
		<content:encoded><![CDATA[<p>&gt;&gt; I can&#8217;t say why the Mono team decided to implement .NET, but one possible reason they did that rather than inventing their own wheel is because inventing your own wheel is quite costly.</p>
<p>Microsoft is not an ordinary player. Re-inventing their wheels, especially when they wave patent threats around and work from a closed source monopoly position, is a very good idea. We re-invent wheels in real society when necessary. You just don&#8217;t want to do it when the existing wheels will do.</p>
<p>&gt;&gt; The amount of research and development that went into designing .NET was huge and Microsoft had a lot of the best minds in the field working on it. Does the Mono team have those kinds of things going for it? Probably not.</p>
<p>This excuse is weak unless you don&#8217;t mind using that wheel. People reinvent wheels all the time. Microsoft leveraged much existing material. Don&#8217;t overestimate their minds. FOSS is not supposed to work, remember &#8212; a ragtag bunch of hippies scratching themselves &#8212; but it does.</p>
<p>&gt;&gt; Besides having a a design to start with by implementing the .NET specifications, they also get compatibility with Microsof&#8217;s .NET (which is a bonus)</p>
<p>Not really possible.</p>
<p>Not to mention this is inconsistent with Novell&#8217;s (inaccurate) position that they are achieving interop because they are working closely with Microsoft, unless the mono people never expected to achieve (essentially impossible) interop except through special deals and contacts with Microsoft. If the mono people believed this, then this is as wonderful a reason as any to reinvent the wheel unless you want to run a Microsoft rat race (and risk much time and money much as IBM did with OS/2). If the mono people don&#8217;t believe this (ie, if they believe that you *can* achieve interop straight from following the spec), then they (would be fools and) would be contradicting Novell&#8217;s position that they have an advantage over all other implementations because of the deals they have with MS.</p>
<p>&gt;&gt; It seems to me that if it is made trivial for them to write applications that work both on Windows and Linux, then Linux users win because they get a wider selection of software to choose from.</p>
<p>Again, interop is not achieved from the spec (ask Novell). You need to have access to the entire source code (and then only with the assumption there are no bugs).</p>
<p>The reality is that full interop is not really possible but some % of it is possible. Of course, if you think Microsoft will help that percentage be very high and cover everything of significance or else offer money to the customers when mis-matching occurs, I have some land in Florida&#8230;.</p>
<p>When FOSS apps fail to interoperate, have bugs, etc, you have the source code right there. There is good faith among most FOSS developers (not that faith is needed when the source is right there). These things are not only not true with Microsoft, but Microsoft has every incentive to be sloppy and break with the &#8220;best&#8221; interpretation of any given standard since that would help secure their monopoly position.</p>
<p>Working on mono seems to me as practice for trying to get a job with Microsoft. The whole premise to trying to interop with Microsoft is broken.</p>
<p>&#8220;What about OO.o .doc formats,&#8221; AlexH will say? That is most certainly not a perfect or complete conversion by any means. Fortunately, for adequate subsets of MSO, it can do a good enough job.</p>
<p>But there is a real difference. If text is a little off on the page, you can still read that and fix it perhaps. You may not even notice in some cases.</p>
<p>If a bit is off within a long instruction stream, the whole system might come &#8220;crashing down&#8221; (ie, interop broken perhaps horribly badly leading to nothing useful).</p>
<p>Now, it&#8217;s very easy to be off by a bit somewhere, especially when one side of the conversation has real interests in having those bits be incorrect here and there.</p>
<p>Also, the bit thing also can apply to documents to the extent off-by-a-bit can lead to complete garbage (eg, change a single random bit on a .tgz file and likely you will get garbage). To this end, OOXML might be a format more &#8220;properly&#8221; designed to make it easier for such garbage to result from such a small error. OO.o tries to find all the things it needs so that .doc work. In some cases, they fail a little, in others (probably more so with macros and instructions), they fail much more.</p>
<p>[For those not following, "bit" is the term used to describe a single on/off entity within a computer.]</p>
<p>&gt;&gt; Why didn&#8217;t they use the Parrot VM?</p>
<p>I think parrot was new as well, but the question isn&#8217;t why didn&#8217;t they use parrot, it&#8217;s why didn&#8217;t they join a group to build parrot instead of starting mono? Of course, you already gave a partial response to that (&gt;&gt; too much trouble to re-implement that wheel).</p>
<p>Don&#8217;t mean to be feisty in this post, btw, or to appear to be attacking you. It&#8217;s a bit of frustration on my part. The interop thing is exactly why people spend lots of dollars and time playing a never-ending game of catch with Microsoft (a Rat Race).</p>
<p>Deal with a closed source monopolist? No no.</p>
<p>[Mono can be useful without interop with MSdotnet. I don't deny that. In earlier posts, I explained why I wouldn't take the mono path, but different strokes for different folks. ..And maybe in the future some day I will be using mono! .. ah-ah- ah  ahh aaaachew... sorry.]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jose_X</title>
		<link>http://techrights.org/2008/09/13/microsoft-admitted-mono-trap/comment-page-29/#comment-24360</link>
		<dc:creator>Jose_X</dc:creator>
		<pubDate>Fri, 19 Sep 2008 22:18:22 +0000</pubDate>
		<guid isPermaLink="false">http://boycottnovell.com/2008/09/13/microsoft-admitted-mono-trap/#comment-24360</guid>
		<description>&gt;&gt; Sort of, but still not right. They&#039;re adding CSS 3 properties for people to test. They cannot add those with the CSS 3 names because that would conflict with CSS 2.1.

When you say something is not correct, you should point out how it is wrong.

I think what you are saying is that Microsoft is adding as their extensions CSS 3.0 trial properties. This doesn&#039;t contradict what I said. It simply adds new information.

For those following along, AlexH is saying that Microsoft&#039;s extensions are innocent features-in-testing from the yet to be fully specified/ratified CSS 3.0.

So to repeat, Microsoft is doing what they have to do to change CSS 2.1 while not violating the spec.

AlexH claims that the (only) extensions they are adding are items being considered for CSS 3.0 and (presumably) nothing else.

If all of this is true, there is at this point not much to get upset over unless you want to practices ;-0.</description>
		<content:encoded><![CDATA[<p>&gt;&gt; Sort of, but still not right. They&#8217;re adding CSS 3 properties for people to test. They cannot add those with the CSS 3 names because that would conflict with CSS 2.1.</p>
<p>When you say something is not correct, you should point out how it is wrong.</p>
<p>I think what you are saying is that Microsoft is adding as their extensions CSS 3.0 trial properties. This doesn&#8217;t contradict what I said. It simply adds new information.</p>
<p>For those following along, AlexH is saying that Microsoft&#8217;s extensions are innocent features-in-testing from the yet to be fully specified/ratified CSS 3.0.</p>
<p>So to repeat, Microsoft is doing what they have to do to change CSS 2.1 while not violating the spec.</p>
<p>AlexH claims that the (only) extensions they are adding are items being considered for CSS 3.0 and (presumably) nothing else.</p>
<p>If all of this is true, there is at this point not much to get upset over unless you want to practices ;-0.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jose_X</title>
		<link>http://techrights.org/2008/09/13/microsoft-admitted-mono-trap/comment-page-29/#comment-24359</link>
		<dc:creator>Jose_X</dc:creator>
		<pubDate>Fri, 19 Sep 2008 22:11:12 +0000</pubDate>
		<guid isPermaLink="false">http://boycottnovell.com/2008/09/13/microsoft-admitted-mono-trap/#comment-24359</guid>
		<description>AlexH, you didn&#039;t describe anything really, but thanks. As long as you don&#039;t attack people here for not understanding what you yourself did not come close to explaining, I have no problem.

FWIW...

I have no clue what IKVM is (I&#039;ll have to look it up).

You gave absolutely no reason why parrot can&#039;t work (as you mentioned). It is free software so could be changed, but I won&#039;t buy it until I have a reason. I&#039;ll take a look at the article you linked to see if it gives the clue you are withholding.

Point out otherwise, but I believe Java has had introspection since before dotnet existed or at least it has since version 1.2 if not earlier (not sure if dotnet existed then). If you are correct wrt to dotnet&#039;s timeline (I don&#039;t much know the history of dotnet), certainly Java (the standard and Sun&#039;s version) has at least had introspection for something close to a decade and almost certainly before mono got it implemented.

&gt;&gt; Now, these are effectively &quot;interfaces&quot; but they don&#039;t make any implementation decisions. You have the JVM as Sun ship it. ... And obviously, you have Mono, which can run stuff via IKVM.

You are confusing me. You can&#039;t mix VM from different unrelated standards. Maybe what you mean is that you can implement one VM to work over another, but I doubt dotnet&#039;s VM follows the same definitions/interface as Java&#039;s one (I don&#039;t know dotnet).

Anyway, I was expecting more from you here given how you said we didn&#039;t understand dotnet/mono. If you don&#039;t want to share, just don&#039;t criticize. As far as anyone here can tell, you don&#039;t have too much of a clue yourself beyond vague generalizations. [I&#039;m just saying based on what you have posted -- isn&#039;t that how you judged us?]</description>
		<content:encoded><![CDATA[<p>AlexH, you didn&#8217;t describe anything really, but thanks. As long as you don&#8217;t attack people here for not understanding what you yourself did not come close to explaining, I have no problem.</p>
<p>FWIW&#8230;</p>
<p>I have no clue what IKVM is (I&#8217;ll have to look it up).</p>
<p>You gave absolutely no reason why parrot can&#8217;t work (as you mentioned). It is free software so could be changed, but I won&#8217;t buy it until I have a reason. I&#8217;ll take a look at the article you linked to see if it gives the clue you are withholding.</p>
<p>Point out otherwise, but I believe Java has had introspection since before dotnet existed or at least it has since version 1.2 if not earlier (not sure if dotnet existed then). If you are correct wrt to dotnet&#8217;s timeline (I don&#8217;t much know the history of dotnet), certainly Java (the standard and Sun&#8217;s version) has at least had introspection for something close to a decade and almost certainly before mono got it implemented.</p>
<p>&gt;&gt; Now, these are effectively &#8220;interfaces&#8221; but they don&#8217;t make any implementation decisions. You have the JVM as Sun ship it. &#8230; And obviously, you have Mono, which can run stuff via IKVM.</p>
<p>You are confusing me. You can&#8217;t mix VM from different unrelated standards. Maybe what you mean is that you can implement one VM to work over another, but I doubt dotnet&#8217;s VM follows the same definitions/interface as Java&#8217;s one (I don&#8217;t know dotnet).</p>
<p>Anyway, I was expecting more from you here given how you said we didn&#8217;t understand dotnet/mono. If you don&#8217;t want to share, just don&#8217;t criticize. As far as anyone here can tell, you don&#8217;t have too much of a clue yourself beyond vague generalizations. [I'm just saying based on what you have posted -- isn't that how you judged us?]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: AlexH</title>
		<link>http://techrights.org/2008/09/13/microsoft-admitted-mono-trap/comment-page-29/#comment-24351</link>
		<dc:creator>AlexH</dc:creator>
		<pubDate>Fri, 19 Sep 2008 21:51:41 +0000</pubDate>
		<guid isPermaLink="false">http://boycottnovell.com/2008/09/13/microsoft-admitted-mono-trap/#comment-24351</guid>
		<description>&lt;blockquote&gt;So Microsoft is doing what they have to do, according to the spec, in order to add their own “keywords” or “property names”&lt;/blockquote&gt;

Sort of, but still not right. They&#039;re adding CSS 3 properties for people to test. They cannot add those with the CSS 3 names because that would conflict with CSS 2.1.

So, they prefix them with a vendor code: this allows them to develop CSS 3 features without conflicting with existing CSS.</description>
		<content:encoded><![CDATA[<blockquote><p>So Microsoft is doing what they have to do, according to the spec, in order to add their own “keywords” or “property names”</p></blockquote>
<p>Sort of, but still not right. They&#8217;re adding CSS 3 properties for people to test. They cannot add those with the CSS 3 names because that would conflict with CSS 2.1.</p>
<p>So, they prefix them with a vendor code: this allows them to develop CSS 3 features without conflicting with existing CSS.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jose_X</title>
		<link>http://techrights.org/2008/09/13/microsoft-admitted-mono-trap/comment-page-28/#comment-24350</link>
		<dc:creator>Jose_X</dc:creator>
		<pubDate>Fri, 19 Sep 2008 21:48:46 +0000</pubDate>
		<guid isPermaLink="false">http://boycottnovell.com/2008/09/13/microsoft-admitted-mono-trap/#comment-24350</guid>
		<description>AlexH, so &quot;extensions&quot; are a part of CSS going way back. OK. np

...

http://www.w3.org/TR/CSS21/syndata.html
&quot;Section 4.1.2.1 Vendor-specific extensions&quot;

&quot;Keywords and property names beginning with -&#039; or &#039;_&#039; are reserved for vendor-specific extensions.&quot;

This section itself doesn&#039;t describe everything (eg, conformance for an implementation is not addressed here).

Also, note the following:

&quot;Authors should avoid vendor-specific extensions&quot;

So Microsoft is doing what they have to do, according to the spec, in order to add their own &quot;keywords&quot; or &quot;property names&quot; (assuming I&#039;m not missing anything).</description>
		<content:encoded><![CDATA[<p>AlexH, so &#8220;extensions&#8221; are a part of CSS going way back. OK. np</p>
<p>&#8230;</p>
<p><a href="http://www.w3.org/TR/CSS21/syndata.html" rel="nofollow">http://www.w3.org/TR/CSS21/syndata.html</a><br />
&#8220;Section 4.1.2.1 Vendor-specific extensions&#8221;</p>
<p>&#8220;Keywords and property names beginning with -&#8217; or &#8216;_&#8217; are reserved for vendor-specific extensions.&#8221;</p>
<p>This section itself doesn&#8217;t describe everything (eg, conformance for an implementation is not addressed here).</p>
<p>Also, note the following:</p>
<p>&#8220;Authors should avoid vendor-specific extensions&#8221;</p>
<p>So Microsoft is doing what they have to do, according to the spec, in order to add their own &#8220;keywords&#8221; or &#8220;property names&#8221; (assuming I&#8217;m not missing anything).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: AlexH</title>
		<link>http://techrights.org/2008/09/13/microsoft-admitted-mono-trap/comment-page-28/#comment-24349</link>
		<dc:creator>AlexH</dc:creator>
		<pubDate>Fri, 19 Sep 2008 21:43:09 +0000</pubDate>
		<guid isPermaLink="false">http://boycottnovell.com/2008/09/13/microsoft-admitted-mono-trap/#comment-24349</guid>
		<description>@Baby: Parrot has a very specific design better for Perl et al., and until recently every other VM had pretty poor support for dynamic languages.</description>
		<content:encoded><![CDATA[<p>@Baby: Parrot has a very specific design better for Perl et al., and until recently every other VM had pretty poor support for dynamic languages.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Baby In The Bath Water</title>
		<link>http://techrights.org/2008/09/13/microsoft-admitted-mono-trap/comment-page-28/#comment-24348</link>
		<dc:creator>Baby In The Bath Water</dc:creator>
		<pubDate>Fri, 19 Sep 2008 21:33:56 +0000</pubDate>
		<guid isPermaLink="false">http://boycottnovell.com/2008/09/13/microsoft-admitted-mono-trap/#comment-24348</guid>
		<description>I can&#039;t say why the Mono team decided to implement .NET, but one possible reason they did that rather than inventing their own wheel is because inventing your own wheel is quite costly.

The amount of research and development that went into designing .NET was huge and Microsoft had a lot of the best minds in the field working on it. Does the Mono team have those kinds of things going for it? Probably not.

Besides having a a design to start with by implementing the .NET specifications, they also get compatibility with Microsoft&#039;s .NET (which is a bonus). There are a lot more Windows developers out there than there are Linux developers. It seems to me that if it is made trivial for them to write applications that work both on Windows and Linux, then Linux users win because they get a wider selection of software to choose from.

The biggest reason a lot of people I know stick with Windows is because of the apps. They won&#039;t even go Mac even though they love the interface (ugh) because the software they need doesn&#039;t exist for Mac.

As far as &quot;did they fall for the microsoft hype?&quot; - I can&#039;t speak for why the Mono team started developing Mono for certain, but from what I&#039;ve read - they chose to implement it because they got tired of writing large applications in C and were in search of a better platform. At the time, Java was not free (and as I discovered a while back, some of the Mono developers were the creators of the GNU Classpath project), so it seems likely that Java had been considered.

Why didn&#039;t they use the Parrot VM? That&#039;s a question you&#039;d have to ask the Mono team, but quite possibly they weren&#039;t aware of the project; maybe the parrot vm wasn&#039;t a good fit (at the time?), etc.

&lt;font color=&quot;#ff0000&quot;&gt;&lt;b&gt;Note&lt;/b&gt;: this comment was &lt;a href=&quot;http://boycottnovell.com/2009/01/09/novell-is-heckling-critics/&quot; rel=&quot;nofollow&quot;&gt;posted from Novell&#039;s headquarters&lt;/a&gt;.</description>
		<content:encoded><![CDATA[<p>I can&#8217;t say why the Mono team decided to implement .NET, but one possible reason they did that rather than inventing their own wheel is because inventing your own wheel is quite costly.</p>
<p>The amount of research and development that went into designing .NET was huge and Microsoft had a lot of the best minds in the field working on it. Does the Mono team have those kinds of things going for it? Probably not.</p>
<p>Besides having a a design to start with by implementing the .NET specifications, they also get compatibility with Microsoft&#8217;s .NET (which is a bonus). There are a lot more Windows developers out there than there are Linux developers. It seems to me that if it is made trivial for them to write applications that work both on Windows and Linux, then Linux users win because they get a wider selection of software to choose from.</p>
<p>The biggest reason a lot of people I know stick with Windows is because of the apps. They won&#8217;t even go Mac even though they love the interface (ugh) because the software they need doesn&#8217;t exist for Mac.</p>
<p>As far as &#8220;did they fall for the microsoft hype?&#8221; &#8211; I can&#8217;t speak for why the Mono team started developing Mono for certain, but from what I&#8217;ve read &#8211; they chose to implement it because they got tired of writing large applications in C and were in search of a better platform. At the time, Java was not free (and as I discovered a while back, some of the Mono developers were the creators of the GNU Classpath project), so it seems likely that Java had been considered.</p>
<p>Why didn&#8217;t they use the Parrot VM? That&#8217;s a question you&#8217;d have to ask the Mono team, but quite possibly they weren&#8217;t aware of the project; maybe the parrot vm wasn&#8217;t a good fit (at the time?), etc.</p>
<p><font color="#ff0000"><b>Note</b>: this comment was <a href="http://boycottnovell.com/2009/01/09/novell-is-heckling-critics/" rel="nofollow">posted from Novell&#8217;s headquarters</a>.</font></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: AlexH</title>
		<link>http://techrights.org/2008/09/13/microsoft-admitted-mono-trap/comment-page-28/#comment-24338</link>
		<dc:creator>AlexH</dc:creator>
		<pubDate>Fri, 19 Sep 2008 21:24:22 +0000</pubDate>
		<guid isPermaLink="false">http://boycottnovell.com/2008/09/13/microsoft-admitted-mono-trap/#comment-24338</guid>
		<description>I should also add that Parrot is not likely good enough for a few reasons.

Mono is a good enough VM, Java is a good enough VM, and the thing in Android is probably good enough.</description>
		<content:encoded><![CDATA[<p>I should also add that Parrot is not likely good enough for a few reasons.</p>
<p>Mono is a good enough VM, Java is a good enough VM, and the thing in Android is probably good enough.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: AlexH</title>
		<link>http://techrights.org/2008/09/13/microsoft-admitted-mono-trap/comment-page-28/#comment-24336</link>
		<dc:creator>AlexH</dc:creator>
		<pubDate>Fri, 19 Sep 2008 21:23:00 +0000</pubDate>
		<guid isPermaLink="false">http://boycottnovell.com/2008/09/13/microsoft-admitted-mono-trap/#comment-24336</guid>
		<description>@Jose:

I&#039;m going to try to address the main point of what you&#039;ve written. Let&#039;s talk in terms of Java, since that seems to be more readily understandable to everyone.

You have Java the language, Java the bytecode, and a standard library.

Now, these are effectively &quot;interfaces&quot; but they don&#039;t make any implementation decisions. You have the JVM as Sun ship it. You have gcj. You have the Android system, which is a &lt;em&gt;fundamentally&lt;/em&gt; different design being stack-based rather than register-based. And obviously, you have Mono, which can run stuff via IKVM.

Parrot could well be sufficient to run .net; aside from introspection features (which Java only got recently), you could easily have an IKVM-style setup which allowed it.

At the end of the day, the actual VM engine doesn&#039;t really matter one jot. Mono has two VM engines of completely different designs alone! And the main one compiles code into native code as Hotspot does.

Virtually none of the interesting stuff is the platform code. If you haven&#039;t already, I highly recommend &lt;a href=&quot;http://cgwalters.livejournal.com/14913.html&quot; rel=&quot;nofollow&quot;&gt;cgwalter&#039;s essay on a single free software VM&lt;/a&gt;.</description>
		<content:encoded><![CDATA[<p>@Jose:</p>
<p>I&#8217;m going to try to address the main point of what you&#8217;ve written. Let&#8217;s talk in terms of Java, since that seems to be more readily understandable to everyone.</p>
<p>You have Java the language, Java the bytecode, and a standard library.</p>
<p>Now, these are effectively &#8220;interfaces&#8221; but they don&#8217;t make any implementation decisions. You have the JVM as Sun ship it. You have gcj. You have the Android system, which is a <em>fundamentally</em> different design being stack-based rather than register-based. And obviously, you have Mono, which can run stuff via IKVM.</p>
<p>Parrot could well be sufficient to run .net; aside from introspection features (which Java only got recently), you could easily have an IKVM-style setup which allowed it.</p>
<p>At the end of the day, the actual VM engine doesn&#8217;t really matter one jot. Mono has two VM engines of completely different designs alone! And the main one compiles code into native code as Hotspot does.</p>
<p>Virtually none of the interesting stuff is the platform code. If you haven&#8217;t already, I highly recommend <a href="http://cgwalters.livejournal.com/14913.html" rel="nofollow">cgwalter&#8217;s essay on a single free software VM</a>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: AlexH</title>
		<link>http://techrights.org/2008/09/13/microsoft-admitted-mono-trap/comment-page-27/#comment-24335</link>
		<dc:creator>AlexH</dc:creator>
		<pubDate>Fri, 19 Sep 2008 21:13:48 +0000</pubDate>
		<guid isPermaLink="false">http://boycottnovell.com/2008/09/13/microsoft-admitted-mono-trap/#comment-24335</guid>
		<description>@Jose: you misunderstand the point.

CSS 3 is in development, and these are the features that they are developing. CSS 3 is not a finished specification, though.

The vendor prefixes are part of the CSS spec, and ensure that they can add these new features without conflicting with the CSS specification. So with the vendor prefixes, they are valid CSS 2.1. But they&#039;re developing CSS 3 features.

They&#039;re &quot;extending CSS 2.1&quot; to the extent that they are developing CSS 3 features.</description>
		<content:encoded><![CDATA[<p>@Jose: you misunderstand the point.</p>
<p>CSS 3 is in development, and these are the features that they are developing. CSS 3 is not a finished specification, though.</p>
<p>The vendor prefixes are part of the CSS spec, and ensure that they can add these new features without conflicting with the CSS specification. So with the vendor prefixes, they are valid CSS 2.1. But they&#8217;re developing CSS 3 features.</p>
<p>They&#8217;re &#8220;extending CSS 2.1&#8243; to the extent that they are developing CSS 3 features.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

