I am not really licensing pro :), what good in BSD ? I choosen LGPL as it seem that it enable closed source aswell as opensource ? no it was looking very open for me.
I think that a good point for JPCT is that it is more mature than 3DzzD (opensourced earlier), 3DzzD have a lot of dead or dirty code, anyway I am not really aware of JPCT features so I can only give you some of 3DzzD features :
real perpixel phong lighting : normal interpolation (one directional light) (soft renderer)
real texture perspective (perpixel interpolation in 1/z) + bilinear filtering + pseudo anysiotropie 2*2 (soft renderer)
normal/bump mapping (3ds bumb are converted to normal map once loaded) (soft renderer)
border,12,21, or full 2*2 antialias in software
very good support for 3ds file including materials/texture/bump hierarchy/pivot/camera and part of Keyframe animation
stream loading of 3ds without lock
same scenegraph as 3ds max : pivot/hierarchy read from 3ds file
accurate collision engine
compatible with Microsoft JVM
switch to hardware 3d renderer at runtime
possibility to add custom or new renderer (ex: LWGL)
fullscreen switch at runtime
3d lanscape engine
smooth groups (can be read from 3ds file)
possibility to load signed extension at runtime : ex Robot classes for FPS control, hardware renderer
GPL - anything using your library has to also be released as GPL
LGPL - any improvements made to your library have to be released as LGPL, but simply using the library has no restrictions
BSD - Everyone is free to do whatever they want with your code, as long as they give you attribution.
If you want to maximise the number of people using your code, I’d go for BSD
If I’m not mistaken, LGPL also means the library has to stay whole - no one can take one class out and use it in a project without importing the entire library.
it has to be released in a GPL compatible license. (you don’t have to change the license of your program/lib when you are compatible)
BSD, for example is GPL compatible
it is also common in java land to add a classpath exception to the GPL, e.g OpenJDK is GPLv2+cp ex and even shipped with fedora. NetBeans RCP is also GPLv2+cp ex and used in commercial applications (which are usually not GPL).
yes, there is no problem in using LGPL API in closed source, maybe you cannot pickup classe here and here but you can modify & use the API in closed source and use license of your choice for your product. I found that LGPL is not really restrictive but if eard that it is too much restrive I will think about releasing using another license.
You’re quite correct - turns out I’m no expert either
At any rate, I think we can all agree that (L)GPL licences are more of a ball-ache to comply with than BSD, if you want folk to use your library then less pain is better.
Afaik this does only mean, that you can link with a BSD licensed code in a GPL project, but not the other way around. As soon as you are using a GPLed class in a non GPL app you can’t publish your work without relicensing it to GPL. That doesn’t hold true for LGPL however, which is fine in most circumstances.
yes you are right, i had the “other way around” in mind. But it should be fine to link from a BSD app to a GPL lib with classpath exception. GPL with classpath exception is probably better suited for java aps compared to pure GPL since defining “linking” in java is quite tricky ;).
Licensing in general is IMO one of the most annoying parts of software engineering
There is no problem with LGPL and linking in Java. See this article. I’m not sure why classpath exception was invented in first place, probably that it’s slightly less restrictive than LGPL. On the other hand it’s non-standard to GPL, so while it matches GPLv2 wording it might have problems with future versions. This isn’t problem for Sun because they removed ability to use it with any future version of GPL anyway, so linking with GPLv3 code is prohibited.
Anyway, back to topic. Thanks a lot for making the open source version I’m looking forward to use it in JBullet’s applet demo instead of my simple software renderer. I need to have OpenGL compatible renderer so probably modifications or alternative rendering API will be needed to be developed by me, that’s reason why I couldn’t use jPCT at the time. And your renderer seems better too
first of all I apologize for the dirty code but it has been a kind of research project for me for some years now, so cleaning it to a nice OO project wasn’t so easy, and there is still a lot of works to do in several classes.
3DzzD have interchangeable 3d renderer, for now there is 2 renderer : one for software & one for hardware (JOGL), it should be easy to create your own one by copying the existing JOGL renderer (the 3DzzDExtensionJOGL project in the devkit).
back on the topic, I think that the next tutorial will be on how to use collisions functions, if you have any suggestion on others possible tutorials dont hesitate.