Friday, April 9, 2010

RLV 2.0... working on it !

Hello and sorry for having been so silent lately, I deliberately stayed away from all the fuss around the TPV policy and the new ToS. I have voiced my point of view once, and that was enough. But I've been very attentive to all the concerns raised on the os-dev mailing list and various forums ever since.

But the main thing I've been doing lately has been keeping me far busier than this : I am working at porting the code of the RLV from SL 1.23 to SL 2.0. It has taken me weeks of non-stop coding and testing (weekends included) because the two source codes are so radically different that a total rewrite was actually not out of question. And it's not over yet.

First of all, let me say that I do not dislike 2.0 too much, it actually looks slicker than 1.23, even if it was hard to change my habits because it clearly does not behave the same way. I hated it at first but I'm slowly growing to getting used to it. Some parts make more sense than in the older versions, when you think about it LL wants to tend towards a "metaverse", which is no less than a 3D web. Hence the browser look-and-feel for the new viewer. It makes sense because conceptually regions are like websites, landmarks are like bookmarks, etc. Some correlations can be done. And I like it because some features were clearly broken in 1.23 and LL had the guts to start them over from scratch, sending the message that they are going to improve them and finally fix some old-time bugs. I still prefer 1.23, though, because it generally offers more power to the user (and requires less clicks for the same actions).

Porting the RLV from 1.23 to 2.0... is a nightmare. We are talking about a source base that has been worked on behind closed doors for a year at LL, before being released to the users with all the changes that it implies. Most of the code that the RLV specification impacts has changed, or is actually not there anymore, which means recoding manually and retesting it all. Some controls have vanished (the upper status bar, some floaters), some have dramatically changed (the lower control bar, the chat bar), some are new (the side tray for instance). Most of the restrictions issued by the RLV were broken, even "detach" had to be fixed. Not to mention the new concept of links (which is a good concept, but the RLV was not able to handle them natively), outfits and worn items. Worse, some intrinsic paradigms in the source code have changed, and this made the port even harder. I can say that practically every single feature of the RLV has been recoded one way or another.

To give you a glimpse of the task, here are the features that were still working (the rest was broken badly or very badly) :
- automatically reattaching locked items after being kicked off
- @recvim, @recvchat
- focusing in-world while Blocked
- @redirchat
- @tplm, @tploc, @tplure
- @fartouch
... and that's about it. Every other feature of the RLV was broken and had to be either fixed or recoded. Granted, everything is not even tested yet, namely @setenv and its suite of commands, I don't know whether they still work or not. The damage assessment is not even complete yet.

But I'm getting there. Most of the features work again, there are still a few things to fix, and a lot of testing to do. The only thing that worries me is that I am actually working on the source code of Snowglobe 2.0 (since Viewer 2.0 is closed source), its first version to be exact, and it does not run with the Beta version of the SL viewer 2.0. Well, it does run, but some XML files must be missing which prevent me from logging on using Beta 2.0. So I can't say that RLV 2.0 works with Viewer 2.0 yet. It works with Snowglobe 2.0 and that's already it.

All this to say that I am not quitting, nor stopping developing on the RLV, but I wanted to avoid conjectures until I had something solid to present. Of course I can't provide any ETA yet, it could be weeks before I can publish an acceptable RLV 2.0. And even then, it would certainly still contain bugs and oversights that would have to be fixed over time.

Please bear in mind, though, that the two projects (1.23 and 2.0) are so radically different that adding a feature to one does not mean it can be added to the other easily. 90% of the time it can't be ported without being entirely recoded. So unless it is small and easy enough, I am not going to add any feature to RLV 1.23 anymore. It is not the time to add features anyway, it is the time to make the damn thing cross the gap and keep living on. Because eventually SL 2.0 will become mandatory and 1.23 will stop working. Better safe than sorry.

Marine

Friday, February 26, 2010

The new name of the RLV (yes, really !)

Hi there,

Ok so it is done, settled, taped, fastened, tightened, locked, double-locked, welded, and I even added a drop of glue just to be sure it wouldn't budge anymore.

The new name for the fomer Restrained Life Viewer is... Tadaa !

Restrained Love Viewer !

I actually like this name better than any other one, and many people have suggested it yesterday. It delivers a very positive message, even, and despite still having a fetish flavor, it can be used in mainstream without much afterthought. And it's cute ! And more importantly, I know first-hand that the Legal department of Linden Lab is 100% okay with it. Finally !

Now we can start working at updating everything that needs updating, but before let me just explain a few things.

Firstly, "Living" was too "confusingly similar" to "Life", according to LL's words, so keeping it was bound to raise issues. This was not a legal one though. I would not have been sued for making a viewer that used a forbidden word or a similar one. It was barely a trademark issue actually. No, it was much simpler than this : LL does not want to give the possibility to any viewer to pretend to be official in any way, direct or implied, and that requires to forbid all the names that could lead the new users into believing a viewer has been made by LL. I can understand that. I don't approve, nobody in their right mind would have confused "Restrained Living" or even "Restrained Life" with "Second Life", but I understand. The policy is heavy handed and poorly worded, but it is their platform, and they reserve themselves the right to accept who they want on their grid according to their own terms.

Secondly, mark my words here, Linden Lab does not dislike me or the RLV at all, nor the BDSM crowd in general. They know we are responsible people, and that we share their interest in making this virtual world a better place. The RLV is one example of this interest, there are many others, and they know it. Their Legal department is not populated with top executives who have life-or-death power upon us Residents, but with people who try to edict rules to protect themselves when it comes to providing us powerful tools to work along with them. This is very much like handing a gun to someone hoping you will have your back covered. The last thing you want is to have the weapon pointed at you ! Granted, this was not done in the best way, nor at the right time (it should have been done the day the viewer went open-source, rather), and it seems the policy will be reworded in the next few days anyway. This double name change only made me waste a few hours and bounce up and down a little, but that's as far as the damage went. No weasel has been hurt during the take.

Thirdly, I would like to publicly thank Soft Linden for his patience and help through this. Without his help, I would have released a "Restrained Living Viewer" and it would have been banned from the grid. Thanks to him, I am sure it is not going to happen. Better yet, Soft offers to rename the groups that have "Restrained Life" in their name to "Restrained Love", rather than letting the group owners create new groups and do all the work that implies themselves ! For the trouble, y'know. That's Soft. Thank you Soft.

Fourthly, the amount of support I got from everyone was simply amazing. I cannot count the number of kind messages I received during the last few days, and this is very humbling... Thank you all !

It's ironic, when you think about it. This is "just" a name change, and in this case "just" two letters. That's all. On a project that everybody refers to by its acronym anyway. That's a lot of noise for not much, and I apologize for that.

Have fun and thank you again !

Marine

Thursday, February 25, 2010

New name ? Not so fast.

Argh. Now I'm going to really blow a gasket. I've been told that "Restrained Living Viewer" INFRINGES Linden Lab's policy about third party viewers. No more info for now. Just that it is not going to be named that way for the moment. I know I have been blogging that it was settled a few hours ago, and now I am forced back to square one. Just please hold on before changing your scripts or whatever, the new name of the RLV is NOT chosen yet. Again.

Sorry about that.

RestrainedLife changes name (final)

Hello again,

After much discussion with many people, I have found out that most of the suggestions for the new name of the RLV tended to converge independently towards "Restrained Living Viewer". I kinda like this name, even though I originally wanted to take make it less fetishy... But one killer argument is that the viewer should be as easy to find (on Google or elsewhere) with its new name than with its original one. "Red Light" would not lead you anywhere near the RLV unfortunately. Another killer argument is that "Red Light" is actually the name of an adult-oriented 3D platform that is somewhat a competitor to Second Life. No less ! Proves that the name was not so bad, but someone had the same idea first.

So it is settled now, after much thought, decision and indecision... to Restrained Living Viewer. Not "Red Light Viewer" as I initially planned, but that name did not have much meaning, it was like a placeholder. "Restrained Living Viewer" has much more substance to it, is very close to the original name, and keeps the two most important words of the three : "Restrained" and "Viewer". Apologies to those who hoped the new name would be less fetishy, I really tried as hard as I could, but hey, after all it is not that adult-oriented, is it ?

In a nutshell, here is a recap of the most important reasons why I'm choosing this name among the others :
- It abbreviates to "RLV"
- It is very close to the original name, so it won't be a huge change in the mind of the users
- Losing "Restrained" would lose many search results in Google or other search engines (including within SL), and that is one of the best argument to keeping it
- It is more positive than "Restrained Life", which has a sense of coercion that "Restrained Living" does not have (the latter sounds more like a choice of life rather than an imposition). Yes I know this is subtle, but it counts

Ok so now that this is settled, I can start working at changing the name everywhere I can. Code, manuals, API, scripts... it will take a while before everything is clean again, but you won't notice most of the changes anyway. And I will not rush, Linden Lab is giving us 3 months to make the move. So scripters do not need to rush either. Let's all do this smoothly and nobody will get hurt.

What you will notice is a new command called @versionnew that will return "RestrainedLiving viewer v1.23.0 (SL 1.23.5)", exactly like @version which will remain unchanged. Note that "RestrainedLiving" will be one word, without a space. @versionnum will remain unchanged as well, of course.

I want to thank all of you who have helped me with the choice of the new name, and for your support through your kind messages, notecards, blog posts... I really, really appreciate your concern.

Love you all,
Marine

Wednesday, February 24, 2010

RestrainedLife changes name

Hello all,

Today Linden Lab has decided to publish their new Third Party Viewer policy that you can read here

To begin with, this policy is unacceptable. A Third Party Viewer Developer (with a big "D" !) must NOT be held responsible for whatever use their users do with their work. It makes no sense, is not viable in court, and nobody in their right mind would even think of imposing this. As soon as you download an application, as a user you are entirely responsible for what you do with it. You are responsible for what transits through your wifi router, too. And you are responsible for your driving style when you buy a car. I could go on and on. I am NOT responsible for what you do with the RLV, guys, and never will.

Let me emphasize the one point that makes this change necessary :

# Your Third-Party Viewer name must not be confusingly similar to or use any part of a Linden Lab trademark, including “Second,” “Life,” “SL,” or “Linden.” For example:

1. You must not have a Third-Party Viewer name that is “________ Life” where “________” is a term or series of terms.


That's right, Linden Lab forbids us from using "Life" in the name of any Third Party Viewer from now on. Therefore "RestrainedLife" must be renamed or die. And it won't die.

First of all, let me just say that I am personally offended. No, disgusted. No, mortified. Well I feel anything you can think about except satisfied with it. I'm appalled that they dare stabbing their most faithful supporters (the Developers) in the back like this, to protect themselves from a handful of griefers. They are openly admitting that they have no weapon to counteract them, or worse, that we (their supporters) are in their way in this stupid arms race and must get ridden of. This viewer has been around for 2 years and a half now, and this policy is only one day old, but who am I to believe they'd have respect for what is already in place when making a change to their platform. This new policy is hurting every legit third party viewer, while not doing harm to any of the custom and privately modified griefer ones.

On SLU and other forums, some developers are even saying they are going to quit, being so disgusted by that new policy. Let me just rephrase what Desmond Shang said to one of them : "Give it a night's sleep, don't give up now, don't take any rash decision before waiting a day or two, since this policy is likely to change again soon anyway". Best advice that could be given to someone whose 2 years and a half work has been thrown down the toilet in a day. Because I am not the only one in this case, and I am not quitting. But it sure will be a hell of a task to rename the RLV, considering how broadly that name has spread now. The damage would have been nil had this policy been released the day the SL viewer became open-source, in January 2007 ! We are February 2010 now ! Think of how implanted the older viewers are now !

Let me just remind one thing to Linden Lab (and I know some of their employees are reading this blog) : We, as the Third Party Viewer Developers, with all the capitals at the right places, are adding value to your platform. We are working our asses off to make your own project better ! Most of us are not paid for this, and do this as a hobby, albeit in a very dedicated and consistent way. In my own case, yes I do know that the RLV does increase sales in-world, and not only mine. Simply because it makes your platform more attractive ! I have been told countless times that the RLV was the reason why some users signed up in the first place ! And other viewers are having the same effect ! And this is how you thank us ?

