Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Prior to actual question, let me summarize what I\'m trying to do. I plan to imp

ID: 642220 • Letter: P

Question

Prior to actual question, let me summarize what I'm trying to do. I plan to implement a small, JIT-enabled, register-based VM runtime. Instead of making a proper compiler (which is hard IMO) for a super-fancy home-brew language, I decided to implement a binary translator from a appropriate bytecode (much like Dalvik VM approach). Considering CIL vs. Java bytecode, CIL is best for my needs.

As a note, I wanted to list some important things to avoid possible confusions:

Base Core Library (BCL) or any Microsoft specific assemblies won't be decompiled and translated. Instead, BCL references will be subject to substitution with my VM specific codes at translation phase (much like COSMOS Plugs approach).
All CIL opcodes won't be translated. So, directly using CIL is not an option.
"Any" .NET executable is not targetted for translation. .NET will be a tool, not target.
Dalvik VM is good example what I'm trying to do. In Dalvik case, programs are written in Java, but Java byte codes translated into Dalvik opcodes. In my case, programs will be written in .NET, but CIL will be translated into "fancy" VM opcodes.
Custom VM itself will be closed source and it will be in a free software initially. But, in time, it might be used in open source and/or commercial projects.
So, is there any license restriction to avoid me doing this? If so, how can I avoid the restrictions? Making only non-profit applications or making it open source?

Explanation / Answer

If i had understood your question correctly i think all you are saying is that you will create your own system (compiler or Virtual machine) which takes CIL byte codes and do something interesting. This do something can be of course translating into executable or another IL which is later interpreted.

Now the question really is - the CIL being a Microsoft intellectual property will they sue you?

The wiki link of Mono provides some interesting links on this; Accordingly,

When Microsoft first announced their .NET Framework in June 2000 it was described as "a new platform based on Internet standards", and in December of that year the underlying Common Language Infrastructure was published as an open standard, "ECMA-335" - opening up the potential for independent implementations.

Here is the home for this reference. The Microsoft's development center's page gives good details. According to this CIL instruction set is part (part III) of the specs in overall CLI standard. The site also mentions that there are following companies involved in developing this standard.

Many of the organizations that have participated in the TC39/TG2 and TC39/TG3 work have volunteered to mirror this site. The links for the mirror sites are:

Intel Corporation,
ISE (Eiffel),
IT University, Copenhagen
Kahu Research, New Zealand
Microsoft Corporation
Novell (Mono)

According to same wiki reference:

On July 6, 2009, Microsoft announced that it was placing their ECMA 334 and ECMA 335 specifications under their Community Promise pledging that they would not assert their patents against anyone implementing, distributing, or using alternative implementations of .NET

Now based on all above research, we can say that - given that the ECMA is an open standard, you can actually do legally what you propose to do.

NOTE: there are some component not included in this spec. Also, using .NET CLR itself is not part this discussion.

DISCLAIMER: But yes, great many details go in legality. So since i am not lawyer, my advise to you is for free but without any warranty! :)

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote