Why so restricted?

Creating scripts
Post Reply
User avatar
Lilmix Pixelmaid
Posts: 2
Joined: Wed Aug 03, 2016 8:48 am
Has thanked: 0
Been thanked: 0

Why so restricted?

Post by Lilmix Pixelmaid »

Firstly apologies for the bit of a rant for my first post here.
Secondly, Kitely seems to have an amazing community and staff that work hard to upkeep the grid. This is in no way a personal grudge against anyone or trying to claim I know better than anyone else.
I'd just like to know why some of the decisions were made regarding the supported OSSL functions.
I would also like to mention that this is in reply to this post regarding the supported OSSLfunctions.
https://www.kitely.com/virtual-world-ne ... functions/

Why are both
osGetAgents()
osGetAvatarList()
so restricted?

I'm only new to kitely and OpenSim in general but I was hoping to get into a little bit of scripting since I got here. I enjoy scripting for others to make their worlds and homes more they way they want since a few people I have met on Kitely have limited skills and know what they want but not how to get there.
All I seem to be doing is running into issues where I have no permission to run an OSSL function or even issues where because I created the script and I don't have permissions to use the OSSL functions, the the world owner can't use my scripts!!
I just want to make scripts that benefit others and at the moment I can't see any way to do that. Well unless I hand them out like candy so that every world can look and act the same because none of them can use mine, or anyone else's scripts exclusively.
All I want is a legitimate reason for why the restrictions are so strict and varied? If a world owner has given me permission to run scripts and create items on a parcel in their world, why is there so many things I can't do?
All I wanted to do was detect who is in the region with a single function...

I could accomplish this by rezzing multiple scanners, each with a timer script that runs some scanner loops while they are moving out and calculating the size of the region and then rezzing more if required because of the size of the region.
I better have them all listen for each other too, so that I don't accidentally see the same person twice with multiple scanners. So Region say could be handy here. Then of course I'll have the base listening to all the chatter and filtering for and building a list of the avatars and how long ago they were detected to make sure that it wasn't before the last time that scanner passed them.
Yeah. That could work....

Now obviously this is an extremely exaggerated and dramatized scenario that no scripter I know would ever dream of implementing and actually has a simple lsl workaround but my point is, OSSL has some awesome features that LSL doesn't have and I't be awesome if creators could use them to build things unique to Kitely.

(For clarity in what I was trying to point out in all of that stupid rant.)

I could use an OS function that has a threat level of none to grab a list of every avatar in the region.

Code: Select all

list avatarList = osGetAvatarList();
OR

Use the lsl counterpart that will do exactly the same thing but is NOT restricted to world owners.

Code: Select all

list avatarList = llGetAgentList(AGENT_LIST_REGION, []);
It's great that you're just trying to protect Kitely and the worlds that make it. But please look at what functions are being restricted and how that limits creators in your grid.

I don't think that much thought at all was put into working out what functions to make available to who.
If you want the reasoning I say that, just look at all those osDraw functions available to everyone.
Now look at where the SetDynamicTexture functions are.

Yep. That's right. I'm allowed to draw the dynamic texture but I have NO way to put it on a prim. Why have any osDraw functions available to Everyone to begin with?
User avatar
Ilan Tochner
Posts: 6503
Joined: Sun Dec 23, 2012 8:44 am
Has thanked: 4942 times
Been thanked: 4454 times
Contact:

Re: Why so restricted?

Post by Ilan Tochner »

Hi Lilmix and welcome to Kitely,

There is a good reason why we limit access to various OSSL functions to world owners in their own world and that reason is that there are various aspects of those OSSL functions that can easily be used to grief the world where the functions are running or the people visiting that world. The fact that we don't have such fine grained control of which LSL functions are used by whom and where doesn't mean we should increase our vulnerability by not taking advantage of the execution controls that we do have for OSSL.

Being able to run scripts is something world owners almost always permit anyone entering their world to do. This is dangerous but, due the the way OpenSim / Second Life works, we can't offer a world hosting service that categorically prevents this. What we can do is minimize people's risk of shooting themselves in the foot with their options (which is something even very experienced, careful, and well meaning world owners do from time to time). One part of doing that is limiting access to which OSSL functions can be run by other people in your world even if you give those other people building rights in your world.

There are functions that seam benign to you because you aren't aware of (or aren't considering) their CPU, memory, network, or database costs to the server running them. If a person wants to slow down his or her own world by running scripts which he owns that's one thing, but making it easy for anyone to run dangerous OSSL functions on other people's servers is not something we intend to enable.
These users thanked the author Ilan Tochner for the post:
Selby Evans
User avatar
Lilmix Pixelmaid
Posts: 2
Joined: Wed Aug 03, 2016 8:48 am
Has thanked: 0
Been thanked: 0

Re: Why so restricted?

Post by Lilmix Pixelmaid »

Thank you for the welcome Ilan and as I said, this is not personal in any way shape or form. So far my experience in Kitely has been great.

I understand that there are risks and potential vulnerabilities in a LOT of the functions of LSL and OSSL. And I like the fact that OS offer the threat level so that a grid owner can determine whether to allow them or not at their discretion. It's part of the appeal to OpenSim over Secondlife.

I guess an answer I had in mind was why were the ones that were chosen, chosen?
Without trying to sound like a jerk, it really makes no sense why the 2 I mentioned(osGetAgents() and osGetAvatarList() ) are World Manager only. They both have a threat level of None and a less efficient lsl option that a scripter would have to use to allow their product to be used by potential buyers who don't own the world they plan to use it on. Was it just because it seemed like only the World Manager should be able to have this ability because they own the land?
There are also a lot that should maybe be disabled for the Everyone group and moved to the World Manager group to remove any risk of threat since they serve no purpose and allowed for seemingly no reason.
  • osDrawEllipse()
  • osDrawFilledPolygon()
  • osDrawFilledRectangle()
  • osDrawImage()
  • osDrawLine()
  • osDrawPolygon()
  • osDrawRectangle()
  • osDrawText()
  • osGetDrawStringSize()
  • osMovePen()
  • osSetPenCap()
  • osSetPenColor()
  • osSetPenSize()
All of these require that the script is able to use at least OsSetDynamicTexture() and this is restricted to the World Manager group.

I'm not trying to cause drama, But I would like to just bring attention to the matter.
OSSL has a lot of features that LSL coders have been asking for for years to make their products better. and not all of these products would be used by region owners or on the owners own land Eg; Dance HUDs, furniture, Avatar attachments.

A prime example is osMakeNotecard(). I would have LOVED this feature when I gave a damn about coding inside SL. Would have saved me a lot of money in storing data off world so that it could be reloaded in later and it would have saved the Labs a lot of memory when I had to use extra scripts to have enough memory to store persistent data. And of course you just had to hope that the server never reset the script or you were in trouble and had unhappy customers trying to work out why their sofa has them sitting inside instead of where they spent the last hour adjusting their position one click at a time. But unless they own the world they plan to use it on, they have no permissions to use it. As a content provider I can't know that beforehand so I would have to assume that any customer only has the Everyone permissions and code accordingly.

It's not something that bothers me too much since these are features and functions that I have not had before anyway and there are workarounds for most. I guess, as I said. I was just curious about the method used to choose them since it didn't seem to be based off the threat levels as I had previously thought.

Unless I am asked for any more information or clarification on anything I have said, I am not going to respond or provoke the topic further since at the end of the day, it's OpenSim...
Your Grid, Your Rules.
User avatar
Ilan Tochner
Posts: 6503
Joined: Sun Dec 23, 2012 8:44 am
Has thanked: 4942 times
Been thanked: 4454 times
Contact:

Re: Why so restricted?

Post by Ilan Tochner »

There is no harm in you asking questions, we don't take offense. :-)

To clarify our reasons, many of the functions that sound innocent (and even if they are used in a non-maleficent way) cause a high amount of server resource usage, to the extent that people using them (cumulatively) just a few times per second can really have an impact on world performance. Enabling such functions to be run by everyone can easily cause performance problems that people will have a hard time tracking down, thus blaming Kitely instead of the scripts they (or their visitors) have opted to use. If we open ourselves up to performance degradation due to user activity (to a larger extent than we do now) we will hurt our business a lot more than limiting which OSSL functions can be used by people when they are visiting other people's worlds.