Having said this, yes RestrainedLife was bound to change its name eventually, this was in the plans. Having grown from a marginal enhancement to scripts in-world to a full-fledged LSL<->Viewer API, and having moved from being used by a handful of hardcore BDSM practitioners to a significant amount of the SL population, many of which having nothing to do with us fetish players, "Restrained" is a word that was bound to be replaced with something more vanilla. Yes, I wanted to keep "Life" in the name, now I can't anymore, but that doesn't matter.

Which brings me to the real relevant part of this post, after venting a little. The new name. The consequences of changing the name are tremendous, considering the number of scripts in-world that use the name "RestrainedLife" to refer to this viewer. Fortunately, "RestrainedLife" is a bit long to write, so many people prefer using the acronym "RLV", since it is a buzzword everybody knows. Which is why, in an attempt to control some of the damage at least, the new name must still abbreviate to "RLV". Ok I've kept you hanging on long enough, here is the new name...

"Restrained Life Viewer" hereby becomes "Red Light Viewer"


Why this name ? This is not a knee-jerk reaction, I have given it a lot of thought, and actually "Red Light" makes sense for many reasons.

It is usually associated with shady life, where prostitutes put on the red light at their windows to indicate their are available to new clients. There is even a song, sang by Police, which is a group I used to listen to a lot when I was a child. "Rox-ane... You don't have to put on the red light...". But I digress.

A red light is also something you can visualize easily, as opposed to a "restrained life" which is an abstract concept. And red is somewhat associated with forbidden, temptation, and punishment. And this is also my favorite color, so there.


It also has its downsides, unfortunately.

For starters it still sticks to the area of adult play. But how to get rid of that adult aftertaste when most of the features of the RLV are about restricting the user from doing this or that ? It is quite singular in that respect, as it is meant to be used by a quite singular kind of people. And if any viewer connecting to SecondLife must be associated with adult activities, this is this one.

Secondly it is, well, red. And one of its implementations is now part of the Emerald Viewer, which is, well, green. Uh-huh. Right. They will forgive me this I think.

Thirdly this new name has less ties to what the viewer actually does than the original one. This is a direct consequence of me wanting to dissociate it from BDSM play (while still staying adult), rather than because of the new policy.


So let's keep calling it "the RLV". No matter what "RLV" actually stands for, be it "RestrainedLife Viewer", or "Red Light Viewer", or "Really Lame Viewer"... all that matter is what it does, and this does not change one bit.

I'm only asking the scripters who use it to look into their scripts and documentation, and to either replace "RestrainedLife" with "Red Light", or just to mention that the viewer has changed name and that all reference to "RestrainedLife" now means "Red Light", or whatever you want to do as long as it is clear what viewer you are talking about. This may be a lot of work for some. It certainly will be a lot of work for me, and will take place in the weeks to come.


Oh of course, this is still subject to change. I have not started anything yet, but as of today, "Red Light Viewer" really grows in me, it is a name that sticks, and I cannot think of anything better yet.

Marine

Saturday, January 23, 2010

RR update to 1.20 is now live

Hello again,

Well as promised, the latest version for the RealRestraint products is available ! I won't repeat what the changes are here, the previous post explains it all. But it is a major update, with lots of changes !

Have fun,
Marine

Thursday, January 21, 2010

RR version 1.20 coming soon !

Hello there,

This is just a small post to keep you updated with what I am doing at the moment. I have been working on my restraints, refactoring code, merging scripts and adding features, all in the name of improving user-friendliness and script load, which results in the soon-to-come version 1.20 of the Lockable system !

So what's in there ? Here is a glance, but remember that I am still working on it so there is no ETA yet, and I cannot guarantee that this list will not change (but it's pretty much stable now).


1. Lockable goes Mono. Not a big deal ? Well it was a necessary step in order to do all the rest, and the 1.17 and earlier versions are in LSL. This means less memory available so I squeezed the existing code as much as I could, hence more scripts to do complex tasks, hence more memory footprint for the sim. And guess what ? Linden Lab is going to set script limits on objects and attachments (memory and/or sim usage) at some point in 2010. So although I have delayed switching to Mono as much as I could, because of that infamous "freeze the whole sim when rezzing a Mono scripted object" bug, it is now time for me to take the step as well. You'll see, the features that this switch allows are worth it by far.

