[ale] best cross platform development evironment

Michael B. Trausch mike at trausch.us
Tue Nov 16 12:55:31 EST 2010


On Tue, 2010-11-16 at 11:56 -0500, Lightner, Jeff wrote:
> "rational thought" being decided upon by you?

No, that would not be very rational, would it.  To be fair, it'd appear
I was vague here; I should say "logic-based rational thought".  That
should clear up my meaning significantly.  My apologies.

> I and others have given "rational" arguments for suspecting this thing
> from M$.  Sure there have also been rants but that doesn't mean all of
> the posts have been rants unless one describes any anti-M$ post as a
> rant in which case there is no way to have a "rational" argument.   

Again, see my clarification above.  One can present a laundry list of
emotionally charged reasons and technically consider it
"rationalization", but that is not what I'm interested it.  It is
exactly the opposite of what I am interested in, in fact.  I want proved
factual data.

> That would be much like the old arguments about racism.  If I disagree
> with you then it proves I'm a racist and therefore nothing I say is to
> be trusted.  It is a nice way to try to win an argument by ignoring WHAT
> is said and rather ascribe it to WHO said it.   In my view that is NOT
> "rational" but rather "emotional" (not to mention a dirty trick :-) )

Agreed.  Though such an argument can be rationalized, it cannot be and
at the same time have a solid logical basis.

> The main argument here against C# has NOT been simply "It was created by
> Microsoft".   It has instead been "Microsoft did not truly open source
> it because they maintain the patent and allow for usage under vaguely
> defined conditions."

Ah, but what is at issue here is _not_ the Microsoft implementation
(known as ".NET").  It is the implementation known as Mono, which is
both free software and open source.  The problem here is that many
people confuse the two and there is no way to have a coherent
conversation if the confusion is permitted to exist, because then
nothing useful can be stated: what both "sides" of the argument have to
say becomes nonsensical to the other because of the misunderstanding.

And to what patent or patent(s) do you refer?  I've yet to have anyone
show me one that applies and has been granted.  I've done some digging,
and I'll have to see if I can dig up my results from the last time I
went hunting, but the only thing that I found that even mentions
anything in Microsoft's implementation was a denied patent application.

That there "might be" a patent isn't a solid basis for any sort of
patent argument; first there would _have_ to be a patent, and second
such patent would (by definition of its very existence) have to be
well-defined and thus avoidable.  Remember that a patent cannot describe
an API, though it might well describe a mechanism on which to implement
the API.  This technical detail has been leveraged in free software
projects in the past in order to maintain interoperability with
proprietary implementations while avoiding the actual patent.  The only
thing that is required is to avoid implementing it the way that the
patent describes.  It _does_ take time and effort, and some projects
would rather sacrifice interoperability and instead just do something
completely different (e.g., UNIX compress and GNU gzip), but that does
not mean that it is not possible to be compatible and side-step a
patent.  Of course, to side-step a patent, it must first exist.

> This doesn't mean you can't use C# to your heart's content if you feel
> no qualms about it.

My search to find reason for the qualms people have expressed has, to
date, yielded nothing.  I have spent thousands of hours over the past
several years trying to find data to substantiate any concerns over the
Mono (again, not .NET) runtime.  I am actively seeking out any such
information.  I want it, if it does indeed exist.  (And if you or anyone
on list have any such information, I'd _love_ it if it were sent to me.
Seriously.)  If there is an alleged patent on the system, I want to read
it (and then compare it's specification to whatever code is alleged to
implement it in Mono).

But let us not forget that a programming language is just a defined
notation format not unlike human written languages---a programming
language is a notation that enables us to communicate (albeit
indirectly) with a computer's CPU.  A programming language itself cannot
be patented, because it is not possible to patent a notation of
something.  It is of course possible to copyright a particular
representation of a given thing, but not language itself (though
something expressed in that language, of course).

It might be possible to patent a particular method of transforming that
human-readable notation into binary code, but given that there are
multiple methods which may be used to tokenize and parse source code,
and multiple methods by which the then-parsed source code is translated
into output code, and most of these methods are well-known and
understood in the industry, it is highly unlikely that a patent can
exist on the compilation process.  Even if there was a patent on the
method that the Microsoft compiler uses to compile and/or generate code,
that's a non-issue; Mono does not have to do it the same way.  Mono
could instead borrow parts of GCC or LLVM or some other ancient system
that is old enough to be known a priori to be prior art due to its age.
It could adapt the algorithms and processes used in such software, as
well, knowing a priori that they are old enough to be considered "safe".

