Thursday, July 21, 2011

RLV to become really open

Hi,

A big change is occurring on the RLV side of life. From the beginning I have been holding a tight control over it (how many times did I hear "too tight" !), it was painful and frustrating for some but necessary for the project to succeed.

Firstly because when it started by the end of 2007, third party viewers were still a new thing in SL and users needed to be reassured about the liability of the makers and maintainers of these viewers. We couldn't allow a password-stealing function hidden under some nice feature. I wanted to enhance the experience for the fetish community so I needed to make my own viewer, and I needed it accepted by said community. I committed my name to it, since I was already famous at that time. It was a successful move and the "Restrained Love Viewer", or "RLV", was quickly born and adopted. Note that at the time, it was still named "Restrained Life Viewer". It changed name only much later.

Over the years, suggestions came and were discussed (in private, mostly), features were added, but always with me staying in control of the project. Both because I was developing it and because I needed to make sure it stayed consistent, secure and backward compatible.

This is why the RLV is some kind of UFO in the world of third party viewers. While other third party viewers strive to give more power to the user, the RLV strives to give more power to scripts. Generally, commercial scripts. In other words, the RLV is a platform, a middleware between the user and the scripts included into the objects they would use daily. It was a challenge to build such a platform and the trust with both the users and the content creators. You don't risk your business lightly on some kind of new technology without being sure that it is there to stay. But it is a challenge that I took and won. The RLV is a success.

Nowadays, the RLV is mature. It is widely adopted by users and content creators, even outside the fetish community. Its wide exposure brings a lot of feedback, suggestions and bug reports, that I have to handle myself in my free time. And the more feedback the more features, the more features the more work for me.

Moreover, I had considered approaching Linden Lab with the idea of integrating a subset of the RLV inside their original viewer, in the past. For example the shared Windlight settings, the shared folders and so on. Things that are outside kink but yet very useful to a broad panel of users. Bots are made that use the RLV to let customers see demonstrations of the outfits they consider buying, for example. Combat sims use a number of RLV commands to ensure fairness during fights. Disabled people are helped by others when it comes to moving, teleporting, wearing outfits etc, all this thanks to their RLV. There are dozens of examples like that. But integrating the RLV into the SL viewer was never considered by LL (they have enough on their plate as it is), so my implementation of the RLV stayed a little like an outsider. The specification, however, was more and more adopted thanks to another viewer that was steadily seducing more and more users : Firestorm. It is to the point that half SL uses it now (and counting), so instead of maintaining the RLV for LL, why not do it for Firestorm ?

Now that the RLV specification is mature (as in "stable and usable", not "complete"), there is less momentum to add new features. There is more code, more testing, overall more work involved when I add something now than when I did back in 2007. And there are more and more pressing demands from other people to open the specification, in other words to give more power to discussion instead of letting me be a "bottleneck" in the process. I want to be part of the solution, not part of the problem.

Some of you might be aware of an effort that was undertaken months ago to make a group in order, a "think tank", to discuss of the directions where the RLV should be headed to. The RLV belongs to the community and not to me. It is my gift to the community after all, I am the guardian of it, but not its owner. My role is to ensure that any new feature will not break older ones, nor existing content in SL. The RLV is a platform for business, it is capital that the content creators know that their platform of choice won't bite them in the butt later and jeopardize their business.

However, this group is mainly Firestorm-centered. The maths are simple : the user base of Firestorm is multiple times bigger than that of any other third party viewer, so whatever feature they come up with becomes de facto standard when it's released. And that group is really pressing to adding new features to the RLV part of Firestorm.

So after giving it much thought, I have decided that it would be beneficial to everyone, especially content creators, to bring the specification to a new level of audience and reactivity.

This is why I am joining their team as one of the two RLV developers, the other being Kitty Barnett (whose own implementation is called RLVa, for "alternate", and was meant to be a testing grounds for new features before discussing with me to add them to the spec, precisely). And be part of that group as well, of course, for I am the most qualified to determine whether such and such change is beneficial to the spec, the most knowledgeable about the many pitfalls to avoid, and am the original author of the specification and first implementation.


So what does it mean in practice ?

I will keep developing and maintaining my own RLV on the side, as I always have. It has many features that are unique to it and I don't want to lose them. Moreso, other third party viewers use my code directly and I don't want to let them down. I also want to keep my testing grounds for new features (which is what my RLV has always been), so nothing changes there. However both my implementation of the RLV spec and Kitty's need to be merged into one, and that's not going to be an easy task. There is a chance that I drop my code completely and only use hers, since it is already in Firestorm, we'll see. My code is older and grew along with the specification, while hers is younger and was done when the specification was already mature. Both our codes are very different, mine is rather simple and to-the-point, while hers is completely object-oriented hence modular. But also much more convoluted.

On a side note, Kitty hasn't had the most enjoyable role until now. A different implementation implies different bugs, with users screaming at her because it "works in my viewer and not in hers". And she was always bound to wait for me to add new features to the spec. This was not a sane situation for her. Now we are going to work together instead of doing the same thing in two different ways each one on our side.

I am also coming into that group (again) with my own guidelines. There are three golden rules for the RLV spec, that I've been following to the letter so far :

1. Separation : A RLV shall not do what scripts can do. Otherwise it would stop being a platform and would become a competitor to the very projects it is supposed to support.

2. Compatibility : A RLV shall not break content. That means we must assume that each existing command is already widely used across SL, and that changing it will upset a lot of people. Likewise, a new command shall not contradict an existing one.

3. Security : A RLV shall never jeopardize the user's assets (be it inventory items, objects in-world, money or personal information).

These rules are the reason for its success. I will keep following them when discussing new features, and will systematically vote against a change that violates one of those rules. They are the reason why I have kept doing this alone until now, I trust the people in the group are adult and responsible enough to understand their value and subscribe to them. If they don't, I have nothing to do with that group.

The way I see it, the group is like a buffer between the community's suggestions and the inclusion of some of them in future versions of the spec. We (that means me included) will debate over interesting new features to add to the specification and decide whether to really include them or not, by voting. I am not going to be their coding slave though, nor is Kitty. There is no hierarchy involved. All equal, no leader (although the workload of actually coding the thing rests on our shoulders). Besides not all the members of the group are involved into Firestorm, it is a group of content creators, and of course not all Firestorm is involved into that group either. Lastly, the group should be open for joining, lest be regarded as some kind of "RLV elite group", which would be very much anti-community. The last thing I want is to see the RLV spec be used as a weapon by a select few content creators against the rest of the crowd, and I am here to ensure it won't happen.

But I want to make it clear that I will not tolerate a battle of egos. I come there to get things done. Petty politics are for petty people. The last (and only) meeting I had with this group months ago was less than pleasant. I got myself crowded and pressed with demands from all sides. If it happens again, I won't stay long.

Likewise, I am not being "assimilated" (eww). I am not committing myself to Firestorm, nor dropping anything else that I was doing. The way I am joining may not be the most ideal for me (those who know the story behind it understand why), but it is the most logical. It is capital that the RLV stays under the control of responsible people, including the original author of it (me), but one person cannot take the load of all the suggestions coming from all the Firestorm users. It's just too much.


I'll keep you posted about the developments.
Marine