• All submissions to this site are governed by Second Life Project Contribution Agreement. By submitting patches and other information using this site, you acknowledge that you have read, understood, and agreed to those terms.
Issue Details (XML | Word | Printable)

Key: SVC-1581
Type: New Feature New Feature
Status: Resolved Resolved
Resolution: Won't Finish
Priority: Major Major
Assignee: Unassigned
Reporter: Ann Otoole
Votes: 24
Watchers: 9
Operations

If you were logged in you would be able to see more operations.
2. Second Life Service - SVC

Modify llGetPrimitiveParams behavior to fail if copyright conditions are not met

Created: 19/Feb/08 02:48 PM   Updated: 14/Sep/08 04:15 AM
Return to search
Component/s: Scripts
Affects Version/s: None
Fix Version/s: None

Environment: All
Issue Links:
Relates


 Description  « Hide
Modify llGetPrimitiveParams to fail if not the creator of the object and object is not set to full permissions or additional copyright data forbids replication

Sadly many of the most successful merchants in Secondlife are making a lot of money marketing prim replication and systems related to content theft or are simply marketing stolen content and the existing DMCA laws do not efficiently cover user created intellectual property rights in virtual world systems.

Although the people making replication/backup solutions will sometimes state it may be a TOS violation to use their creations, I think we are all adult and mature enough to know that criminal enterprises freely operating in Secondlife do not care about legality of their actions.

Therefore it becomes necessary to implement server side functionality that cannot be bypassed with open source clients.

The solution is simple and can be enhanced to support open source licensing with some additional metadata fields in the object parameter table in the database.

As of SL 1.6.5, llGetTexture and llGetPrimitiveParams now return NULL_KEY when attempting to get the texture on an object without full asset permissions.

Extend this functionality to fail llGetPrimitiveParams in it's entirety when

1. The script operator is not the object creator and the object is not full permissions. (Forget "mod" permissions as clothing attachments that constitute a large percentage of the use cases in Secondlife require mod for scaling.)

2. Add additional metadata columns and associated fields on the object editor as follows:

  • A copyright field with enabling flag
  • The copyright field defaults to enabled on prim creation and the default text on object creation be set to "Copyright copyright symbol current year Avatar Name, All Rights Reserved."
  • The copyright can be modified to support copyright assignment to other entieis. I.e.; Eros LLC, etc.
  • When the creator elects to disable the copyright then the object becomes open source and the creator should state the terms in a notecard contained in the object.

3. Add the copyright capabilities to the properties of all other content types.

Number 1 should be implemented immediately as there appears to be a concerted effort underway to destroy Secondlife. Most likely at the hands of people angry over banking bans and ad farm extortion bans.

Number 2 should be implemented as soon as the detailed data analysis and testing allows. Phillip Rosedale stated long ago LL was going to provide better capabilities around intellectual property rights and now I have laid it out in a manner the LL programmers can comprehend so there is no further excuse for a delay.

Priority set to critical because thats the one that has "content loss" in it's text and content theft is content loss.



 All   Comments   Change History      Sort Order: Ascending order - Click to sort in descending order
Ann Otoole added a comment - 19/Feb/08 02:56 PM
Adding relation to SVC-676

Montana Corleone added a comment - 19/Feb/08 03:14 PM
This IP and content theft really needs to be addressed if you expect not only virtual worlds to grow, but SL to actually survive as anything other than a bunch of geeks writing hacks to rip content.

LL should do a better job in protecting IP rights, publicising offenders, and giving them harsh penalties. There needs to be an education programme about how and why such theft is wrong and illegal.

To this end, people should also be named in the Police Blotter. In RL you can find out the names of those convicted of crimes, why are they hidden in SL?


Harleen Gretzky added a comment - 19/Feb/08 03:37 PM - edited
llGetPrimitiveParams already will not return anything you cannot see and modify on the edit window.

What would be the purpose of not allowing it to return parameters you can see in the edit window?


Ann Otoole added a comment - 19/Feb/08 03:42 PM - edited
the problem is no mod will kill worn prim attachments so it has to use full perms to allow or the copyright metadata as the basis for denial.
mod/no mod is a failure in respect to copyrights. we need more. but we need an immediate fix to halt the ongoing systematic replication of content in secondlife right now while the additional metadata columns are worked in.

Harleen Gretzky added a comment - 19/Feb/08 03:50 PM
Crippling llGetPrimitiveParams would not really stop this, you just edit the object and write down the parameters and create a new full perm version.

Ann Otoole added a comment - 19/Feb/08 04:01 PM
yes. and glintercept is also a manual process.

however the issue today is automated replication systems being used in an effort to destroy Secondlife.

manually recreating something complex is tedious. people that do this intentionally will be doing so in the full knowledge they are violating the SL TOS which gives LL even more ammo for permabans.

With the copyright metadata enhancements these fields could be nulled out when returned from the server to any client attempting to view them but still allow scaling and alignment.


Ann Otoole added a comment - 19/Feb/08 04:09 PM
SVC-1581 is not an exact duplicate of SVC-701. they are related.

SVC-1581 calls for an immediate disabling of the automated replication tools using existing techniques and then the copyright metadata portion is pretty darn close to SVC-701.


Argent Stonecutter added a comment - 19/Feb/08 04:39 PM
I'm the author of SVC-701 and I don't see ANY relationship between these proposals at all.

If this was implemented I would end up spending a lot less money in SL, because I routinely add scripts to products I buy, and calling get/set sequences to modify parameters is a pretty damn common process.

I've largely quit buying no-mod prim-based products, except for the occasional Tiny, and for similar reasons I simply won't buy no-mod clothes.

I've already had a big chunk of stuff I've bought effectively trashed when they decided to keep you from being able to remove contents from no-mod objects, so I can't use stuff I bought as props because I didn't clean them out when I had the chance.

The thought of having another chunk of my inventory (including scripts I've already been using) trashed in a vain attempt to prevent copying really doesn't thrill me at all.

And vain it is... you know that it's pretty trivial to modify either the standard client or libsl to do the same thing, without going through the manual process of sticking a script to pull in the parameters in every prim in the object. The gate you're trying to close isn't just too late, it's not the one the horses are getting out through.


Ann Otoole added a comment - 19/Feb/08 04:58 PM - edited
i'm recommending the solution be server side so any compiled client will no longer function as a means of automated content theft.

libSL would be meaningless on this use case if this solution were implemented professionally.

As a matter of fact I am in favor of making the client do little except send messages to the server and if authorized receive data back rendering most of the negative aspects of the currently swiss cheese security model clients useless. That is good software engineering. message based systems managed by transaction systems with automated recovery on failed transactions.
Then new features can be rolled out without changing the client and without exposing vulnerabilities all over the place. that would also pave the way for better skin capabilities, etc.


Harleen Gretzky added a comment - 19/Feb/08 05:48 PM
My understanding of the way OpenGL works you have to send this information to the viewer for it to render, so it is not possible to keep this information server-side. Cory Linden explained it in the blog here:

http://blog.secondlife.com/2006/02/14/opengl-copying-and-stealing/


Argent Stonecutter added a comment - 19/Feb/08 06:56 PM
Ann: what you want is not technically possible. It wasn't possible when Copybot made the inherent design constraints of any client-server architecture obvious, and it's still not technically possible, and without locking people's computers up so that instead of buying a computer you rent one from Microsoft or Apple and only run programs they authorise you to, it will never be possible.

The client, whether LibSL or the official client, already does "little except send messages to the server and if authorized receive data back". The data it receives is, and must be, everything that is required to render the image that data represents. Which means it contains all the prim geometry and textures, all the animations and sounds. The whole thing is, and always will be, on the honor system.


Ann Otoole added a comment - 19/Feb/08 08:19 PM
it is technically possible to halt lsl script based replication systems. that is the point.
sure a dedicated criminal can steal anything. and they do. but this is about taking the capability out of the hands of non technical people.

The more the geeks yell out how to rip people off the faster sl will be gone.

the reason major rl retailers are not really interested in sl is because LL does not even try to combat IP theft.
So those retailers go to places where there is no user content upload capability.

Sure you guys can go there and steal content. but why don't you? Because in SL you make money off of it. we want LL to make it more difficult. and to definitely render it a clear cut TOS violation if you are proven to have uploaded any content into sl that was replicated from a legitimate creator.

people using the script kiddie tools don't know they are violating the TOS and there is no shortage of the "everything is free" open source crowd out there gleefully lying to them about it and failing to mention the tools they are selling unsuspecting customers may result in the customers being permanently banned from secondlife. In fact it should be a permanent ban for even making and then selling devices that can be used to violate the TOS.

By taking an ethical stance on these matters LL will demonstrate they are serious about SL as a commerce platform.

basically, if you do not have a use case for a capability then that capability should not be present in the code.
there is no legitimate use case for replication of copyrighted content into content created by you using lsl.


Argent Stonecutter added a comment - 19/Feb/08 09:08 PM
"it is technically possible to halt lsl script based replication systems."

Not without destroying working content. I'm serious. You can not change LSL the way you want without breaking stuff that people are selling, right now, and making money from, right now. People who are NOT aiding or abetting theft.

"but this is about taking the capability out of the hands of non technical people. "

It is more difficult to use a script-based replication systems than the easily obtained client-side tools for doing the same thing.

"the reason major rl retailers are not really interested in sl is because LL does not even try to combat IP theft. "

We went from music companies talking about suing Apple for their "Rip, Mix, Burn" ad campaign to agreeing to sell music with no technical protections through the iTunes Store. We're not talking about some low rent "geeks" here, or unsuccessful companies, we're talking about Steve Jobs.

Here's what he said: "When we first went to talk to these record companies—you know, it was a while ago. It took us 18 months. And at first we said: None of this technology that you're talking about's gonna work. We have Ph.D.'s here, that know the stuff cold, and we don't believe it's possible to protect digital content."

The reason "major RL retailers" don't want to get into SL is there's no money for them in SL. The SL market is smaller than the desktop Linux market, and "expensive" products in SL cost about as much as a plate of General T'so and a side of egg rolls.

"render it a clear cut TOS violation if you are proven to have uploaded any content into sl that was replicated from a legitimate creator."

Make that solid, with some kind of appeal process so griefers can't abuse it to harass people, and more power to you. But that's a completely different proposal than "let's break MORE working products in exchange for a false sense of security".


Damian McLeod added a comment - 19/Feb/08 09:15 PM - edited
  • NOTICE: After writing the following and re-reading it a few times, I note it can be taken as somewhat abrasive or caustic by some, though it is not what it was meant to. I have edited it a few times to make it less so and still get My point across, but I can't really edit it too much more without loosing the point I am trying to convey. So if you are worried about potentially abrasive points of view, just skip this comment entry...

While it is a nice idea, it will also serve to cripple a good number of scripts out there...

There are a fair number of scripts that use llGetPrimitiveParams to gather the original or current specs for a prim before applying llSetPrimitiveParams or similar... Amongst these scripts are the resizers that everyone says to use as a way to make things no mod or even things like Loop Rez that is used to make prim skirts.. So you will immediately undercut yourself crippling the scripts that use such...

Reasons why NOT to cripple llGetPrimitiveParams:

Limiting llGetPrimitiveParams to a full perm only object immediately disqualifies it from anything that is copy / mod / no trans, which you can already duplicate since you have mod perms anyways... Given this what would be the point in adding additional work to the server to test whether the command is allowed to be used or not? Such would only incur additional potential lag...

Limiting it based on a copyright system will require a full re-write of the perms, otherwise you will have to limit it to prims you create AND own, otherwise such could be considered potential copyright... Given the existing perms system, you only have five bits of data to test against... Owner, Creator, and the three perms... Assuming that you would want to allow others to call llGetPrimitiveParams for things like resizers, and such, that means we are now down to the perms again as owner and creator wouldn't match if someone made a skirt or similar and sold it... And if the mod right is checked then what is the point in stopping the use of a scripting command that does exactly what can be done by hand anyways?

Side note: Re-writing the perms system means that ALL existing content has to be adapted to the new perms... Stop and figure out how many objects are in existence, both in world and in everyone's inventory... I know I have roughly 27,500 items in My inventory... Willing to leave the perms on them to the system's best guess if they re-write it, versus what the original maker wanted for them? Personally I will take being able to control my own creations... As it is, I already use scripts with internal protections, such as limiting what can be added to the object, whether or not it has to have Me as the creator or such.. Even these have thier limitations as others have pointed out, but they are measures I have taken to protect My own work instead of asking others to do My job...

Any crippling of commands such as llGetPrimitiveParams is just pointless. It will only serve to negatively impact both development and long term performance of Second Life. By attempting to limit the command a good deal of development with LSL will be snuffed out before it goes much further. Not to mention the additional load on servers. Even without the use of llGetPrimitiveParams there are SEVERAL ways to copy items from SL. Both inworld and out... Unless you were to totally remove all of them, which can't be done, as the data can still be interecepted on the end users comps, unless you want to confine them to premade systems, such as XBox 360, PSP3, or similar, and take away the ability for all users to build and upload content, but wouldn't such defeat the whole idea behind SL?

I know I have rambled, but it just frustrates Me when I see people who cry wolf and want to cripple things that have a good number of legitmate uses that would suffer by crippling them just because it doesn't jive with their view on things... Hate being cynical, but what ever happened to looking after your own work, instead of asking someone else to take care of your work for you? It's bad enough we keep letting our governments take away our freedoms and rights, and become the real parents to our children... Now you want the people who gave you freedom once again to take it away from you? Sorry... Sheeple can go play games, and leave the simulations to individuals...

Want to protect your work from things like LSL based copiers? Then take an active role in hunting down copy cats, and abuse reporting them... Think you are the only one capable of comming up with an idea? Think again... There are a number of ways to build pretty much everything in SL, as well as write the scripts... In short, quit resting on your laurels just because you hit it off with one or more good products... Get out and actually use the brain you were given... Start creating the next top product, and keep your eye out for people that have outright ripped your work without permission and tried to resell prim for prim duplicates with little to no original effort put into it. Get out there, produce quality products, get them known by people, and make people want to come to you for them instead of your competition...

I leave you with this bit of wisdom once told to Me...

Imitation is the sincerest form of flattery... ( http://www.bartleby.com/59/3/imitationist.html )

PS: Before you complain to Me about My little rant, know this... I have already had some of My work duplicated by such means, and I took it in stride, discussed it with the one doing the copying, and came to terms with them, all without having to ask for someone to limit something, or such... It is amazing what can be done using your brain and dealing with problems yourself, instead of running to the first authority figure you can find and asking them to strip away what you feel is the problem, instead of confronting it yourself, and speaking to the one who wronged you... Guess the sheeple want the government to spoon feed them the world already chewed and digested...


Harleen Gretzky added a comment - 19/Feb/08 11:08 PM
Even if you stop llGetPrimitiveParams from working in this way, you can still write down and recreate every prim if you have mod rights, doesn't matter if it is complex or not since a complex object you have to put a llGetPrimitiveParams script into every prim, so it is hardly any easier.

Strife Onizuka added a comment - 20/Feb/08 03:47 AM - edited
There are scripting applications where you want to sell products that use llGetPrimitiveParams and don't want them crippled by permissions. You will find if you look back to when 1.6.5 was released that there was a bit of a stink over the new limitations at the time.

Limiting llGetPrimitiveParams is stupid because there are other faster and more versatile ways of stealing content that can be done entirely client side with total disregard of the permissions system or ownership.

If you think of SL like an airport, and TSA being security. Restricting llGetPrimitiveParams would be like not allowing nail clippers but meanwhile allowing fully automatic weapons and bombs in the form of copybot* and various other hacked clients. The problem is you can't stop hacked clients (not without Trusted Computing).

What we have at the root of this is a social problem and no technical solutions will give a satisfactory or lasting result. The solution must be social first.

*When I say copybot, i mean the original, not the scripted crap that is being passed off as copybot.


Lex Neva added a comment - 20/Feb/08 09:29 AM
Others have said things along these lines before, but I just want to be sure that you understand how SL works.

Your suggestion #1 will break a great deal of content already existing in SL, including content I've written.

Here's how the system works now:

Any script running in any object, regardless of the perms, has the ability to get and set primitive parameters. The permissions system prevents any person from putting a script into any object that they do not have modify rights on. This means that if you can't modify an object normally through the UI, then you can't use a llGetPrimitiveParams() script to get all of the params. Conversely, if you can modify the object, then you can add a script to it to get the primitive params. You could just as easily read off the primitive params right from in the UI manually.

The bottom line: if you don't want your customers to be able to see (and presumably copy) the primitive parameters, don't distribute the object as modifiable. If you need to give people the ability to resize the object, then include a script with a dialog that does the resizing for them. I believe Jeffrey Gomez wrote a script to make this kind of thing easy for content creators.

A huge number of scripts already existing in SL depend on the fact that scripts placed in an object before the object became no-modify (when transferred to the buyer) can still see and modify primitive parameters. As people have said above, you cannot implement your suggestion #1 without breaking a great deal of content across SL and destroying an entire segment of the scripting economy.


Harleen Gretzky added a comment - 20/Feb/08 11:54 PM
Except this proposal is not entirely feasible part of it calls for: "Therefore it becomes necessary to implement server side functionality that cannot be bypassed with open source clients."

And from Cory's blog: "...OpenGL must have access to the geometry, textures, lights, and transforms."


Argent Stonecutter added a comment - 21/Feb/08 04:48 AM
Mister Sands: if you believe that I am not in favor of paying people for what they create you have rather fundamentally misunderstood the entire issue here.

You also seem to have misunderstood Cory's post. "Some of that" refers to "law, culture, and community"... most explicitly not "technology".

I will, in addition, note that there is nothing in the iTunes software that prevents one from writing an Applescript to burn that track to a CD and re-rip it, in a lossless format, and if it were available from EMI or any number of independent artists it wouldn't even require that much work to get the ability to copy it.

I have routinely burned and re-ripped every track I have purchased from iTunes, and yet I have passed precisely zero copies of them on to other people. Why is that? Perhaps it has something to do with 'law, culture, and community'? It certainly has nothing to do with technology.


Lex Neva added a comment - 21/Feb/08 09:13 AM
I have an idea that might satisfy both sides. We could break modify permissions into two new permissions: Resize, and Modify. This satisfies the need for attachments and other products to allow the buyer to resize them while still allowing them to prevent any other kinds of modifications (including the viewing of primitive parameters). An object which is Resizable but not Modifiable can be resized, but the owner can't drop a new script into it, and therefore can't read off the primitive parameters.

I'm generally not in favor of further complicating the permissions system, but I'd like to hear what Ann Otoole and others think about this idea.


Ann Otoole added a comment - 21/Feb/08 10:39 AM
I like your idea Lex. Many of us have expressed this concept in jira and elsewhere.

I don't like having to pay ransom for extra scripts to overcome the poorly thought out permissions system in Secondlife.
The argument can be made that making the permissions system more robust and scalable to support Linden Lab's responsibilities for Safe Harbor status under DMCA will result in more code running. The fact is more code will be required. There is no way around it.

The underlying thrust is to make it difficult to replicate copyrighted content inside of SL. In addition the people who don't care about laws need to have no option to say "LL allows it" or "I didn't know it was copyrighted", etc. Thus once someone is identified as a repeat offender they can simply be removed from SL. When they are removed all traces of the stolen content must also be removed. This includes the deletion of textures that were stolen. People that bought stolen skins will have to suffer the cost of replacing them with legitimate skins. There are enough high quality open source skins available in SL for free so there is no legitimate argument against it.

There are additional ideas being expressed for such permissions as number of allowed transfers, etc. Lots of good ideas but the overall effort remains splintered and subjected to verbal (or textual maybe?) abuse by people resisting a move of SL into a more responsible business space.


Argent Stonecutter added a comment - 21/Feb/08 11:13 AM
Mister Sands:

When I said you appeared to misunderstand me, I meant that you appeared to believe that I was taking a position that I did not intend to express. I apologize for leading you to that conclusion and I hope I have explained myself better.

When I said you appeared to misunderstand Cory, that is because my understanding of the text you quoted did not appear to support your position. If my own understanding of his comment was faulty, I am certainly willing to believe I was mistaken.

Ann Otoole:

I do not believe that someone using a cloning script to copy a product in SL is in any position to plead ignorance, and if Linden Labs is unwilling to sufficiently sanction people who abuse the technical limitations of this (and any other) rights system under the current scheme, I have serious doubts as to whether they would exert any greater effort to apply the force of "law, culture, and community" after implementing your scheme.

The real problem is not the technical limitations of rights management schemes, the problem is Linden Labs inability to provide the necessary degree of negative reinforcement to solve your problem.

I am not "resisting the move of SL into a more responsible business space", I am resisting a change that will not improve the ability of creators and businesses to operate in SL, but will rather decrease it. The change that is required to solve the problem you're addressing is not technical, it is a matter of policy. The current technology and terms of service would work for you if Linden Labs chose to make them work for you. If they don't, no technical tweaks will fix the problem.


Lex Neva added a comment - 21/Feb/08 11:24 AM
"I don't like having to pay ransom for extra scripts to overcome the poorly thought out permissions system in Secondlife. "

Just a note: the script I mentioned is free and open source.

"There are additional ideas being expressed for such permissions as number of allowed transfers, etc. Lots of good ideas but the overall effort remains splintered and subjected to verbal (or textual maybe?) abuse by people resisting a move of SL into a more responsible business space."

Remember, we're getting defensive because what you suggested will break content we already have deployed in SL. It's no surprise that we'll try to avoid letting that happen. It's not that we're against IP, not by any means. I depend on IP rights in SL for a good portion of my income. I'm not suggesting not to make changes that help business in SL... I'm just trying to avoid a change that will destroy business already being done.


Argent Stonecutter added a comment - 21/Feb/08 12:46 PM
Why would you need legacy support for objects under Lex's proposal? It would not remove anything, it would allow people creating products that need to be resized to give them a "resize" right rather than "modify" right. This would allow you to sell products that previously had to have modify rights or that previously had to include a resize script with "No Modify/Resize".

I'm not sure what you're getting at about megaprims. Havok 4 final will explicitly support megaprims up to 256 meters in size, and already supports megaprims better than Havok 1.


Ann Otoole added a comment - 21/Feb/08 01:21 PM
In order to allow a smooth transition it seems to me that the upgrade procedure requires a simple decision/action task:
1. If the object is set to no mod then both flags would be "unchecked"
2. If the object is set to mod then both flags would be "checked"

This puts the onus on the creator to rez products and set the new permissions and then repackage them.
A pain to be sure but not much different than how we are already having to make monthly checks for flags being mysteriously changed during server side updates. This would take me a couple of days to complete but would be a welcome task if it means content theft is more limited to use of external tools in clear violation of the SL TOS.


Damian McLeod added a comment - 21/Feb/08 02:09 PM
Lex, I have to admit, the dual perm idea is a fairly decent one compared to others I have heard bounced around... While it means more effort on the content creator to go back and reset the perms on the items they sell it still does manage to provide a bit more security without hindering existing builders...

And Ann, since you ignored My citations on legal uses of the llGetPrimitiveCommands on SLX here are a few, with direct links for you to examine:

Prim u-Stor:
http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=171134
Allows you to back up your creations to an offworld database, then restore them at a later time should SL bork your inventory.

!Meta Elemental Multiform Craft: http://www.slexchange.com/modules.php?name=Marketplace&file=item&ItemID=159032
Uses llGetPrimitiveParams to allow you to change between different modes / shapes. Without the use of llGetPrimitiveParams this would not be entirely possible.

Morf Engine:
Developed by Pale Spectre this engine script set allows others to build vehicles which function like the Elemental, at present I do not have an existing SL link for it, but do have a copy of it in My inventory, that is used as part of existing builds that will be released.

On a side note to all... What of people who desire to use scripts such as those provided by Xcite, Sensations or others? This issue is far more reaching then just a single LSL command, as thier are legitmate reasons for using mod perms but at the same side using them does open up potential for abuse as is true in any system of checks and balances.

I have proposed the following at SLX as well as a few other places and aside from some not wanting to take part in INTELLIGENT discussion as they are so wrapped up in one specific way of fixing they are blind to others, what of this potential suggestion:

When a script runs for the first time in a user's login session that uses llGetPrimitiveParams, a dialog, that is different in color and size from the regular ones popups up with an advisory on the use of llGetPrimitiveParams, something along the lines of "This script contains functions which can be potentially misused. Note that your clicking Okay below will be logged and recorded as certification that you will honor the SL terms of service and international copyright laws in your use of this script. Failure to do so will result in legal prosecution..." Perhaps something in red and about the size of the new Debit Perms dialog?


JB Kraft added a comment - 22/Feb/08 09:26 AM
FWIW, since llSetObjectPermMask remains unimplemented, I think if I were implementing this I would create a function similar to llSetPrimitiveParams called llSetPrimitivePermissions and/or llSetObjectPermissions to allow fine grained control and open the way for future additions. It would take a list, as PrimitiveParams does, each stride keyed on the same options available in PrimitiveParams and more if need be, followed by a bit masked value for mod/copy/trans.

llSet(Primitive|Object)Permissions( [PRIM_COLOR, ALL_SIDES, PERM_MOD, PRIM_TEXTURE, ALL_SIDES, PERM_NONE, PRIM_SIZE, PERM_ALL,PRIM_DESCRIPTION, PERM_NONE,...] );

Defaults would be set to make this transparent and the client UI could present a simplified version addition to the existing with one or two reasonable switches. The script itself could handle the finer granularity and the call would only work for the creator of the object/primitive. It would also open up a market of sorts for permissions scripting. It occurs to me, as another beneficial example, that this would allow branding, in that, one could burn the company logo on one side of one prim while allowing the user to texture and color the other sides to their liking.

I appreciate that I don't have the detailed knowledge of the SL server/client required to present a more thorough implementation or even to judge the feasibility for this concept. (I will offer, however, that I am a professional software developer, for the record.) Perhaps this would be too onerous to implement in any practical way with the way the protocols are currently designed. Traffic between the server and client being an obvious possible problem. It does however, conceptually offer a seamless migration and opens the door for content creators to have much more control over protecting their work so I thought I would offer up the notion. Perhaps also, it has been mentioned and dropped before and my apologies for repeating if so.

I would just like to add the I have been thinking about legitimate llGetPrimitiveParams use cases for a few days now and I really can't think of one other then copying prims and objects. Using it to record state, as was put forth earlier in this thread, is just a bad idea in my humble opinion. Granted, since there are no real good ways to persist data inside SL, this is a problem, however using a prim to maintain state is equally lame and prone to misuse. I appreciate that people do do it however. For that use, all one need do is put the prim in a known state first and carry on from there. That is what I would do regardless. A saner option is a small script and llMessageLinked to record the state of an object or object params.


Argent Stonecutter added a comment - 22/Feb/08 09:56 AM
llGetPrimitiveParams, legitimate uses:
  • Modifying a prim's current parameters dynamically. For example, reading a prim's current slice, cut, twist, texture, alpha, color, whatever, and then changing it.
  • Modifying only one element of a multi-value parameter, such as lighting or flexi.
  • Tracking external changes to the prim's own state.
  • Adding dynamic behavior to purchased products.
    • Avatar attachments
    • Furniture and poseballs
    • Vehicles

Storing the data away somewhere and blithely writing it out means that the internal state of the object will change from the actual state. This is basic database design here: only store data in one place. If you don't want your customers changing the prims in the object through the editor, make your prims no-mod (and the original problem never comes up). If you don't make them no-mod and the customer changes them behind your back then when your script runs it will trash their changes. That's just bad design.


JB Kraft added a comment - 22/Feb/08 10:46 AM
I understand what you are saying Argent. I guess my point simply is using the prim as a database is bad database design imho. I don't really see why you need to read flexi to set flexi. Just set it. I do however see a case where perhaps you are resizing a linked prim and the customer has resized the whole object to make it bigger. Perhaps then you would need to read to scale proportionally but a permission system with a greater granularity would allow for such cases should the creator wish it so.

Given the small number of cases this blanket proposal would affect, I feel I have to support it for the greater protection it offers the creator. I personally have shied away from putting my real business efforts and talents into SL because of the gross shortcomings of the current protective measures available to creators. I think this proposal takes a step in the right direction and yes, would hinder a small number of products, but for the greater good I think. A more granular permission system would mitigate this in the end and put the protective measures in the hands of the creator where it belongs. Even if it simply comes down to another bit for resize. I would also like to add that regarding a point you made earlier in this thread about not buying no mod products at all, I feel very much the same way and it pains me to sell anything no mod and I rarely buy anything no mod. I can paint my own RL car can't I? With a toothbrush if I choose. However a more granular system would allow people to sell "no mod" items that did allow certain specific mod permissions and would possibly make those products usable to you again for your purposes while protecting the creators efforts.

BTW, thanks to all for the debate. It's good to hear all sides of the issue. I might even change my mind cheers!


Argent Stonecutter added a comment - 22/Feb/08 11:50 AM
Flexi has several parameters, so does light, and so do virtually all the other parameters. You can not change just one flexi parameter without a read-modify-write operation.

And it's not a matter of "using a prim as a database", the simulator is a database, the prim is a row in a table in that database. Something like:

TABLE prims (
id uuid primary key;
scale vector;
name varchar;
desc varchar;
...
);

Maintaining a second copy of part of the data in that row denormalizes the database, and while there are occasionally good reasons for it, "not using the prim as a database" isn't one of them.

And this proposal does not provide any additional protection to the creator. Seriously, it doesn't. It provides the illusion of protection. We've already had enough changes made in SL to provide the illusion of protection without actually doing anything useful as it is... for example, you can't just read off the position of objects you don't own any more... you have to call llSensor() and read them off that way, which is asinine. It's like fighting off barbarians by putting a sign up saying "you must be nine feet tall to storm this castle".

If the lack of the illusion of protection has been keeping you out of the market, I'm sorry to hear that... but it's never going to be more than an illusion. Maybe this will encourage you: I've put my three most popular scripts out as open source. They're still my top sellers. I've had a grand total of one person throw a hissy-cow about not going along with the moderate requirements of my license when requested.


Harleen Gretzky added a comment - 22/Feb/08 01:05 PM - edited
It is an illusion, and there is no exploit here, anything that can be done with llGetPrimitiveParams can be done manually through the UI.

JB Kraft added a comment - 22/Feb/08 01:05 PM
You make an interesting case Argent. I agree completely about the illusion of protection. Certainly computers, by their very nature, make data copyable sooner or later in that data's lifetime. They have to in order to do what they do so sooner or later someone can take that copy when it is freed from it's illusion, be that in memory or wherever. I still don't think that precludes having measures in place that make that more difficult, if for no other reason then to make the time and effort to gain access to the thing not worthwhile. Much like writing down the prim params on a paper pad would be monumental in a 1000 prim build but someone could still do it if they were inclined. Likewise, any encryption can be broken but I still encrypt passwords when I store them.

As for my staying out of the market, what I mean by that is I have a hard time taking SL seriously enough to invest the full time and effort that creating a serious and extensive product entails. I've decided not sell anything that handles money for instance. For myself, I write stuff that does because I am willing to take that risk, but I won't sell that stuff to anyone else because I know what lies beneath it and I don't want to take that responsibility on their behalf. For me the measures in place don't make the risk worthwhile. Just my personal position. In the real world I have all kinds of tools at my disposal to protect my work, to protect the work of my clients and employers and to protect the assets of their and my customers. These types of tools are simply not available in SL and so I am not really interested in investing the weeks and months into designing and implementing an extensive product if that product's ability to operate is not at least somewhat defensible with a solid layer of tools and protocols beneath. This particular issue is but one small aspect of those lack of tools for me. That said, I also realize that a dedicated person can break those tools in any world, regardless of my best efforts, but I do feel better knowing that I and the frameworks I use have at least done their very best to prevent or curtail such a breach.

As for the normalization of the data, I think that could be accomplished without breaking any acceptable relational db design practice. Without knowing the actual schema in place on the server side I hesitate to offer anything but a wildly thrown dart but it seems to me a simple long int bitmap added to the table above would suffice to encapsulate read perms. There is not much point talking about that however since I certainly don't have access to the schema so I can't really make any valid contribution in that regard.

Anyway, you have certainly given me something to chew on. cheers!


Harleen Gretzky added a comment - 22/Feb/08 03:12 PM
This proposal has nothing to do with stopping copybot. Using llGetPrimitiveParams is not an exploit.

Argent Stonecutter added a comment - 22/Feb/08 05:13 PM
JB: what I mean is that duplicating the data that is the prim's parameters in some script-local data structure, rather than reading it from the prim itself, is inherently a denormalization of the database. The result of this denormalization is the usual one of the two sets of parameters getting out of sync with each other, and producing unexpected results... that is, bugs.

The most likely bug is that the owner of the object modifies it, and then that modification is undone by the script. This is actually a fairly common bug in scripted objects, and one that I go to some effort to avoid, myself. The result of this is that I use llGetPrimitiveParams quite a lot in my own code... and I would expect that any developer who wishes to produce the best possible product would do the same. It's just so much more powerful to allow a customer the full capabilities of the SL object editor than to restrict them to just those modifications that one cares to take the time to implement.


Lex Neva added a comment - 22/Feb/08 05:43 PM
PM, what Harleen said is absolutely true. This proposal is not about copybot, it's bout copying using LSL scripts. Copybot refers to a very specific program that showed up around two years ago, not just to copying in general. Copybot connected to SL as normal, but it watched the network traffic and reconstructed prims directly from the data transmitted to the client from the sim. This technique is still possible and will continue to be no matter what, in the same way that it's possible to view HTML on any webpage.

Using llGetPrimitiveParams() is not an exploit, as has been explained above numerous times.

Let's try to keep it civil, rather than slinging veiled insults at each other. This thread is quickly turning into a flamewar.


Ann Otoole added a comment - 22/Feb/08 08:59 PM
Why not keep a technical dialog going sans emotions?

Let's toss out some theoreticals and see if something can rise up that satisfies all interested parties.

The prime objection by knowledgeable scripters is attempts to cobble existing lsl functionality. One negative factor is adding execution time to function calls.

Assume for a moment that a greatly improved set of permissions were deployed.
Perhaps the script execution system could check the permissions prior to allowing the script involved to commence execution and deny execution if the object permissions denied certain function calls based on the permission rules. There would be a minor delay before execution. If the permissions were allowable then the script could freely execute as originally designed.

The bigger problem is that I really don't think LL cares about content theft. We see no participation from LL on these matters while LL allows reapeat offenders to openly operate across SL.
I would love to see LL step up and state they are interested or not interested in these matters. If not interested.. I.e.; we are wasting our time.. then we can publish it in the media for all to see and make sure potential new creators know they are wasting their time. To tell people to keep making more and better new stuff to be ripped off is absurd.


Harleen Gretzky added a comment - 22/Feb/08 10:34 PM
Copybot does not use LSL in any way, so how can this be about copybot when nothing proposed here would stop copybot? Just because others use the term "copybot" wrongly in this thread, doesn't make the proposal about stopping copybot. Copybot is an exploit (and against the ToS), using a valid LSL command to do something it was never intended to do or do only because of a bug is an exploit, using llGetPrimitiveParams to do exactly what it was intended to do is not an exploit.

In fact using llGetPrimitiveParams to replicate prims is not really that efficient or quick, you have to place the script in one prim, create a new prim, put a receiver script in the new prim, initiate the replication, then repeat all that for the rest of the prims. Then you have to figure out someway to rip the textures, and since VWR-1919 there is no easy way to do that, then you have to texture all the prims and then link them all together. Probably not that much faster than using the UI. And it can never be used to copy scuplted prims since llGetPrimitiveParams is incapable of getting the scuplt map UUID without full perms. It is way easier to download a copybot viewer and truly copy the object. This proposal should also include removing the information from the UI along with llGetPrimitiveParams to be really thorough. Though, IMO you need something like Lex's resize permission instead of breaking content in this way. And the enhanced permissions Ann mentions and is similarly proposed in SVC-1656 are good ideas also.

And of course LL cares about content theft, the problem is just reporting places and avatars in things like SVC-676 is not giving them anything they can work with. The creators have to submit DMCA reports, if you know someone is using copybot or replicating prims report them to LL.


Harleen Gretzky added a comment - 23/Feb/08 07:02 AM
It is not that content theft is not a serious issue, and those not supporting this proposal are for it, most just do not feel changing llGetPrimitiveParams and breaking content is the right answer.

Things like watermarks, digital signatures, copyrights, enhanced permissions, IMO are the right way to go.


Ann Otoole added a comment - 23/Feb/08 07:18 AM - edited
just a point of order here.
"copybot" is used as the keyword description by the script kiddies selling lsl based replicators in sl.
thus "copybot" has come to mean any automated means of copying content as opposed to the original "Copybot" that is run outside of SL.

LL approves and supports replication systems while at the same suggesting the creators of these things warn customers of potential TOS violations.
of course the creators of replicators gleefully ignore this "suggestion" and sell then to unsuspecting noobs that then clone shoes and other things which results in the overhead of DMCA activities.

There is a cost to this activity in the form of staff overhead to deal with DMCA filings. and the worse it gets the sooner we will all be paying extra to cover the overhead.

watermarks are useless. so are digital signatures. too easy to simply screenshot and thus remove that data.

copyright metadata fields are mandatory. and automation to leverage copyright metadata becomes possible.


Drew Dwi added a comment - 23/Feb/08 07:35 AM
I hate to kill anyone's hopes but the linden's working on the mono project have stated that they are looking to incorporate other languages (C# I think is first on the list) instead of continuing to expand the LSL language...... i'll see if I can't find this in office hours logs or get them to comment on that.

Harleen Gretzky added a comment - 23/Feb/08 07:38 AM - edited
How is copyright metadata any different, a simple screenshot would remove that data also.

And it is the same way with a lot of replications, you can copy a software CD for backup purposes, but then giving or selling that backup to someone else violates your license for that software.


JB Kraft added a comment - 23/Feb/08 10:41 AM - edited
I had forgotten about a couple of build tools I created for my own use. One is an alignment tool similar to what PrimDocker and Skidz does and the other is a texture alignment/manipulation tool. I just use them and never think about them much because they are not for sale but one of the functions they both have is undo/redo and I use llGetPrimitiveParams to record the state of the prims before each operation. This proposal would certainly affect the ease of use for these tools if I ever decided to sell them. I think PrimDocker has an undo/redo function as well and if so, no doubt uses the the same sort of method. Anyway, I just wanted to add that particular fish to this bucket.

Harleen Gretzky added a comment - 23/Feb/08 05:01 PM
I seriously doubt this would imped the script kiddies either, they would just enjoy the arms race you have started. Instead of giving out LSL prim replicators, they would just give out URLs to copybot viewer downloads and other ways of copying objects. And as Drew points out C# in Mono is the future, all these script kiddies are highly proficient in C# and will rewrite prim replicators in C# once this happens, most likely very enhanced also.

Harleen Gretzky added a comment - 23/Feb/08 09:38 PM
I never said IP protection for creators was not important to them and I am all for whatever LL can do that will really protect IP. I just do not believe limiting llGetPrimitiveParams will do that. And they can only limit what is within their technological bounds, maybe Mono and C# cannot bypass this if they did restrict llGetPrimitiveParams. But by the same token there is a good chance that they will not technologically be able to stop someone from writing there own llGetPrimitiveParams function in C# that can. Just like they cannot technologically stop a true copybot. And I did not bring up script kiddies, Ann did, nor do I think they will take over. I assume most programmers have ethics and morals and will not write code that steals content. And this is not about winning or losing this JIRA argument, I could care less, I thought we were having an adult discussion on the subject.

And I have been to the Mono Office Hours where Babbage and Scouse have said they prefer not to add to or enhance LSL but would rather incorporate other languages and C# is always the first brought up.

I am also all for creators filing DMCA report when they think their content has been stolen.


Harleen Gretzky added a comment - 24/Feb/08 02:23 AM
I give up, I do not know how to explain it any further to you without again repeating myself.

Argent Stonecutter added a comment - 24/Feb/08 05:04 AM
Mister Sands: You do not seem to be reading what I have written as meaning what I intended to write. You don't seem to be reading the same thing into what Harleen has written as I'm reading there, either.

Argent Stonecutter added a comment - 24/Feb/08 11:06 AM
Mister Sands: please pay attention to what I have actually said, and what Harleen has actually said.

1. This is not just a matter of "this does not appeal to me". This is a proposal that would break scripts that I use every day, and break content that people are currently selling and that is NOT being used to rip anyone off. Breaking content is a bigger problem than ripoffs, because you can't sell broken content at all... instead of losing (say) 50% of your sales to copycats, you lose 100% of your sales. This proposal (not the alternatives, the one that this Jira is for) will destroy businesses.

2. Neither I nor (I believe) Harleen have argued against Lex's alternate proposal or the other alternate proposals that have been discussed here. Have you noticed that? Apparently not.

3. I am not attempting to get you to remove your bleeding vote.

If you or Lex or anyone else want to take the alternate proposals here and create a new JIRA entry that describes a proposal that doesn't involve breaking working content in SL. you might be surprised who votes for it. But this JIRA entry is for limiting llGetPrimitiveParams, not for creating a new "semi mod" permission.


Argent Stonecutter added a comment - 24/Feb/08 03:47 PM
A) I'm not going to hijack this JIRA entry by changing it into a completely different proposal. If Anne wants to do that, or to start a new entry that reflects the alternate proposal, that's a whole different matter... but I'm not going to be a lout just to make you happy.

B) I have not asked that you pay attention to me. I have not said one word on how people should vote. Votes are, at best, something to indicate to Linden Labs what people care about, and clearly people care about this issue.

I have asked that when you do comment in response to me, or to Harleen, that your comments reflect what we're actually saying, in context. It's not your conclusions that are the issue, it's your characterization of the people who don't agree with you. Using terms like "hallucinations" and referring to someone as a "chaos programmer shoplifter" without the slightest provocation are a long way from merely drawing separate conclusions.


Ann Otoole added a comment - 07/Mar/08 09:44 PM
Even if the new permission for scaling were added the data is transmitted in the clear to the client and that client can be the new and improved copybot.
Therefore all attempts at intellectual property protection in Secondlife are moot.

The only solution to the problem will be closed source clients run on an encrypted link.
Since this is about as likely as the wealthy and powerful of the planet suddenly deciding to redistribute the wealth to ensure the needy of the world are taken care of I see little point in continuing the campaign for author rights enhancements in Secondlife.

Simply put: If LL cared they would have provided the long ago promised enhanced metadata for IP protection.

But LL doesn't care.

So why waste any further time on it?


Gordon Wendt added a comment - 14/Mar/08 05:16 PM
umm ok, reopening with a link to the $6,000,000 man intro? I'm reclosing since A) no reason was given to reopen and B) the issue was closed by the reporter.

Argent Stonecutter added a comment - 14/Mar/08 06:03 PM
I think it's clear by now that Mr. Sands is not interested in rational discussion.

Gordon Wendt added a comment - 14/Mar/08 08:14 PM
PM, you have no legitimate reason to reopen this, it was closed by the issue's reporter so all you are prsently doing are being a nuisance and giving more evidence for when you get banned from the JIRA for abusing it.

Ann Otoole added a comment - 14/Mar/08 10:28 PM
perhaps the correct way to discuss this specific type of feature request will be to attend someone's office hours and ask about what would be entailed in adding a scale flag.

the issue here is that even if the scale flag were added the new copybot would still have access to the data.

there is no solution to this problem short of closed source client and encrypted data stream.

The person to take this matter up with will be whoever is selected as the next CEO of LL.
that will be the only person who can do something about the problem and do so by issuing an order to deal with it the hard way.

pigs may be flying on hoverboards through a frozen hell by then.

we all want theft stopped but only LL can do it and only one way and that way is not on the table.

200 people voted for voice out of 6 million. we got voice.

1051 people want more groups. we are told groups will not be touched.

do the math.

There are no feature requests to integrate facebook with SL yet it is being pushed and i suspect facebook "friends" will be added to search relevance forcing even more gaming activities to protect your business interests. next should be blog integration with SL and blog feeds count as inbound links. sl is being turned into a popularity contest. damn what people need search for.. to find things.. its all going to be about finding a select few people and providing exposure only to those people whom LL likes and promotes.

what is wanted by the most people is not addressed. sometimes because it just isn't possible with: technology in place, talent in place, policy in place, odd ideas by people at LL that do not use SL at all in respect to what they want sl to be, etc.

only an executive order will bring about change.

and then, if the Tao is retained, only if someone at LL thinks it is important AND they are not directed to work on something else (which really does happen at LL despite the "tao", slurban myths about tasking priorities, etc.)

/rant


Argent Stonecutter added a comment - 15/Mar/08 06:42 AM
There's no way to protect content from a client "copybot", but the scale flag would allow people to make no-mod products that could be resized, which would satisfy the requirements of this proposal for new content without breaking anything. Have you made a JIRA for that one? If so, what's the JIRA number?

Have you made a JIRA proposal for a closed client with anti-tampering software? What's the number?


Strife Onizuka added a comment - 15/Mar/08 08:49 AM
I saw an anti-tampering Jira sometime in the last couple months. I think I resolved it (or maybe i just thought about resolved it) because it was a complete reversal of policy. The client is open source, LL has many partners who ship custom clients for various platforms, the cat is out of the bag.

Gordon Wendt added a comment - 15/Mar/08 02:19 PM
closing again per the reporter's original closure, if it's closed by the person who reported the issue it means that they want it closed and nobody except for a linden should reopen it so until you become PM Linden leave it alone.

Gordon Wendt added a comment - 15/Mar/08 08:55 PM - edited
I would agree wholeheartedly PM if it were not for the fact that it was the reporter herself (I'm assuming it's a her by the name) closing it which is her prerogative which essentially has the same effect. Someone other than the nominator closing or resolving the issue in the first place or in this case reopening it is stil heavily disputed with at least 3 issues in regards to it on this very JIRA, it should be noted that I'm not unilaterally just closing this I'm just re-enforcing the reporter's wish that this be closed by her closing it.

Argent Stonecutter added a comment - 16/Mar/08 07:17 AM
In a previous comment you asked me to change this JIRA entry to match some of the suggestions that had been made in the discussion. I said that I was not going to hijack this proposal by changing it to a completely different one. You seemed to accept that, but now you're engaged in hijacking this proposal in just that way.

If you want to see the suggestions in this discussion treated seriously, I sincerely believe that this would be best accomplished if you were to open a NEW entry, or multiple entries if appropriate, for the ones you are actually advocating, add them as "related" links here, and let this one (which is not about these other suggestions, no matter how desirable they are) be closed.

I await your new proposals with great interest.


Argent Stonecutter added a comment - 16/Mar/08 09:59 AM
Ann is not my "nemesis", great, lesser, spotted, plain or rotating, or of any other kind, species, or breed. I do not know whether your insistence otherwise is due to a misunderstanding or is simply something you find an amusing debating tactic, but it's getting old.

I'm not going to hijack this proposal because I do not believe that this is appropriate behavior. When I have in the past succumbed to the temptation to do what you are asking me to do, the results have not been positive, and I've learned better.

As an aside, I don't believe sub-tasks are intended for the purpose you're suggesting. They are not for alternative proposals, they are for, as the name says, sub-tasks. Steps in implementing the proposal that can be taken independently. Using them rather than editing the proposal directly is still hijacking it.


Torley Linden added a comment - 18/Mar/08 08:27 AM
Useful discussion is appreciated, back-and-forth arguing is not.

We'll leave this as "Won't Finish", please don't reopen it – continued disruptive accounts which waste time & energy for others will have their Issue Tracker posting privileges removed.


Gordon Wendt added a comment - 19/Mar/08 08:47 AM
Thanks for that Torley, that's the point I've been trying to get across to PM for awhile. Incidentally since Pm decided to delete all his comments I have all changes to this issue (including comments and comment editing) automatically logged since I subscribe to the JIRA list so if anyone wants to see them IM me and I'll try to dig the relevant ones up.