As with programming languages, a virtual machine CPU is a specification.
It takes opcodes with parameters and it executes them.  This is far from
a new concept, and so it alone may not be patented.  Prior art goes back
at least 2 to 4 decades.  GCC itself has a virtual machine (though it is
not used for execution, it's used for all sorts of things including code
optimization and the final stage of code generation, and starting in GCC
4.5 it can also be used to perform link-time optimization a.k.a.
whole-program optimization) contained within it.  And there is also LLVM
which is of course a VM.  And there's P-code systems from the 70s.

The binary format used by the CLR is the Portable Executable format,
which was originally introduced with Windows NT 3.1, released originally
nearly 20 years ago, and even then it did not have anything really
terribly new to offer, being not much more than a modified version of
the already-existing COFF format which was used in UNIX systems at the
time.

The runtime itself is nothing more than a collection of object-oriented
software libraries.  And as any of us is surely aware, there is _always_
more than one way of accomplishing something when it comes to
programming and processes.  Even if there was some functionality in the
Microsoft implementation that were patented (again, assuming that there
is anything there that is even patentable), it would be easily possible
to stub it out---or re-write it using a different process so as to avoid
the issue altogether, which may not be easy, but is absolutely possible.

One could again side-step the issue entirely by using only the core data
types and so forth and instead of relying upon the rich class library
that comes with Mono or any other implementation, use one's own
functions or third-party class libraries.  That said, much of Mono's
class library just calls down to libraries that we already use from
C-land to do things---and the mechanism of native code interfaces or
foreign function interfaces (they are one and the same thing) is as old
as programming languages itself, and thus again not even eligible for
coverage by a patent.

Being that there are so many means that we have at our disposal for
handling such problems, and being that we have used them in every decade
since the 1980s in order to continue having free software, I simply
cannot see where the basis for any such qualm is in using a free
software, open source reimplementation.

In fact, one of the _major_ problems with Java is that to date there is
not a fully free, fully functional, fully independently written JVM and
accompanying class library that runs all code and has all functionality.
There are some pretty impressive subsets of it out there, and there are
some pretty awesome things that use Java (or Java bytecode) as input and
transform it to things like JavaScript or another VM altogether.  But
that does not mean that it would not be possible to implement a VM that
is free of Oracle-held patents.  It simply means that if you want to be
safe, you need to avoid using the implementation(s) which actually are
encumbered and find or create one which is not.  If Oracle is asserting
a patent claim, that makes the patent number(s) involved known, and that
makes working around them possible.  (Note that I did not say "easy".)

It would be possible to also use the GNU implementation which can
compile Java code natively, though again it is lacking in a good chunk
of functionality.  I have only used it for a few (trivial) things
because trying to do anything non-trivial with it does not work without
a great deal of effort.

In any event, there is little else that I can say on this topic that I
haven't already said at some point in the past five years or so.  To
date, despite my active seeking, I have found nothing that holds water
to show that an individual or a small business or a medium sized
business or an enterprise should not use Mono.  To date, I have found
many who will say "it's Microsoft code!" (but it isn't) or "it's
patented!" (under what number?) or similar.  To date, I have found many
who will say that it is okay to use software that Microsoft claims to
hold patents on, such as the Linux kernel, "because it is free
software," but that Mono is a no-go despite the fact that it is free
software.

But I have yet to find any hard fact to support the notion that I, or my
clients, or my clients' clients, should not use this system.  I have yet
to find any hard fact to support the notion that the free software world
can extract any benefit from being a "house divided".

But honestly, I never thought I would see a day when the free software
world would start rejecting majorly beneficial components of itself and
attacking free software.  But that day came several years ago, and it
has not gone away since.  It is destructive and it is nonproductive.

And yes, it makes me sad.

	--- Mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part
Url : http://mail.ale.org/pipermail/ale/attachments/20101116/b61957e6/attachment.bin 


More information about the Ale mailing list