09-13-2006 11:17
I've been contemplating this one for a while, if you're not familiar with a formal development process it may be a bit over your head.

A common problem for content creators in SL is that a lot of work is lost, especially when there are problems with the content server (not infrequent these days).

What I would really like to see, especially for scripts, is some sort of minimal (automatic) version control. The options right now are to:

1) Edit scripts/notes inside other objects in SL, which gives you immediate feedback the script is working
OR
2) Edit scripts/notes in your inventory, which requires you copy them over to your object every time for testing

Option #2 is extremely tedious and error prone and I consider option #1 the only real option. The problem with this is you can loose (or simply loose track of work) done, for example:

1) You're working on an object, or making a quick change to an object in-world and you forget to take the most recent version into your inventory. (Which btw is also annoying, because you can "take copy", but then you have to make sure you put it in the folder it belongs in, or "take" the actual object and then set it back repositioning it to where it was before.)
In this case, the next time you go to make improvements, you may not realize you're not working with the most recent version of the script, which may still have the bug you just fixed.

2) You have a no-copy version of an object you're working with another builder on. You're used to working with the script in the object, so unless you re-train yourself to explicitly make copies, you loose lots of work in the next sim crash/rollback

I consider myself pretty organized, but I can't tell you how much additional/lost/wasted effort there has been because of these types of things. Talking to others, this is a pretty widespread problem. There have been a number of times I've been brought to tears an seriously considered quitting SL until these things have been worked out. I would bet a number of people have done just that and even more will never invest the time to build in SL because of the stories they've heard.

So tears aside, hoping for the best, I'd like to see some tie to each script/object/note back into the inventory. Each time I update a script or a note inside some object outside my inventory, it should automatically show up as a subversion to my script/object/note in inventory.

This way, I wont have to constantly make sure my inventory is up-to-date with objects in-world and I wont loose work in no-copy objects I'm collaborating with people on.

You could imagine taking this a few steps further and _really_ accelerating the the speed at which things are developed and the ability for people with different skill sets to collaborate on projects. But, I and just about every other content creator would be extremely grateful if LL would remove the basic tedium and risk of loosing work with some simple versioning in place.

--

Some ideas for possible future directions for versioning:

1) Automatically update all instances of the script in-world to the newest version
* for your objects
* for sold object, I could imagine a mechanism for the owner of the object to "subscribe" to the latest (tagged?) stable version, or explicitly requesting an updated version for their broken object
- I realize this can be scripted, at least for scripts, but notes, and the objects themselves could be automatically updated; especially when the SL updates break an object that's already been sold to numerous people. The problems cause a) people not to buy as much stuff OR b) content creators to spend a lot of time supporting broken stuff (often not fun, and not worth what the object was sold for) rather than creating new stuff
It's also something that can be done poorly by a lot of people, or done once well by LL. There is also the problem of tracking UUIDs which LL should be able to do more efficiently at a lower level.

2) Group collaboration could be better facilitated as in the example of the no-copy object but also in other cases but also by allowing people to subscribe to script/object libraries and always have a reference to an up-to-date version. However, implementing some sort of support for object/script libraries would probably be more valuable as a first step.

3) Help in creating more value for work done by scripters/builders, by enabling value chains to form. Right now, it's especially difficult to capture any of the value from script libraries for use by other scripters, so people are currently either repeatedly re-inventing the wheel, or releasing it for free. This probably doesn't seem like an obviously bad thing to people with little or no business sense, but any economist would tell you the pace of innovation and value creation would be dramatically higher if such a system were in place.

Thanks,
-Heather Goodliffe