In other words, it's a technology-driven business decision.
These users thanked the author Ilan Tochner for the post:
Genavieve Page
User avatar
Mike Lorrey
Posts: 361
Joined: Sun Sep 04, 2016 5:40 pm
Has thanked: 71 times
Been thanked: 269 times

Re: Why so restricted?

Post by Mike Lorrey »

I think restricting everyone because of the stupidity of a few is the sort of heavy handed control that a lot of us left SL over. In SL I made a bot that would extract a list of the region scripts, their owners, positions, and script time, and hand the lists out to residents of the sims so they could troubleshoot their own lag issues. Usually it came down to people buying laggy crap on the market because it was cheaper than well scripted competitive products that were more expensive. I believe firmly that if you give people more information, they can make better, informed, decisions, than penning people up in a playpen like infants. Script functions that have a high threat level should have sleep time after their use to prevent them from being triggered too often.
User avatar
Ilan Tochner
Posts: 6503
Joined: Sun Dec 23, 2012 8:44 am
Has thanked: 4942 times
Been thanked: 4454 times
Contact:

Re: Why so restricted?

Post by Ilan Tochner »

Hi Mike,

Having spent many thousands of hours assisting people with OpenSim-related issues over the past 8 years I must say that while I share your sentiment it doesn't fit my own experience with what makes business sense when providing an OpenSim-with-SL-derived-viewers-based service. I completely agree with you that we need to provide people with as much good, clear and actionable info as possible in order to enable them to make good decisions. Unfortunately the complexities of the Second Life viewer and OpenSim are such that it can take intelligent people years to fully understand how to optimize and configure OpenSim, prims, scripts, etc. to make everything work as they expect.

Most people just want a system that works and don't have the time or willingness to start micromanaging technical issues related to their world. We're therefor left with either preventing people who aren't experts in this technology from shooting themselves in the foot or spending a LOT of customer support time educating people and trying to help them get their frankly-overly-complex technical issues sorted. If we opted for the second route we'd have needed to charge a lot more money than we do now just to hire a dedicated full-time customer support stuff to handle all the technical issues people cause themselves on a daily basis.

As we've seen, the great majority of OpenSim users are very price focused and aren't really willing to pay a premium for that level of support. Even with our current automated optimization systems and various OpenSim-default restrictions, I still spend the majority of my time on customer support issues relating to people misconfiguring something or using some feature that doesn't work exactly like they expect it to work in Second Life. That isn't scalable. The solution is to make our system require less user-managed optimizations and configurations so things will just work without requiring people to spend a lot of effort learning how to fine tune things.

You're a developer, you understand code. That already sets you apart from most people who use virtual worlds. Misbehaving scripts can cause a lot of issues that are very hard for laypeople to solve and many of them just give up and go somewhere else when they encounter such problems. Assuming we're not trying to cater just to programmers, one way of preventing that is to limit what OSSL functions can be called by people who aren't the world managers themselves. It's one thing to see your world slow down to a halt because you started some script inside it. It's something quite different to try to enter your world and see it be very laggy without you understanding what happened.

We automated the detection and making phantom of meshes with overly-complex collision meshes once we saw that even people who knew what to do to avoid the problems they cause didn't always act as we expected (even after we provided them with manual tools and instructions). Removing script-permission related restrictions, that were set by the OpenSim dev team for a purpose, would result in a lot more problems than it would solve. The only cost-effective way to mitigate some of these issues with our current resources is to create a system that automatically handles overly complex scripts or switch to using a VW architecture that is more lenient to misbehaving scripts. Just adding a delay will only prompt people to question why some script that worked previously stopped working the same way when they added another unrelated script.
These users thanked the author Ilan Tochner for the post (total 2):
Selby EvansDot Matrix
Agatha Ebeler
Posts: 19
Joined: Sun Oct 02, 2016 1:20 pm
Has thanked: 8 times
Been thanked: 13 times

Re: Why so restricted?

Post by Agatha Ebeler »

Most people just want a system that works and don't have the time or willingness to start micromanaging technical issues related to their world.

yes, yes, yes! :-) I am one of this people!
These users thanked the author Agatha Ebeler for the post (total 2):
Ilan TochnerDot Matrix
Post Reply