OpenMind 0.7.2 released

Today, we are proud to bring a new release of the OpenMind open source scenegraph for GL4Java featuring first MacOSX support. This new release also brings better compatibility with old graphic adapters, and above all features the first release of AL4Java, a Java binding to the OpenAL cross-platform 3D sound library that was brought by Pepijn Van Eeckhoudt.

As usual, OpenMind can be downloaded from http://www.mind2machine.com

AL4Java official website can be found at http://al4java.sourceforge.net

Enjoy !

Alban Cousinié
MIND2MACHINE

I personally don’t care but there is another project named OpenMind that’s been around since at least 1998. You may want to qualify the name of your project a little more to something like “OpenMind 3D” to prevent confusion.

Pepijn Van Eeckhoudt is in deep shit. When I get my hands on his scrawny neck I’m going to print out the sourcecode to LWJGL on HP Premium Inkjet paper and make him eat the lot.

Cas >:(

Hi Cas,

I’m not responsible for AL4Java, I’ve just included the library to OpenMind. From what I know, it was written from scratch, but maybe Pepijn got some inspiration from LWJGL, as we’ve all been inspired from some source code some day for acheiving a difficult task…and I guess that’s what open source is about.

Anyway if it’d be the case, I’d feel really sorry about it. If you find some irregularities about the code, copyright statements and credits, I’m pretty sure we can discuss this with Pepijn.

Alban

[quote]From what I know, it was written from scratch, but maybe Pepijn got some inspiration from LWJGL
[/quote]
Let’s just say that he copied the code from LWJGL, which invalidates his license to use LWJGL, and redistribute AL4Java.

[quote] * * Redistributions of source code must retain the above copyright

  • notice, this list of conditions and the following disclaimer.
    [/quote]
    The LWJGL team has nothing against people using the LWJGL source code - this is why we’re using the BSD license - but we don’t like it when people take existing code, fiddle a bit with it - and then remove the license, pasting in another!

[quote]and I guess that’s what open source is about
[/quote]
100% with you there - but in the spirit of opensource, one also gives credit, where credit is due!
Where it not for the WaveData class which is used in the source library, no mention of LWJGL is in the source drop - or even on the website.

I just feel that doing this kind of **** sucks bigtime!

Hopefully this can be resolved ASAP though

Could the LWJGL guys point to specific code lifting?

I spot checked the source for al4java and LWJGL OpenAL and I didn’t see any code that looked lifted.

[quote]Could the LWJGL guys point to specific code lifting?

I spot checked the source for al4java and LWJGL OpenAL and I didn’t see any code that looked lifted.
[/quote]
Well, all error checking is removed, several files are collapsed into a single file etc - it seems to have been a phenomenal amount of work? ??? More likely that he’d been working on the same project and used LWJGL to finish a few bits off. However, with that said, here’s a good example for you:

From al4java_AL.c:

/**
 * This function Enables a feature of the OpenAL driver.
 *
 * C Specification
 * ALvoid alHint(ALenum target, ALenum mode);
 */
JNIEXPORT void JNICALL Java_al4java_AL_alHint (JNIEnv *env, jclass clazz, jint target, jint mode) {
      //alHint((ALint)target, (ALint)mode);
      //cannot link with above statement
      return;
}

From org_lwjgl_openal_CoreAL.cpp:

/**
 * This function Enables a feature of the OpenAL driver.
 *
 * C Specification
 * ALvoid alHint(ALenum target, ALenum mode);
 */
JNIEXPORT void JNICALL Java_org_lwjgl_openal_CoreAL_hint (JNIEnv *env, jobject obj, jint target, jint mode) {
      //alHint((ALint)target, (ALint)mode);
      //cannot link with above statement
      return;
}

When one library is comment-compatible with another, there’s something funny going on! ;D

Here’s one:
original:

/**
 * A function was called at inappropriate time,
 *  or in an inappropriate way, causing an illegal state.
 * This can be an incompatible ALenum, object ID,
 *  and/or function.
 */
public static final int AL_INVALID_OPERATION                     =0xA004;

his version:

/**
 * A function was called at inappropriate time,
 *  or in an inappropriate way, causing an illegal state.
 * This can be an incompatible ALenum, object ID,
 *  and/or function.
 */
public static final int AL_INVALID_OPERATION                     =0xA004;

Notice that the comments are formatted wrong, just as it is in ours - this has been fixed in 0.6 , but this clearly shows that he has ripped from a pre 0.6 version.

This one of the vaguest of the hints - there are more convincing… but I am pretty sure that ‘Pepijn Van Eeckhoudt’ won’t be denying the facts.

He does mention LWJGL on his credits page:

"Credits
LWJGL
The “Lightweight Java Game Library” project created the first OpenAL binding for Java. I personally do not like the way in which this library exposes pointers to Java code, which is the main reason why I started writing my own binding.
LWJGL also provides several utility classes for laoding audio data in Java. The class that loads wave files is currently used in the al4java sample apllications. "

yes, now he does :slight_smile:

Ok, I guess my spots wen’t big enough.

anyhow - let’s make this thread die down, till we’ve actually heard from him!

… emailing …

Alban mailed me about this thread, saying I should check it out. So here I am in front of the firing squad :slight_smile:
First of all here’s a copy of the reply I sent to Alban.

Well I guess there are two problems:

  • The WaveData class is theirs. The license/copyright notice is still in the source file. I don’t think I have to add their license in the binary packages since these don’t contain the sample applications or the WaveData class. If they do then that’s my mistake and I’ll remove those classes.
  • I started coding the c files using their c file to save me some tedious typing work. I implemented each method myself, but I forgot to remove their documentation (which I have now just done, again my mistake). The documentation in the c code is (to me) completely unnecessary.
    I guess this second point requires me to add their license, since very strictly speaking I did use their source code. How should I do this? Should my source code then contain two copyright notices? The method implementations are mine, the method signatures are very similar to theirs (not that I have any choice there since OpenAL is a standard :slight_smile: ). I stripped the documentation (sorry bout that) so that should be a non issue.
    Correct me if I’m wrong on any of my assumptions…

About the lifted code. The alHint thing is still a remainder from the original c file, which I forgot to get rid of. (Still haven’t figured out why this method is missing in the headers btw, since it is in the spec)
The comments in the AL©Enum classes are just retained from the original al©types.h file, so I guess the lwjgl developers just copied those comments like I did…
About the method implementations, I guess that’s a case of their word against mine.
I’ll add the copyright notice and license if you want. Could somebody tell me how I should do this from a practical point of view. Ie how do I make a distinction between what is copyright lwjgl and what is copyright me?

It’s dead easy; if you’ve got the work of others all over the place and you know where it’s come from, just put the credit in where it’s due. That’s how open source works. It’s very little to ask and not doing it is credibility suicide.

Cas :slight_smile:

Agreed, but where is it still due in the end?
Are you insisting I put a copyright notice around the alHint comment (which I’ve deleted in the mean time).
Your copyright notice is still in place in the class that is yours (WaveData), but I don’t see why I should feel obliged to put your copyright notice in classes that I’ve written myself.

No, all you’ve got to do is follow these instructions found at the top of any LWJGL file you’ve used:

[quote] * Copyright © 2002 Light Weight Java Game Library Project

  • All rights reserved.
  • Redistribution and use in source and binary forms, with or without
  • modification, are permitted provided that the following conditions are
  • met:
    • Redistributions of source code must retain the above copyright
  • notice, this list of conditions and the following disclaimer.
    • Redistributions in binary form must reproduce the above copyright
  • notice, this list of conditions and the following disclaimer in the
  • documentation and/or other materials provided with the distribution.
  • Neither the name of ‘Light Weight Java Game Library’ nor the names of
  • its contributors may be used to endorse or promote products derived
  • from this software without specific prior written permission.
  • THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  • “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
  • TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  • PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  • CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  • EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  • PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  • PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  • LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  • NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  • SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    [/quote]
    In other words, just add that notice to the top of files which are sourced in whole or part from LWJGL. It only applies to used or modified LWJGL code, not yours. You are entirely free to append the LGPL license and apply it to your own code even within the same file.

(Sorry about blowing my top earlier, it was a bad day)

Cas :slight_smile:

In my opinion the current status of the library doesn’t violate your license. The copyright and license is in place in the one class I actually reused and modified (WaveData) from lwjgl.
Should I, in your opinion, add the license anywhere else?

IMO:
Add the license file to the binary/source drop
Add the license to any files containing source from LWJGL

Basically, since you did use LWJGL parts, I would add this to a credits part “…Parts copyright LWJGL…”

As far as I can tell, at least the following files have sourcecode from LWJGL (but you would know best…):
al4java_ALC.c
al4java_AL.c
WaveData.java (fine already)

and most important - respect the work of others forthward on :wink:

For the source package:
The license says to leave the copyright/license in the source file so that’s already ok
For the binary packages:
These don’t contain the sample code (including WaveData) so no copyright/license required here

al©.c that’s another question. I guess it depends on how strictly you want to apply the license. I did start from the lwjgl source file (as I already mentioned in my first post) but in the end I had to rewrite each method implementation to be strict c code and because I use arrays instead of direct pointers. The question is then if the copyright/license still applies if you rewrite the entire source file. I don’t think you can claim copyright on the method signatures since these are machine generated :slight_smile:
IANAL so correct me if I’m wrong here.
Anyway, if it keeps everybody happy I’ll add the copyright/license to those two files as well tonight when I get home from work.

So I guess Pepijn will update the licenses for OpenAL and I will include an LWJGL licence into the next release of OpenMind ! :wink: