Skip to main content

vm capabilities question and licensing question

10 replies [Last post]
timprepscius
Offline
Joined: 2008-11-01
Points: 0

I am still getting the midp build failure.. But I have a different question which is perhaps more important.

I would like to use the phoneME in the following manner...

1. Compile the phoneME VM as a DLL... or as a static library. No difference to me.
2. Initialize the VM without a main class..
3. Use the VM with JNI just like the real JVM but without the huge install necessary.. I would provide some core libraries and allow others to be dynamically downloaded.
4. Port to platforms as needed.
5. Not pay any fees. Not require users to download the entire java runtime.. Not release my code..
6. Allow myself to load the DLL privately.. (sometimes I have problems because other "owner applications - mozilla".. loads the jvm-dll with a different class path.. Fix some problems with class paths that are unicode - outside of the language set of the environment)

I am concerned because phoneME is under GPLv2 instead of LGPL..
How does this affect applications that link to it?

Can I theoretically do everything above?

Thanks!

-tim

Reply viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
terrencebarr
Offline
Joined: 2004-03-04
Points: 0

Tim,

Sorry for the delay in getting back to you. I had some internal discussions on this.

I understand your use case now - makes sense. Unfortunately, I won't be able to give you a clear-cut answer because it really boils down to how one interprets the terms and conditions of GPLv2.

As I stated before Sun interprets bundling of 3rd party code with phoneME code as potentially triggering the terms of the GPL related to the creation of a derived work. You list multiple different technical options - and that is exactly the issue with GPL. If and when a derived work is created that triggers the GPL terms or if the GPL-based code is merely used by 3rd party code is up to interpretation. Sun cannot give you final advice on how this would be decided by other legal experts.

But there two reference points you can consider:

a) If you just want to abide by the terms of GPL the you can do that - it does not prevent you from linking phoneME to your code and monetizing the result. What GPL requires is that you provide your code under GPL to interested parties. So that might be a perfectly good option for you - it's a model many companies in the open source space employ.

b) If you can't live with the terms of the GPLv2 Sun offers a dual-license model for phoneME. You can enter a contractual relationship with Sun and get a commercial license and the commercial phoneME code. That license allows you to create proprietary products based on Sun's technologies. That might be another option for you.

I hope this helps. Best,

-- Terrence

timprepscius
Offline
Joined: 2008-11-01
Points: 0

Greetings Terrence,

Thank you for your inconclusive (however I know the best you could do) answer.

What I will take from your answer is, going forward, if I embed your phoneME I will be vulnerable to GPL requests to release my code. And because of this, I must continue my migration away from Java.

I would like to point out two criticisms that are obvious to us engineers/techies, however possibly non obvious to the Sun Manager's above.

This GPL licensing scheme is created _expressly_ to restrict the embedding of the phoneME into applications.. If it was not the case, the LGPL would have been used. Sun is in effect decreasing it's possible market share.

My second criticism is actually a continuation of the first! While Sun's policy must seem 'the only sane one' to those above, it is detrimental to Sun's long range view.

In 2-5 years, the JVM will be irrelevant. Combined efforts of LLVM, CLR, etc, brought about by Sun's fear of loss of control. Take for instance me, I've been embedding the JVM since before 1.2... I have notes in my code about how you changed the mechanics of class loader between 1.2 and 1.4..

I've watched as instead of making small packages that could be easily linked to in custom applications, you created these monolithic downloads that nobody wants, nor nobody uses the full extent of (on the client side at least).

Now, instead of putting work into the JVM, I've done 80% of the work needed to integrate Python to replace the JVM while I've been posting here. Python doesn't have a sand box that works, which is a major problem for me.. But I can go in and remove parts of their code. Sanitize it in effect. Amazingly, the high level code to integrate Python and Java is almost exactly the same.

As LLVM becomes viable I will switch to that.

--

Well it seems I've written a book.. Didn't mean to. And, none of this criticism is directed at the developers, nor at you.. Obviously I find this frustrating.

Thank you very much for your time.

Have a wonderful Thanksgiving!
Ahh, what's really important! :-)

-tim

timprepscius
Offline
Joined: 2008-11-01
Points: 0

Hello IBM..

If you read these forums..

After you buy Sun:
Could you please release the jvms, all billion of them, with either an lgpl or a bsd style license.
And can you please kill all of Sun's, "you can't say the word java crap."

You might have an added incentive of doing this, as google might be at least slightly happy with this, as it could possibly take over java development, and discontinue dalvik.

Thanks!

-tim

terrencebarr
Offline
Joined: 2004-03-04
Points: 0

Sorry for the slow reply - for some reason I didn't seem to get a notification of your follow-up posting.