2a. The "Long time", "Gender" and "Alarm" plugins are now merged back into the main script (Lockable), allowing for 3 less plugins on the Plugins Browser. Their menus can be found on the new "Tools", "Special" and "Timer" pages of Lockable.


2b. The Lockable_Check_RL, NoDetach and Lockable_Shortcut scripts are now merged into Lockable too, allowing for 3 less scripts in the restraint again (so 6 less scripts in total, making it much easier on the sim).

3. More information on the Lockable menus : which page we are on, which pose the captive is locked in, whether the timers are hidden or shown, whether the captive is Blocked/Mouselooked.



4. More options for timers, coming from the former "Long time" plugin, including a "+10 mn"option for more precise control.


5. The ability to save the current state of the restraint (only when unlocked), specifically best time, best escape time, gender, visibility of timers etc. What's best is that even the older versions of Lockable will have their data saved for later, during the update ! So you won't lose your records by updating anymore.


6. Add support for 2 more locks, if a future restraint requires it. I have no plan to add more poses to existing restraints as of yet, but at least 1.20 will allow it if needed.

7. Favorites on the Plugins Browser. Now when you select the same plugin twice in a row from the Plugins Browser (not through "Last Plug"), it will be added to the list of favorites that shows on every page. Since there are at most 3 favorites, there are now only 6 plugins shown on each page, but it is an acceptable tradeoff since 3 plugins have disappeared now anyway. Oh and favorites are separated for the wearer who has no key to their restraint, from everyone else. Exactly like the "Last Plug" button on the Lockable main menu.


8. Ability to set Lockable to "silent" or "verbose". When "silent", everything Lockable says will be said in IM instead of chat, including keys, locks etc. This does not apply to plugins directly, but they are notified of the change.

9. When recovering tries, the message is said to the wearer only. This was seen as "green spam" by people, and didn't really make sense since the struggling was private anyway.

10. RealRestraint_Base will not Block the captive by default in any pose now. This was too confusing for the user, and didn't make it easy to resize the restraint, especially on the Shibari Ropes.

11. When clicking on Autoref and sitting, now the pose will be stopped. That way the captive won't have to unsit and sit again to keep the original pose of the furniture running.

12. Keep running in No-Script areas (main item, secondary items, HUD). It was not done before for simple memory usage reasons, but since Lockable has switched to Mono, this is not a problem anymore.

13. The delay for the main menu goes from 1 minute to 5 minutes.

14. Various bugfixes and oversights :
- "Cmd:L0" to "Cmd:L9" link messages are now supported (again) when received from scripts. They were removed for memory reasons, years ago, and never put back.
- No "Take Keys" link message was sent from Lockable when the wearer locks themselves and the keyholder is someone else.
- The Give Keys plugin does not try to reopen the menu anymore after giving the keys to someone else (it resulted in an "unauthorized access" message anyway).
- The Spy plugin was showing "your keyholder is online/offline" repeatedly when using a third party plugin that triggered dataserver events.
- The Spy plugin crashed. Badly. Repeatedly. And for no reason. And I still don't know why, but switching it to Mono should do the trick. I'll keep an eye on this bug though.
- The Leash plugin's "Anchor" feature was not working when avatar A anchored B to C, despite the prerelease tests. In fact I had tested it, observed it working, then changed a small thing in the script. And didn't retest. Bzzt. Same player shoot again.

15. When locking a captive, the higher the pose in the menu (from 1 to 6 for now), the stronger the restraint becomes, and more difficult to struggle out from.

Whew ! That's about it. And don't worry, the menus you are used to are mostly unchanged. I have done my best to keep the buttons at the same place, keeping them predictable, and the workflow stays the same. You won't have to re-learn everything, far from it. The biggest change you'll see is that "Block" and "Mouselook" are now in the "Special..." menu, instead of the "More..." menu, and that there are more menus, obviously. And less clicks to do the usual tasks like setting and hiding timers or choosing your favorite plugin, which is a plus. And all the scripts that have been merged still send their Link Messages the same way as before, so third party plugins won't see the difference.

Have fun !
Marine

Edit : Added point 15, and the Lockable menu actually expires after 5 minutes, not 3