POV-Ray : Newsgroups : povray.general : --- : Re: Liscense Server Time
31 Jul 2024 16:20:31 EDT (-0400)
  Re: Liscense  
From: Patrick Elliott
Date: 16 Dec 2006 19:36:28
Message: <MPG.1fee3ea6a1c1566a989fc2@news.povray.org>
In article <45810709@news.povray.org>, chr### [at] gmxde says...
> Patrick Elliott schrieb:
> > In other words, if it functioned exactly as it does now under Windows,
 
> > but you could also call it with:
> > 
> > a = createobject("application.povray")
> > b = a.renderwindow
> > b.parent = me.frame
> > b.render ("myscene.pov")
> 
> I don't know the programming language this is written in but it pretty 
> much looks like this functionality (i.e. starting a render and 
> displaying the results) is supported by existing communication means of
 
> all official POV-Ray versions.  And if you for some reason don't like 
> the existing means of doing this you can modify them to better suit your
 
> needs (you could for example add a feature to have the render results 
> sent via some network protocol *).
> 
Well, its not "quite" the same. ActiveX has advantages that static 
methods don't. But, its nice to know this is allowed, though it gets a 
bit more complicated. Technically an ActiveX wraps the whole 
application, not just an extension loaded into it, which is what the 
current system does. Still, its nice to clear up how and if that was 
acceptable. Now, some others may have "intended" something like this, 
but described it wrong, thus creating confusion that led to them being 
told "No, you can't do that." Needless to say, this confused me a bit, 
since I didn't see how a more stable method (at least more stable on 
Windows) was a "bad" thing.

> I didn't really understand the rest of your posting (the 'sandbox' stuff
 
> etc.) - it seems to me you are talking about limitations of the POV-Ray
 
> rendering engine and not about the License.
> 
Well, in some ways it "is" about the license. The license says clearly 
that you can't provide an incomplete and partially functional version. 
This idea is intended to side step that.

Let me explain. A client application I use also uses Lua and a 
"sandbox". This is done to limit and safeguard the machine from code 
that "might" be dangerous. Since the scripts are created by the clients 
users and tied to a set of plugins, someone could add dangerous code to 
a plugin, which the other users would never know about, while thinking 
they got something that provides beneficial features. For example, the 
IO library functions. In Lua you can declare your own functions that 
override the "existing" ones, so the solution to preventing something 
from adding code like this:

io.run "del c:\windows"

is to place, in the "sandbox" a function like:

def function io.run {
}

When anyone tries to execute the io.run function in a script the 
"sandbox" version is called, which doesn't do anything.

Now, the idea for POV-Ray would be a bit different. Lets say I dont' 
want anyone using Isosufaces at all and I want to "restrict" the use of 
reflection with refraction, since those things tend to cause serious lag 
in scene generation. And maybe also limit mesh sizes to reduce render 
times. The sandbox.ini might look like:

[forbid]
isosurface
[limit]
mesh:10000
[restrict]
reflection:ior

When run normally the sandox it ignored entirely. When used from the 
activeX connection it would look at the sandbox and a scene that 
contained these would generate errors and refuse to produce the scene if 
you violated any of those rules. The engine and the normal environment 
would still be 100% functional, but limits could be placed on what could 
be done through the activeX connections.

The reason this is a licensing issue is that it technically allows you 
to provide an partially disabled version, within the limits of how you 
are using it, while *still* providing a complete version, when used as 
though it was just the stand alone version. Think of it like a more 
complex version of the render level commands, which let you decide what 
things the engine should "not" render, when doing test renders. Though, 
I suppose, since that already exists, this is just a more specific form 
of the same thing.

-- 
void main () {

    call functional_code()
  else
    call crash_windows();
}

<A HREF='http://www.daz3d.com/index.php?refid=16130551'>Get 3D Models,
 
3D Content, and 3D Software at DAZ3D!</A>


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.