I am not sure I understand is why you want phoneME as a DLL or library. phoneME is a Java stack that executes Java applications either by running phoneME executable and passing in the mail class file or by running the phoneME executable and installing a MIDlet into the app repository and then executing the MIDlet from within the application manager.

Could you explain the scenario where you would need to link a phoneME DLL with a Java application?

-- Terrence

Davy Preuveneers

On Thursday 20 November 2008 14:00:58 terrencebarr wrote:
> Sorry for the slow reply - for some reason I didn't seem to get a
> notification of your follow-up posting.
>
> I am not sure I understand is why you want phoneME as a DLL or library.
> phoneME is a Java stack that executes Java applications either by running
> phoneME executable and passing in the mail class file or by running the
> phoneME executable and installing a MIDlet into the app repository and then
> executing the MIDlet from within the application manager.
>
> Could you explain the scenario where you would need to link a phoneME DLL
> with a Java application?
>
> -- Terrence

FYI, I don't get the postings in my inbox either.

I think Tim is referring to a native application that would use the phoneME VM
in the backend. Using phoneME as a DLL library would make sense if you for
example develop a web browser applet plugin that uses phoneME as its virtual
machine. IANAL but I think having a closed source application linked to a GPL
open source library is not allowed by the GPL (the LGPL license is meant for
that purpose), but perhaps Terrence can shed some light on how Sun would
interpret "derived work" in this case.

Davy

---------------------------------------------------------------------
To unsubscribe, e-mail: feature-unsubscribe@phoneme.dev.java.net
For additional commands, e-mail: feature-help@phoneme.dev.java.net

timprepscius
Offline
Joined: 2008-11-01
Points: 0

Yes, this is exactly what I mean..

I have major problems with the standard sun JRE:

1. It does not exist for all of the platforms I'm writing for.

2. In theory, I should be able to request a new JVM from an already loaded DLL with my own class path.. But in practice this is not the case. This poses insurmountable technical problems.

3. Even if this was fixed in some newer version of java.. I'm not going to ask my customers to download a new version of java.. I have about 1-3 clicks before they stop and go away. I really don't want to ask them to download java at all.

What is the solution?
PhoneME.

I can strip it of all the non essential libraries.. (Well, it seems to be this already)
Use it as a sandboxed jvm.
Will add 5 seconds to my download..
Might not be as whiz-bang-fast, but I don't really need whiz-bang-fast.

--

I could compile it as an EXE with exported DLL functions if that would help..
I could compile it as a DLL that I provide a link to to download (but also include in my application, no extra downloads!)
I could compile the portion of my program that uses Java as a DLL, make the license for that segment LGPL.. Then link to that DLL instead of your GPL java dll..
I could put a message, "Powered by the awesome java." If you'd like..

--

When you reply (you meaning whomever has some authority to reply conclusively).. [Also assuming I've stated my question clearly].. Could you please make the reply as clear as possible.. Like, "Yes you can do this this way. Compile as this, provide a link to this, and then it's ok.. " or "No you can't do this."

Thanks,

-tim

terrencebarr
Offline
Joined: 2004-03-04
Points: 0

timprepscius ,

Sorry for the slow reply.

Please make sure to read my blog on the phoneME licensing topic:

http://weblogs.java.net/blog/terrencebarr/archive/2006/11/a_license_to_i...

First, I have to caution that I am not a lawyer, but from your description it appears like you would be bundling and distributing the phoneME binary with your application - this is something Sun considers creation of a "derived work" and thus the GPL copyleft provisions would apply to the entire derived work (i.e. including your application code).

They key here is the bundling and distribution aspect. If you provide a modified binary phoneME stack separately from your application(s) (e.g. as a separate download) then that situation is covered by the application exception I describe in my blog - provided you make your modifications to the phoneME code available under GPL.

Hope this helps,

-- Terrence
Senior Technologist and Community Ambassador
Sun Microsystems

timprepscius
Offline
Joined: 2008-11-01
Points: 0

Actually now I'm just a little bit more confused.

>They key here is the bundling and distribution aspect.

So I have an application..
I want that application to use the phoneME as it's primary JVM.

I obviously want to do this in as simple a manner as possible: (i.e. I don't want to start a the JVM as a process and then talk to it via pipes.. That would be insanely stupid.)

This means I must either statically link, or dynamically link.

Are you saying that it is okay if I:
Provide a separate download link to the modified phoneME DLL (not an standalone executable).. With code, or what not for that phoneME dll..

or do I need to:
Provide a download link to my application, which won't run.. until the user also installs the phoneME DLL? (This would also be stupid would it not?)

-tim

timprepscius
Offline
Joined: 2008-11-01
Points: 0

?

timprepscius
Offline
Joined: 2008-11-01
Points: 0

One small clarification:

I have no qualms about releasing any code modifications I may make to the VM.

I'm more concerned that the GPLv2 may require that I release the rest of the code for my application.