Showing posts with label second life. Show all posts
Showing posts with label second life. Show all posts

Sunday, May 29, 2011

on accessing services from within second life

so a few moments ago, @ZauberExonar asked on twitter if anyone was aware of a JSON parser in the Linden Scripting Language (LSL). people unfamiliar with LSL or Second Life(tm) may want to skip this blog posting. in typical "software architect" fashion, i'm answering his question with several paragraphs of "why JSON and LSL don't mix" (and what you can do about it.)

a very brief intro to JSON

JSON, as we all know, is a transfer syntax that encodes messages in a way that looks remarkably like a JavaScript / ECMAScript object declaration. So... if you execute this JavaScript:

var foo = {   success: false,   error: "insufficient cheese error: recommend rebooting universe" };
console.log( JSON.stringify( foo ) );

you would get a JSON blob that looks something like this:

{"success":false,"error":"insufficient cheese error: recommend rebooting universe"}
so far, so good, right? you start with a JavaScript object and you convert it into a string that represents the object using a familiar syntax. it's now ready to send over the network. the receiver can execute this code to deserialize the string version of the message into a real live object:

var bar = JSON.parse( "{\"success\":false,\"error\":\"insufficient cheese error: recommend rebooting universe\"}" );

and now the receiver has an object it can manipulate.

the cool thing about JSON as a transfer syntax is messages are serialized using encoding rules that are way easy to process in JavaScript (the programming language of the web.) so it's easy to understand why web-devs love the heck out of JSON.

XML, in comparison, is seemingly bloated. XML allows you to define your own tags, each with semantics specific to the message. this can be a good thing in some situations, but you have to add the smarts to your JavaScript application to grab specific bits of data out of the XML and construct objects to contain the data.

enter the virtual world

but if we want to consume a JSON service in the virtual world, things get a little complicated. in Second Life, the programming language of choice is LSL (Linden Scripting Language.) a lot of people love to hate on LSL. i'm not going to do that here. but i will say this: parsing JSON or XML in LSL is a pain in the ass.

perhaps the most irritating aspect of LSL in this regard is it's lack of associative arrays. whether you call them maps, dictionaries, objects or associative arrays, they all let you use a string as a key into a collection of items.

because there's no associative array in LSL, you can't pull off the JavaScript trick of creating a new object that's essentially identical to the JSON. no, you have to map the contents of the JSON string into a list (which is like an array) or global variables.

JSON lovers aren't alone... XML partisans have discovered they're in the same boat: you have to parse the message and reason about the semantics of each field while constructing a list or setting global variables.

easy parsing?

and another aspect of JSON and XML parsing in LSL that's sub-optimal: you have to write LSL to look at each character in the message string.

okay, this is not precisely true. if your message does not include escaped quotes or curly braces, you can use llParseString2List() to build a list that's MUCH easier to parse. the down side of this approach is it's not entirely easy to handle curly braces inside strings and honestly, the code to implement it frequently looks bizarre.

so what i've started to do is to use a LSL-friendly format i'm calling the "DSD Text Transfer Syntax." experienced readers will recognize DSD as the abstract type system i routinely threatened the VWRAP group with. DSD text looks like this:

:v:1
appkey:u:77c3dd7c-4639-4681-aa52-a7dd35e96fd8
:{:
success:0:
error:s:insufficient%20cheese%20error%3A%20reboot%20universe
errno:i:23
desc:l:http%3A//example.com/error_descriptions/cheese.html
:}:

messages are a collection of individual lines (separated by either a CR or a CRLF.) each line contains three fields separated by colon characters. the first field is a "name" field; the second is a "type tag" while the third is the data in question. note that not all lines have a name, and not all lines have a data field. also note that colon characters are verboten in the data field, so we encode strings and URIs that may contain them.

people familiar with the LLSD binary encoding will likely recognize the tag characters, they're directly ripped off from that spec. (i also added a version tag so parsers will be able to know when they receive a message they may have problems interpreting.)

so the way you parse this in LSL is to split a message into lines like so:

// assume the string 'message' contains the complete message text
list lines = llParseString2List( message, ["\n", "\r", "\n\r"], [] );
integer lineCount = llGetListLength( lines );
integer i;
for( i = 0; i < lineCount; i++ ) {
string currentLine = llList2String( lines, i );
list fields = llParseString2List( currentLine, [":"], [] );
string name = llList2String( fields, 0 );
string key = llList2String( fields, 1 );
string data = llList2String( fields, 2 );

// now process the name-key-data triple
}

what you do when you process the name, key and data values depends on your app. i find i'm frequently either stuffing them into global variables or constructing new lists with the values. to parse the message above, we do something like this:

// parse location info message. generates a list with the following members:
// 0 - integer - success (1 for success, 0 for failure)
// 1 - integer - errno (0 for success)
// 2 - string - error description ("" if call was successful )
// 3 - string - URL for more information ("" if call was successful)
// 4 - string - region name
// 5 - float - x location in region
// 6 - float - y location in region
// 7 - string - comment text

list parseLocationInfoMessage( message ) {
integer success = TRUE;
integer errno = 0;
string error = "";
string desc = "";

integer in_map = FALSE;
integer version;

string region = "";
float x = 0.0;
float y = 0.0;
string comment = "";

list lines = llParseString2List( message, ["\n", "\r", "\n\r"], [] );
integer lineCount = llGetListLength( lines );
integer i;

for( i = 0; i < lineCount; i++ ) {
string currentLine = llList2String( lines, i );
list fields = llParseString2List( currentLine, [":"], [] );
string name = llList2String( fields, 0 );
string key = llList2String( fields, 1 );
string data = llList2String( fields, 2 );

// now process the name-key-data triple

if( 'v' == key ) {
version = (integer) data;
if( 1 != version ) {
success = FALSE;
errno = -1;
error = "invalid message version";
break;
}
} else if( '{' == key ) {
in_map = TRUE;
} else if( '}' == key ) {
in_map = FALSE;
} else {
if( FALSE == in_map ) {
success = FALSE;
errno = -2;
error = "parsing error";
break;
}

if( 'success' == name ) {
if( '1' == key ) {
success = TRUE;
} else {
success = FALSE;
}
} else if( 'errno' == name ) {
errno = (integer) data;
} else if( 'error' == name ) {
error = llUnescapeURL( data );
} else if( 'desc' == name ) {
desc = llUnescapeURL( data );
} else if( 'region' == name ) {
region = llUnescapeURL( data );
} else if( 'x' == name ) {
x = (integer) data;
} else if( 'y' == name ) {
y = (integer) data;
} else if( 'comment' == name ) {
comment = llUnescapeURL( data );
}
}
}

return( [ success, errno, error, desc, region, x, y, comment ] );
}

some might argue this is no less complex than XML or JSON parsing in LSL, but for my money, it seems a little more straight-forward.

making services give you DSD Text

ideally you're in a position to control both the server and the client. if you are, then your server code gets to decide what type of encoding you send back to the client. slatebureau.com uses the same API endpoints for requests, irrespective of where they come from. to determine what encoding to use, it looks for the Accept:, Content-Type: and S-SecondLife-Shard: headers in the request and uses this algorithm.

  1. if an Accept: header is present, and you can generate the mime type the client is requesting, use it. if you can't generate the encoding requested, send a 406 status code.

    in other words, if you ask for a 'application/json' or 'application/dsd+json', i'm going to give you JSON. if you ask for 'text/plain' or 'application/dsd+text', i'm going to give you the text format described here.

  2. if there's no Accept: header but there is a Content-Type: header present in the request, send the response in the format of the content type. if you can't generate that encoding, don't freak out, continue to step 3.

    so if there was a Content-Type: header in the request and there wasn't an Accept: header, i'm going to try to encode the response using the same type. if your request included a json blob with an 'application/json' Content-Type, i'll try to generate that as a response.

  3. send a DSD-Text formatted response.

so... anyway... i wrote a few DSD parsers in PHP and JavaScript. i'll try to dig them out and post them to github. -cheers!

Wednesday, February 2, 2011

experiments with social media

so i've been curious about second life people's twitter behavior and thought it might be fun to do a few experiments. no no, not talking about evil torturous experiments on defenseless digital animals. and i'm not scraping my social network, getting ready to sell them out to advertisers. i'm just genuinely curious about people's behavior with respect to tweeting and re-tweeting.

the following tests won't be held up by the APA as exemplars of rigorous experimental design. but i hope they'll satisfy some curiosity. also, i should point out that i'm not hiding my intentions by claiming some great reward or a chance to win a bazillion dollars that aren't there. no. i'm offering a few, inexpensive rewards. i'm also paying things in Linden Dollars (L$'s.) this is the game script for second life; it's a lot easier to pay people directly in-world than to mail out checks or deal with PayPal.

experiment 1 : re-tweet this please

my first experiment was this simple tweet:
social experiment. what happens when i ask people to retweet retweet requests in the guise of a social experiment? - please RT!
so i'm basically just asking people to please re-tweet a message. i'm offering no incentives to do so, only the pure joy of participating in my personal experiment. after about eight hours, only two people had re-tweeted this message.

experiment 2 : minor financial reward for re-tweeting

the second experiment was this tweet:
okay. social media experiment 2 : i'll give 50 lindens (each) to the first 10 people who retweet this message.
so i'm changing things up here and providing an incentive. if you re-tweet that message, i'll give you L$ 50. before you get too excited, you should probably note that 50 lindens equates to something around 20 US cents (or US$ 0.20 .) so it's not a really big reward.

i doubt this will be a great shock, but more people re-tweeted this message; after about 4 hours, about 5 people re-tweeted the message. so, it turns out that, at least in my social network, more people will re-tweet a message if there's a personal reward.

another interesting factoid: there was at least one person who re-tweeted this message who i can't see. i believe this means they're protecting their tweets and i'm not following them. people who want to try to get more "twitter buzz" by offering a reward should probably remind folk that if you can't see them, you can't reward them.

experiment 3 : rewarding someone else (a non-profit)

here's my third tweet:
social experiment: if 10 people retweet this message in the next 4 hours, i'll donate L$500 to Bridges for Women, http://sl8.us/gAPHcs4_E
in this case, i'm telling people they'll get no direct reward, but their actions can help out a non-profit. what i didn't really tell people is i planned to donate L$ 500 to Bridges for Women's Second Life presence whether i got the requisite re-tweets or not; it seems like we would be teasing them if we didn't. Also, L$ 500 is about US $2.00, so it's not like we're talking about a huge pile of cash. Still, L$ 500 could be useful if they wanted to spruce up their second life presence a bit with a few inexpensive knick-knacks.

this tweet proved way more popular than the previous two. it took about 2 hours for me to get 10 re-tweets. it's possible, however, this may be because there are just a lot more of my twitter peeps looking at twitter in the early afternoon (pacific time) than in the morning. or it's just that people are more motivated by altruism. or maybe small linden rewards just don't register with people.

experiment 4 : follow me and re-tweet and i'll give you some lindens

with my fourth tweet, i'm getting back to appealing to people's self interest:
social experiment : L$50 to the next 10 new followers who retweet this message. (follow me, then tweet your #secondlife avatar name)
but we're not talking about a lot of cash; remember, L$50 is about US$ 0.20 (20 cents.) also note that i'm telling people to publicly associate their second life and twitter identities. some people may not want to do that. sounds pretty straight-forward, right? yes and no. remember, this is for NEW followers. existing followers, in the immortal words of willy-wonka, "get nothing."

this experiment was crafted in part to avoid the problem with experiment 2 where you couldn't see (or reward) people who were protecting their tweets. you can setup twitter to send you an email message when someone starts following you (in fact, i think that's the default behavior) so you'll always be able to see new followers.

after about an hour, i had 7 re-tweets (though one was from someone whom i think already followed me.) i'm confident it won't take too long to get the last couple new followers.

experiment 5 : lindens for current followers who recruit new followers

the next tweet tries to overcome this last impediment:
social experiment : L$50 for the first 10 existing followers who convince new people to follow me. get new followers to tweet your name.
like previous tweets, we're not talking about a lot of cash. L$50 is about 20 cents. but i was curious if it would affect the outcome.

i actually want to publish this post before people on the east coast start going to sleep, and i just posted this tweet. i'm going to come back with results later with results.

observations

i should probably lead off by reminding people they can observe some of the results themselves. i don't protect my tweets, so you can click on these links to see the individual tweets. if you're using "new twitter," you should see a list of people who have re-tweeted the tweet in question.
the second observation i made is that i'm capable of producing some really gawd-aweful social experiments. if i tried submitting these experiments and "results" to a peer-reviewed journal, i'm pretty sure they would be rejected. if i tried to submit them as part of a class in social experimental design, i would be happy to get a D.

"real" experiments start with hypotheses; i didn't do this. they then describe what the testing methodology is going to be; i kinda-sorta did this, but in a haphazard way. and they usually describe how the hypothesis will be confirmed or refuted BEFORE conducting the experiment. i totally didn't do this.

so... observation 2: i'm not really doing a good job at being a social scientist here. but honestly, it's okay. these are anecdotal observations and i never claimed to be a trained social scientist. i know little of how sociological / anthropological experiments are constructed; just enough to be confident i'm doing it wrong here.

the third observation: i think twitter is caching the HTML of individual tweet pages. i noticed that if i used the twitter web page to see who's been re-tweeting things, it seemed to change considerably less often than if i used the API.

more important observations

maybe more important are the following observations:
  1. it seems more of my followers are active in the afternoon. yes. this is a completely unscientific statement. i'm conflating time with message content. had i repeated the same message in the morning and afternoon, we could have an "apples to apples" comparison.
  2. my followers seem to be somewhat altruistic. pat yourselves on the back, twitter followers, you seem to be eager to give away my hard-earned lindens to charities. seriously though, it took only a couple minutes to get 5 people re-tweet the message in experiment 3 and we finished the challenge with a couple hours to spare.
  3. larger sums seem more interesting to people than small sums. when i offered L$50 rewards, uptake was a little slow. slower than when i offered to donate L$500 to a charity. so maybe larger sums motivate people more than smaller sums.
  4. different experiments didn't seem to affect each other. after tweeting the L$500 challenge in experiment 3, i waited to see if there would be more interest in experiment 2. i was thinking we might see a couple people looking at the "big tweet" and then notice the others. but no dice.
  5. some of my followers think i'm a rube. perhaps they're not aware of just how high-brow embedding roald dahl references in pseudo-scientific observations is. but at least one follower indicated i was behaving like a dork for running these experiments.
  6. way more of my followers use the #NewTwitter re-tweet feature than copy and paste messages into new tweets. this shouldn't be a shocker, it's a lot easier on the twitter web page to hit the "re-tweet" link than it is to copy or paste. however, other twitter clients make "re-tweeting with comments" much easier. still, it looks like most people chose the easy "single click re-tweeting" route.
applying these observations

let me start this section by saying you're crazy to use these results as justification for any particular action. it would be nice to say "aha! evidence PROVES larger sums lead to more followers in twitter!" but i just don't see that being an interesting or particular defensible statement based on this data. that being said, the anecdotal data collected might be used to inform a more rigorous set of experiments.

but the data, anecdotal such that it is, might suggest a few "truths."
  1. your network may respond better at specific times of the day. i'm going to speculate that for most people, the majority of their human followers are in the same time zone as themselves. tweeting at 3AM is simply going to reach fewer people since fewer people are awake. it might be a cool idea for someone to come up with a tool to see when their twitter followers are most active. actually, i think most twitter analytics packages do this already.
  2. if you're going to give money away, people respond better to larger sums. i speculate this is because "more is always better" when it comes to cash. a more interesting way to spin this is that maybe some people just filter out low value commercial tweets. for instance, if someone told me "i'll give you a US$1 gift certificate for amazon" and i happened to be in the middle of an involved task, i may simply choose to ignore it. but if they said, "retweet this within 5 minutes for a US$500 amazon gift certificate," i would probably drop what i was doing and start retweeting. so i'm hypothesizing the existence of a "value point" for each person. rewards below that point are not worth the effort. i would be very interested to see someone come up with a "real" experiment for how to determine where this value point is for users.
  3. multiple promotions may have a synergistic effect, but i didn't see that here. i'm going to speculate there are a few people out there who even though they're not interested in a particular promotion, after seeing a it, they'll click on a "more info" or "other promotions" button or look at someone's twitter profile. they may find a promotion or tweet that's more in line with their needs or has a better value proposition for them. i guess what i'm saying is, i hypothesize promotions like the experimental tweets i used here get certain people's attention. while you have their attention, it's easy to convince a few of them to look at other promotions. but i think you have a limited window of opportunity when you have their attention. i spread these tweets out over the course of a full day and had pretty poor luck getting cross-pollenization.
so that's it: my deep thoughts about promotions and twitter. please ping me if you wind up doing "real" research in this field, i'd love to hear about it.

update 1

here's a quick update on the last experiment. so far NO ONE has retweeted the last tweet. this could be due to fatigue (seriously, how long can i keep asking my twitter followers to retweet things.) or it could be because it involves recruiting people to do things. the first four experiments required people simply to press a button. but the last experiment required people to go out, find someone to recruit, and get them to do something.

so maybe we can add one more important observation:
  1. you get more responses when tasks are easier to perform. the rewards i'm offering are on the order of L$50 or US$0.20 (not accounting for exchange fees.) maybe it's unreasonable to assume people will (as @shava23 says) "risk reputation for 20 cents." or maybe my followers aren't the recruiting type. or maybe you're not properly motivating existing followers by saying you'll reward new followers. discuss.

Thursday, January 27, 2011

why doesn't the second life viewer use a game controller

i've got a few minutes between meetings this morning, so i thought i would just rant. comments are always welcome, of course, but i doubt i'll say anything radical today.

so this is a topic that's bugged me for at least four or five years: why isn't there better support for game controllers and joysticks in second life?

i know.. i know.. the SL viewer has had support for game controllers since days of yore and i'm just whining to suggest it's less than stellar. and before i sound like a complete ass, let me just say, the people that added joystick and game controller support to the SL viewer are ossm, ossm people who did an ossm, ossm job.

but it always seemed to me that game controllers are "second class citizens" in most of the SL viewer domain. if i had my way, you could fire up the SL viewer, and start interacting with the world via a bluetooth (or USB) game controller and microphone.

even with the current support, you still have to interact with the system by way keyboard and mouse far to often to be able to kick back and have a quality "game controller mostly" experience.

the reason i find the game controller + microphone use case compelling is that it's in-line with user expectations about how a virtual world should operate. (i'm saying that, but i really, honestly have no data to back that up. if someone has data one way or another, i'd love to hear about it.)

i demand freedom from the tyranny of the keyboard! but when you look at the second life web viewer beta site, the video they play while setting things up shows avatars typing away.

i guess my point here is, thought second life started as a virtual world where typing was an integral part of the social experience, voice is overtaking (or has overtaken) keyboard use. optimizing for an experience which supports a more naturalized interaction with virtual environments just seems like a good way to attract more users.

okay. i feel better now for having gotten that out. would love to hear what other people think.


Tuesday, January 11, 2011

a platform for a compelling, immersive 3d virtual world

so Tateru Nino's just penned a nice, short blog post: Linden Lab Can't turn Second Life into an Engaging Digital Experience.

go read it now, i'll wait.

okay. back? great! let me add a few notes.

in Second Life's early days, it was pretty clear Linden thought of it's creation as an online service for the creation, display and sale of 3d content. back then, you heard a lot of people at the lab saying things like "Your World, Your Imagination." i've heard people say uncharitable things about Linden's founder Philip Rosedale, but seriously, whatever his faults, he was VERY good at internalizing and communicating Second Life's fundamental message: "This is YOUR playground, Linden is here to make sure the plumbing works."

throughout the early-mid 2000's, the SL community rambled along, doing cool things, showing them off, building an early community. after the hype cycle started kicking in, corporate america showed up and a few of their denizens thought (and i paraphrase here): "oh hey, check it out. it's like WebEX except i can build 3d doo-dads to demonstrate concepts and since it's a 'game' i can get away with looking like something other than a corporate drone."

as IBM and Cisco and other corporate heavy-weights started looking at SL as a tool for business operations (rather than just marketing,) you started to hear a lot of talk about SL as a "platform." up 'til this time people had used the word "platform" synonymously with "service." but now the big guys wanted to run a server or two behind their firewalls so corporate secrets wouldn't have to leave the corporate intranet. there's absolutely nothing wrong with this concept; but it's not what SL was initially built to do.

a couple "one off" solutions were built for various corporate customers, but their features were never integrated into the main-line SL service offerings. Linden management was caught in a dilemma: their casual consumer customer base was exploding in 2006, but corporate users seemed like a great market. Linden's challenge was how to increase stability and capability for consumer users while adding features for corporate customers.

around 2006 Linden, IBM, Cisco, Intel and a few other corporate heavies started talking about interoperability in virtual worlds. this eventually led to the Virtual World Interoperability Forum. the VWIF was supposed to produce detailed functional descriptions of how virtual worlds work so there was a good chance virtual worlds operated by different companies could talk to each other. the VWIF eventually sputtered, giving rise to the Second-Life focused: Architecture Working Group (AWG), Open Grid Protocol (OGP) and eventually the Virtual Worlds Region Agent Protocol (VWRAP) working group in the IETF.

but please note, when a crowd of network interoperability people use the term "platform," they don't mean the same thing as when second life users (and even most Linden management.) Second Life management had used the term "platform" to mean, "hey, here's a service you can use to do cool stuff." they did not mean "hey, we have a technology platform you can download, extend and deploy."

but throughout the latter 2000's when Linden was working on their "behind the firewall solution" for corporate customers, there was a small kernel of Linden employees that did intend to make a real-life, honest to goodness "technology platform." the idea was to corral linden's server software into an appliance customers could plonk down in the middle of their data center. viola! instant virtual world populated only by corporate users.

for a lot of different reasons, this turned out to be harder than initially suspected. one reason (certainly not the only one) was the difficulty of maintaining two distinct code bases: one for corporate, behind the firewall use and another for the consumer solution. because Second Life was always considered a "service," there were a wide variety of assumptions the code could make about network architecture and peer service availability. and it turns out that some of the assumptions you make for a huge virtual world with 85,000 concurrent users are not the same as the assumptions you make for a couple simuators and a smattering of "behind the firewall" users.

whatever the reasons, the project to convert the Second Life "service" into a behind the firewall "platform" failed. (though it should be noted a lot of very skilled Lindens did a lot of awesome work to shoehorn Second Life into an appliance.)

about the same time Second Life/Enterprise (SL/E) was being discontinued, Linden's official support for an open virtual worlds interoperability protocol evaporated as well. sic transit gloria munde; at least there's still OpenSim.

but what relevance does this have to the modern world?

does it mean there's no market for "behind the firewall" virtual worlds?

does it mean that Second Life as a "platform" is an architectural dead end?

what about content? and the network effect?

let me offer my two cents about these questions.

first off, Second Life is not and nor has it ever been a "technology platform." Second Life is a "service." it was coded by people who made certain assumptions about their environment (like where the asset servers existed, that peer services were "trustworthy" and what features end users demanded.)

so my first assertion is, the failure of Second Life/Enterprise (SL/E) and VWRAP does nothing to refute the existence of a market for a well-developed, well-supported "behind the firewall" virtual world solution. SL/E's failure simply means it's damn hard to cram the Second Life code base into a small number of servers. in fact, it's so hard that the NRE and support costs are waaaay out of line with any income the service could generate.

i also believe that Second Life, as a technology platform, is dead. as a service? sure, it's still cranking; there are a bazillion people (myself included) who log into SL to socialize and play. what's more, i think Linden also thinks SL as a technology platform is dead. recent actions from Linden management make it clear they're putting all their resources into making SL as compelling an online service as possible.

Tateru Nino speculated that a team of crafty engineers could rebuild something like Second Life in about 6 weeks. i'm more inclined to say it would take 18 months before you get something close to SL's performance and concurrency. were i to develop a business plan for a startup doing more or less the same thing Linden's doing, but with a better, cleaner architecture and the ability to deploy as a real technology platform, i would estimate about 15 man years to beta launch. taking a completely arbitrary figure of $200,000 per man year, you wind up with a $3 million price tag.

so this has got to be how the VCs, angels and midnight engineers are looking at it: given Linden's flat subscriber growth, why would someone risk $3x10^6 on a new virtual world platform?

how 'bout something like a "Social Virtual World" that uses identity information from Google, Facebook, LinkedIn, Twitter (or even your own corporate LDAP server) ??? that might be compelling.

or even a "virtual world technology framework" that niche application developers could easily extend. that seems like it would be a good idea.

maybe even a "content framework for 2d and 3d experiences" where you could easily develop some kind of 3d model using blender, maya, etc. and have it automagically uploaded to the cloud where virtual world servers could easily import it. bonus points if you work through the intellectual property issues.

so there are a lot of interesting things a VC or angel could fund and an entrepreneur could build, but rebuilding Second Life? no thanks, i'll pass.

Monday, January 3, 2011

predictions for 2011 : second life, virtual worlds and farmville

offering predictions is en vogue for tech bloggers these days; who am i to buck a trend? my area of interest is the technology and business of virtual worlds in general and second life in particular. so here's what i see when i peer into the crystal ball. let's come back in a year and judge the quality of my predictive powers.

i'm going to start with a few easy predictions. these are not so much predictions as observations of existing trends. in other words, here are some trends that will continue.

drama will continue amongst second life residents. it may sound like i'm saying our resident community as being overly sensitive or dramatic. well, yes, i am. but i don't mean it in a bad way. second life attracts drama for the simple reason that people attract drama. saying that there's drama in virtual worlds is to say that there's a critical mass of people who treat the virtual world as an extension (or alternative) to the "real" world. you don't get a high level of emotional involvement with hotmail or google docs. live journal, twitter and facebook get a little more emotional immersion, but it's nowhere near what you get with virtual worlds.

when done right, virtual worlds saturate the senses and engage the "whole person." where you find people, you find drama. and that's a good thing.

InWorlds, ReactionGrid, SpotOn and OSGrid will continue to lure the "old guard" away. let's face it, linden has ticked off several people in the content creation community. the "old guard" lindens are now mostly all swept away; along with them was lost the engagement with the community and the sense we're all pulling in the same direction. despite his faults, philip rosedale was great at communicating second life's vision and making it's residents feel the love.

later in philip's reign and throughout mark kingdon's tenure, the lab found it difficult to communicate effectively to SL residents. after the lab's "adult supervision" left the building, linden management seemed "spooked" by resident's passion. rod humble, the lab's new leader, has a good pedigree, but it'll take months (if not years) for the lab to rebuild credibility with the resident's they've alienated.

there's still plenty of "old folks" left in second life, but the OpenSim based grids can offer features and pricing you won't find in second life. but... while OpenSim based economies will grow, they will still be dwarfed by second life's "linden ecomony."

now let's talk a little about second life and linden lab. the last year's been pretty chaotic for linden what with lay-offs, project cancellations, direction changes and executive shuffles. my prediction for the lab in 2011 is you won't see as much "weirdness" in the lab as you did in 2010. it'll take a few months (at least) for mr. humble to really start to make changes at the lab. towards the end of the summer of 2011, i predict there'll be a few small hornets' nests kicked over, but nothing like the bizarre events of 2010.

i also predict that mark kingdon's focus on facebook or facebook-style games like farmville will get mild lip-service, but eventually fade away. why? farmville, mafia wars and other "casual games" are the polar opposites of second life. people poke at farmville a couple times a day and get on with their lives. second life users log in and stay for a while. and i think rod humble's background allows him to fully understand this concept.

this is not to say the various social media initiatives the lab has will be completely abandoned, but the AU purchase and subsequent shuttering must have really stung, so if the lab releases something socialesque, i think they'll release something small, well thought out, and supported unanimously by executive management. due to the lab's internal processes, i predict it will be a small project implemented by one engineer and two project / product managers within a 6 month period.

talking about technology, we shouldn't forget the web-based initiatives we saw beta tested this last year. i have a bold prediction: we won't see anything like this (web based viewer) from the lab this year. why? the whole "leveraging external technology" sounds like something that would come out of joe miller's technology integration group. four of the five members of this group left the lab in the last year.

plus, the technology is still a little rough. WebGL is out there slowly chugging along, and at the end of the year, we may see a lot of people with web browsers that can effectively communicate with GPUs. google's chrome viewer with it's v8 javascript engine may be able to keep up with the kind of data throughput numbers you'll need to support, but i still think it'll be a couple years before the browser makers create something that can handle the amount of data a typical second life session throws at a client.

so these are my main predictions. 2011 will be an especially boring year compared to 2010 for second life and linden lab. OpenSim based worlds will continue to gain in popularity and second life will not get turned into farmville.

Tuesday, August 24, 2010

does the linden third party viewer policy sidestep the issue?

the second life community has spent the last week following a reasonably important controversy now referred to as "emeraldgate."

if you're a member of this community, it's hard not to have heard about it. for the benefit of those people who don't follow second life closely, here's a brief backgrounder.

so linden lab has this virtual world called second life(tm). the state of the virtual world is held on servers operated by linden. these server remember things like where people and things are, who owns what, and what direction things are moving, etc. second life users access the virtual world using a "viewer application." the viewer communicates with lindens servers and renders information from them in a nice 3d scene on the users' personal computer.

to spur innovation in virtual worlds, linden open sourced it's viewer software a couple years ago. several teams started adding new features and fixing bugs linden was slow to address. one of the single most popular "third party viewers" was a project called "emerald."

we recently discovered that the emerald viewer has been doing some "bad things." for a couple months people have noticed some weird encrypted data being sent from emerald installations. turns out it's information about the client's PC. granted, the emerald viewer isn't trying to sift through your hard drive trying to find credit card numbers, but the information it leaks (user name and emerald executable location) could help skilled bad guys compromise emerald user's systems.

very recently people discovered a distributed denial of service (DDoS) attack being launched by the emerald viewer. blargh! thousands (if not tens of thousands) of users were unwittingly being co-opted into attack on the rival of one of the emerald developers.

needless to say, a lot of people are beginning to question emerald's ability to manage their developers and produce quality software. twitter and facebook are filled with status updates from users saying they're ditching emerald for linden's official viewer or another third party alternative.

the most recent entity to weigh in on the issue is linden themselves. philip rosedale, linden's CEO published a quick blog post on the issue: Malicious Viewers and Our Third Party Policy. linden is removing the emerald viewer from a directory of third party viewers linden maintains. the "third party viewer directory" is a list of viewer applications (most of which are based on linden's source code) which purport to be essentially well behaved.

emerald's removal and rosedale's blog post were not surprising; the emerald viewer did a couple of bad things they should have known were bad. the lab's actions are hoped to distance the second life service from a few bad developers.

the good news is that some of the old emerald team is reforming and will be trying to build a project where "bad things" like what came to light last week can't happen. we'll see if they can convince their user community and linden of their ability to follow through. the jury's still out on this issue; but it's early in the project cycle so it's anyone's guess how this all resolves itself.

but there is one aspect of this crisis that bugs me: why do we need a third party viewer directory in the first place?

to understand why there's a third party viewer policy and a third party viewer directory, you have to understand a little about the second life virtual world. second life is frequently described as "the 3d web," but there are some notable differences between the web and second life.

first off, second life is not "open" in the broadest sense of the term. the lab has done some wonderful work open sourcing the second life viewer and supporting the ecosystem of third party viewer developers. but the limit of their openness is to release the source of the viewer. this creates the unsatisfactory situation where the protocol used to communicate state of the virtual world is owned by a single entity capable of making unilateral changes.

in the web browser development world, core standards like HTTP, WebSockets and even JavaScript are defined by industry standards coalitions. linden did support the VWRAP effort to develop open standards, but withdrew support for the standard and laid off the staff responsible for it's implementation in the lab.

but maybe one of the most important differences between second life and "the web" is the idea of content. on the 2d web, content is embedded only in the place. it is rare for content to follow a user around from site to site. yet this is the moral equivalent of what's going on in second life when you move your avatar from one location to the next. when you see other web users, it's usually as an image icon right in front of some text. second life users know that their avatars are much richer and more varied. second life users are represented in world as collections of shapes, skeletons, meshes and textures.

and this brings up the next major difference between the virtual world and the web: content protection seems MUCH more important in second life. don't get me wrong, i'm not trying to discount concerns of content thievery on the web. but the web's business model is that content "lives" on a web page and isn't supposed to move. in the virtual world, content creators sell content to individuals with the intent they'll move from place to place.

and it's this expectation of content content control that lies at the heart of the third party viewer policy (and directory.) were second life like the web, content creators would sell content to people and be done with it. but the primary technique for monetizing content on the web is to sell advertising next to it (or sell memberships to content that remove invasive ads.) the web seems to reward content that persists in one location long enough to be indexed by google or microsoft.

tracking down DMCA violations are pretty straight-forward when you can refer to the google cache and the internet archive.

but not so for the virtual world. in second life we rarely extract value by advertising. sure, linden is happy to take a cut when you search, find and buy something from xstreetsl, but the full content is not available on that site for bad guys to purloin.

content creators in second life make their living from selling their goods directly. there's a marketplace here for goods because, quite honestly, the direct cost to users is pretty low. for about the cost of a discount cola from my grocery store, i can purchase a very fashionable outfit for my avatar. for the cost of a latte, i can purchase a complete meeting center to hold virtual meetings with friends or co-workers.

revenue on individual sales are low, but the distribution and copying costs are effectively zero for content creators. the primary costs for second life vendors are non recurring production costs and the cost to maintain a store front. but with xstreetsl offering people a web experience to discover and purchase goods, the "real" costs of doing business in second life boil down to paying yourself for the time you put into building something.

and this is why "less than moral" actors in the virtual world fall to temptation. it's laughably easy to copy someone's work, repackage it as your own, and sell a few on xtreetsl before anyone notices what you're doing. why bother going to the trouble and expense of actually making content when you can just steal it?

in the web world, this content would likely not be of any use to you until it's been optimized and indexed by google's search engine. if you were a purveyor of purloined content on the web, the same tool that provides you the ability to monetize your stolen content is the tool that lets content creators detect your theft.

but search in second life is "sub-optimal" and advertising has been effectively quashed in the interest of user experience. it turns out that people don't want to wander around a virtual world filled with billboards.

the second life economy is dependent on scarcity. there MUST be some scarcity in content community's creative output in order for the virtual goods market to work. but these are digital goods we're talking about, and it turns out that if you're reasonably handy with a C++ compiler you can quite easily make illicit copies of restricted content.

left unchecked, high margin content would be hoovered out wholesale and sold at discount prices by IP thieves. at the end of the day, there is very little linden lab can do about this from a technology perspective.

if it can be rendered on your screen, it can be saved on your hard drive and later re-uploaded. this is the main reason you'll frequently hear people say "put all the value of your content in your scripts." LSL scripts are the only bits of content that are not downloaded to the client. bad guys can't easily copy them with hacked client software.

it turns out that yes, bad people are making a living off stealing other people's content. and there's little that can be done to completely eliminate it. the linden third party viewer policy is an attempt to slow down the dissemination of tools that make content theft easy.

it's a great idea, and i think linden is demonstrating the best possible motives here. but we have to be realistic about what the policy can and can't do.

it is extremely difficult to craft technological prohibitions that will keep all the bad guys out. client IP addresses are rarely stable for long periods of time and the "bad guys" have already figured out how to hack the client software to present fake MAC addresses and viewer strings to the second life servers.

but what _is_ a little easier to do is to crack down a little on the distribution of software with illicit intent. linden's third party viewer policy tells the community what third party software can and can't do and still be considered "virtuous." the third party viewer directory gives users a list of viewers made by people who have promised to honor that policy.

and what's at the core of emerald gate is not that the stock emerald viewer is being used to steal content, but that it was doing things with encrypted messages that made it difficult to figure out if it was stealing content as well as coercing user's PCs to behave in a "bad" way.

so given the current state of the world, and the fact that it would likely be economic suicide for linden to abandon it's content creation community, the third party viewer policy makes a lot of sense.

there is still an open question about "walled gardens' like second life. one can certainly imagine a service where content flows easily in and out of the virtual world. where content doesn't live on linden servers, but lives on public (or semi-public) web servers. the value of the content is not in it's raw bits, but in the way it's marketed, aggregated and distributed.

maybe in future virtual worlds value will derive from creator reputation and recommendation in social networks. maybe the future will see a world of abundance where value and monetization potential is extremely ephemeral.

but we're not there yet, and that's why the third party viewer policy is a necessary evil.

Monday, August 23, 2010

what we should learn from the emerald debacle

so the last week has seen a storm brewing in the second life community. at the heard of the storm is the popular emerald viewer from modular systems. drama erupted earlier this month when emerald developer LordGregGreg announced his departure from the project. it's not unusual for developers to leave open source projects, even "old skool" devs like LGG. this type of departure frequently goes unnoticed by the general public.

but what stoked the drama fires in this case was the reason LordGregGreg said he was leaving:

"I did not realize at the time that emkdu was added, that it could be used to add in code I was not able to see... Although replacing or deleting emkdu would resolve this issue, I also have to consider that this was hidden in the code for months without anyone knowing." --LGG


the "emkdu" code module referenced in this quote is a closed source component, and over the past several months there's been concern it's functions have been compromised. the issue is complicated and layered and has been used by some to refute the open source software development model.

but the core of the issue seems to be that the emerald project is too big for a single, trusted resource (like LordGregGreg) to effectively evaluate the trustworthiness of each check-in.

adding to emerald's woes was the allegation the third party viewer's HTML login page was maliciously mounting a Distributed Denial of Service (DDoS) attack on a rival software developer. modular system's response appeared by some to be "weak" and to not fully address the issue. wagner james au has a good write-up of the controversy at his new world notes blog.

potentially malicious code in open source projects? rogue devs DDoSing alleged bad guys? what's going on? i've read the cathedral and the bazaar several times and it seems to be implying FLOSS should be preventing these types of problems. after all, we're depending on open source methodologies to deliver on the libertarian promise of the technological meritocracy. the marketplace of ideas is supposed to encourage popular features and bug fixes while discounting the trivial and inconsequential.

free from the distortion of economic incentive, concepts are judged by their merits and implemented in software using the aggregated spare minutes of thousands of developers. but instead of being guided by adam smith's invisible hand, we seem to be avoiding the invisible foot affixed firmly in the metaphorical mouth.

lessons we can learn from the emerald debacle

1. with enough eyeballs, all bugs are certainly shallow. but this only works when you're careful about what you call a "bug." noted software security researcher john steven has a quote, "computers should do what you tell them to do, and only what you tell them to do." the implication here is that as an industry we expend a lot of effort on quality assurance; making sure that our software does what we think it should do. where we fall down as an industry is in software security; insuring that our software doesn't do what it's not supposed to do.

open source projects are not the only ones guilty of this. plenty of proprietary projects have inadvertently introduced vulnerabilities into their code. it's not easy to prove your software doesn't do something; it's proving a negative.

but the idea that the openness of a project will somehow reduce or eliminate security risks is magical thinking. so, lesson one is, "even if your software project is open, you still have to worry about software security."

2. order may spring from chaos, but there is no guarantee that it will. many software developers i work with have developed a misplaced faith in "emergent behaviors." in many instances, we see seemingly chaotic projects or processes "come together" while tightly controlled processes fail to accomplish their objectives. with respect to software development, or any large complicated human endeavor, i believe this stems from incomplete visibility.

no one participant has visibility into every event affecting the project. because we only see a fraction of the inputs and outputs, even "rational" processes seem random or chaotic. when these seemingly random events yield a successful outcome, it's easy to assume some "higher order" has emerged from the chaos.

and it probably has. but it's rarely the same higher order that you think emerged.

so lesson 2 is, "a development process that worked last time may not work this time."

3. perhaps the worst lesson from software projects, open or not, is that the efficacy of democracy to organize human activity is not universal. in other words, letting everyone's opinion carry equal weight in a technology project may be a bad idea. don't get me wrong, it's a great idea for local governments and i'm not saying that project leaders should act ruthlessly, ignoring the interests of project participants.

the problem with democracy on software projects is special interest may lead developers to introduce enhancements and bug fixes that are to the detriment of other developers or the general community.

for example, i run second life on a not-exactly high end system. i've got a reasonably beefy system, but i never run in "ultra" mode. it's just too much of a stress on my overly middle-of-the-road GPU. so why not just remove all that "graphics mode" clutter from preferences? it would certainly simplify a program with a reputation for being "not exactly easy to use."

i picked this ridiculous example for a reason. i don't think anyone would ever suggest removing features that degrade the experience of people who have gone to the trouble of buying high-end graphics hardware. but many projects have processes which could allow this to happen.

it's not exactly what happened in the emerald case, but it certainly seems emerald is lacking a single developer or architect who's role is to understand how all the pieces fit together and can proactively dissuade developers from doing things that would ultimately be harmful to other dev's efforts.

so lesson 3? "democracy is considered harmful in software projects."

4. the last, and perhaps the most important lesson might be the most depressing to software engineers. people frequently contribute to open source projects for the purpose of expressing a creative urge. many developers in the FLOSS community spend their days looking at proprietary code owned by a corporate entity. they come to open source projects to exercise their creative muscle in ways they find difficult in work.

open source projects, focused no the solution space rather than the problem space, allow a developer to solve problems without worrying about interference from marketing or sales. (okay, this isn't always the case, but i would argue it is most of the time.)

so this last lesson can be a bitter pill for some people: you can't escape process. sure, you can eliminate the sales department with their business motivations from the process; you can reduce the process to randomly shouting your intent to check in a module in a random IRC channel.

there are plenty of light-weight processes you can use. but you can't completely eliminate "process" and expect success. you must coordinate with other people. identifying a collection of best common practices and elevating them to the status of "process" will free you from having to think about how to communicate with your peers.

yes, process can constrain you. but the idea is it should constrain you in a way that is not offensive and in a way that will produce value.

lesson 4: appropriate process is a good thing; even for open source projects.

finally, maybe the most important lesson. everyone seems to flub this one at some point in their lives (myself included.) lesson 5 is "if you mess up, come clean early and fix your mistake(s)." the emerald team ignored this lesson when they tried to play down the DDoS attack on a rival's page. sure, maybe it really was a light hearted attempt at geek humor. but enough people didn't think it was funny.

and it's not just because it's the "right thing to do." even if you do make a completely innocent mistake, when a bunch of people jump down your throat, acknowledging the incident and apologizing for not seeing how it would affect other people will help disarm them.

these are just a few simple ideas; it's easy to be a "monday morning quarterback" for software projects. i am not trying to imply that the emerald dev team didn't try hard to maintain the security of their software. but it seems they may have been spending too little time on processes that may have been a little too weak.

there's no prescriptive advice in this post, so take it with a grain of salt. i won't pretend to tell you i know enough to tell you how to run your project without even knowing about it. but i like thinking about software, and these are a few things i've learned from hard experience.

your mileage may vary.

Wednesday, August 18, 2010

life after linden

second life™ developer linden lab is not going out of business any time soon.

but with the closing of other virtual worlds like metaplace, there.com and vivaty, it's understandable people may be a bit skeptical about virtual worlds in general. some of the lab's recent actions point towards a previously unknown sensitivity to cash flow: over the last six months they're shedding staff, eliminating services and have promoted Bob Komin (former CFO) to the position of COO.

some people think these are signs of impending doom for second life. these actions could also mean that linden lab is "growing up" and trying to make themselves look like a valid acquisition target (or even an IPO candidate.) linden is known for having an "offbeat" internal culture that sometimes places creativity over accountablity, so the move from offbeat startup to standard mid-sized company isn't going to be easy.

linden isn't a publicly traded company, so we only get bits and pieces of their numbers. but by all accounts, there are still a few large educational and corporate organizations pumping cash into second life's virtual economy. along with the cloud of individuals and smaller organizations, there's still life (and commerce) on the grid.

the mainland isn't going to sink below the ocean tomorrow. it sort of makes me wonder though; what would happen to the second life ecosystem if it did?

it's sometimes fun to consider worst case scenarios; thinking about them can help you consider your behavior and risk management strategies rationally. so just as a thought experiment, what would happen if we woke up one morning to discover that the plug had been pulled on linden lab and second life was closing operations? or more specifically, what happens to the money that had been going into the second life ecosystem?

linden reported a virtual economy of over $500 million in 2009. this is the cash value of all those user-to-user prim hair sales and land rental fees. where does this economic activity go after second life closes it's doors?

and what about economic activity in second life associated with non-linden dollar transactions. say, second inventory or rivers run red or any one of a number of audio hosting services? where would those dollars go?

individuals would likely move on to services that support their use cases, and their buying power would follow them. people who use second life as a chat room may go to IMVU. users dependent on LSL scripted objects may go to an OpenSim world like ReactionGrid, OSGrid or InWorldz. blue mars, kaneva and entropia universe offer more streamlined experiences for beginners, but require more investment from content developers.

themed user communities like lusk or caledon might have the cohesion and resources to start their own OpenSim grids. two years ago we asked if you could run a grid using the OpenSim code base; i think it's pretty clear these days it's technically possible. now the question is probably one of economics. do these communities have sufficient resources to maintain vibrant virtual experiences? are there enough content creators in the luskwood community to satisfy the needs of the furry community? are the non-steampunk experiences in second life so compelling to caledon residents that they would not follow the community out of second life? what's keeping people in second life?

it is not hard to find criticism's of linden lab's product offerings, policies or support. but at the end of the day, enough people still find the value of second life compelling. linden cannot rest too long on their laurels. other virtual world technologies provide roughly the same feature set and are adding enhancements. the lab needs to now add additional features with less staff. if they can't, they'll eventually lose paying customers. it may not be perfect, but it's good enough to keep people paying tier; and it will stay that way until it changes.

Tuesday, July 27, 2010

pay for your lag?

there's a discussion over at gwyneth llewelyn's blog between her and rob blechner about the upcoming linden town hall meeting. one of the topics mentioned is lag, and what can be done about it. gwen is happy to hear philip rededicate the company to fighting lag, but rob makes the point that in a user generated content world, there's not a lot you can do about it.

this got me thinking... why not build a world where there's a financial cost to creating laggy prims?

determining what's laggy these days isn't an exact science, but i think we know enough to know make a few reasonable assumptions. saying "unoptimized textures and large collections of prims lead to more lag" is a good start.

maybe users in the virtual world could be given a "lag budget" measured in ARC-hours. (ARC is "Avatar Rendering Cost.") if you go over your lag budget, you have to pay for more. so if you were given 6000 ARC-hours per month, you could wear your 1500 ARC outfit for only four hours before you had to buy more lag. but you would get 40 hours of use out of your 150 ARC ruth-esque outfit.

maybe a benefit of premium accounts could be you could sell your unused lag on the "open lag exchange."

just a thought.

what does it mean for a virtual world to be open?

for the last several years, a bunch of us in Second Life™ have been bemoaning the fact that it's more or less a walled garden. yes, there are plenty of ways to get data in and out of the virtual world (even more with viewer 2's "media on a prim" feature.) but there's still a LOT more we could do to open this place up.

in the vwrap working group, we've been focusing on technical details, only occasionally surfacing for more "broad ranging" conversations. i think everyone in the working group supports the concept of an "open" virtual world, but i don't know that we've sat down to have a detailed conversation about what that means.

so this is my two cents on this topic. i would love to hear other people's ideas.

what you get with Second Life™ at the moment

Second Life™ currently allows for some flow between the virtual world and the 2d web. for instance, you can apply a web page to an object's exterior. viewer 1 limited you effectively to one URL per parcel, using the parcel media feature. viewer 2, with all it's faults, introduced the concept of putting a live web page on a prim face. cool stuff.

LSL scripters can also create objects that query data sources on the web using the LSL HTTP Client feature. More recently objects in world gained the ability to respond to HTTP requests with the LSL HTTP Server feature. these features allow in-world developers to interact with the larger 2d web; objects in world can respond to things happening in embodied reality.

LSL developers have done some great work creating in world objects that act as bridges between data and communication channels in world and out. (i'm thinking specifically of the various devices that bridge SL Group Chat with IRC and XMPP.)

why this isn't enough

but my assertion is that while these features are great, they're just not enough.

these features are relatively limited in terms of MIME types you can use and length of HTTP requests and responses in and out of the virtual world. to do any "real" development, you need to establish a web proxy outside SL.

this isn't a deal killer per se, but it does introduce some issues. in order to consume relatively complicated data (an RSS or ATOM feed, for instance) you need both LSL skills and the ability to code server-side PHP, Python, Perl, Java, Ruby or what-not. again, not a deal killer, but it limits the set of people who can develop for your virtual world.

there are also "plumbing issues" like authentication and federated identity. and getting objects in and out of the world is a minor annoyance (i'm thinking of second inventory and related functionality for OpenSim.) moving things in and out of Second Life™ is not impossible, but it's hard to automate, and requires the use of interfaces the lab may change without advance notice.

don't get me wrong here; i understand there's a rationale for why we live with these limits. i don't subscribe to the opinion that the lab (or some of it's employees) is/are evil just because the lab's business model might not be aligned with my personal opinions of how the world should work.

but i might as well talk about what i would like to see and why.

so what would an "open" virtual world look like? my take on an "open" world is one where just about any bit of data needed to participate or render the world could be hosted on an arbitrary server somewhere.

identity, groups and authentication

let's start with identity, groups and authentication. right now in SL, if you want to create an account, you go to secondlife.com, fill in some data, click a button and viola! you have an account on linden's servers. what could possibly be wrong with that?

well... a lot, that's what.

the 1 million active users metric you hear from the lab is pretty good for a small virtual world, but it's dwarfed by WoW's 11.5 million (paying) users, twitter's 75 million and facebook's 500 million. what if we opened up the virtual world to other identity providers? what if we let people automagically provision an account using other identities. they could use their profile information from facebook, gmail, linkedin, twitter and even the wikipedia. this would remove the "friction" of forcing people to create a new account in order to use the service.

so instead of forcing users to provision a new account with it's own password, we could use OAuth, SAML or something similar to carry identity and authorization information. done correctly, this would allow people to retain their "branding" from other services. it would be very nice to know, for instance, that the Meadhbh Oh you meet in-world is the same as @OhMeadhbh on twitter.

twitter, facebook and gmail all have access to the "long form" name you used when you setup your account. why not use this information to put your account name over your head instead of the "fantasy" name we currently use?

group affiliation and friends lists could also be automagically "imported." or rather than having the virtual world make a copy of your social graph, it would just use your favorite, existing social networking site directly to populate your friends list each time you log in.

in the future, i think the "open" virtual world will provide a semi-public avatar profile that uniquely identifies you to virtual world systems and users. an identity provider could either provide that profile (think of how twitter does http://twitter.com/) or would give you the option of putting your avatar profile URL in your social media site profile next to your email and relationship status.

the virtual world cannot depend on a single identity provider. we must make it easy for users to provision accounts and bring their personal branding and social network with them.

text and voice chat

and what about text and voice chat? right now in SL, you have one provider for text and voice group and person-to-person chat. your text chat is routed though linden's servers for text chat and through vivox for voice. it would be nice if we, the users, could pick our favorite voice and text chat provider.

why? not to put too fine a point on it, group text chat in SL sucks rocks. and people might just want to use their existing skype account for voice chat; maybe they have a skype out account and want to add a POTS user to a conference call. or maybe they want to talk about super secret things and want to use a corporate VoIP system.

or maybe they want to just use IRC or XMPP to chat so that the discussion has the option of moving out of the virtual world and into the less immersive, but more common world of "plain ol' internet chat." imagine an experience where you could be tied into your social network by way of a simple text chat client; then when things "got interesting" you could drop in world to see what people were talking about.

and if you were handy with authentication mechanisms, you could probably use the same identity on the chat channel that you did in world. in fact, i would sort of demand it.

what about assets and land?

digital assets in Second Life™ are now inexorably tied to Linden's asset servers. when their servers go down, you lose access to your goods. things are certainly more stable these days than in the old days where sim crashes and grid-wide downtime were normal occurrences. but it's still very annoying to be forced to deal with someone else's network problems.

wouldn't it be nice if you could have your own asset server on your desktop machine? maybe even running your own simulator so you would have a non-social, desktop development option.

an "open" virtual world would give you that option. your assets are stored where you want them stored. if you want to build your 3d objects with AutoCAD or 3DMax and then drag them into the virtual world browser, that should be your option.

the "open" world goes beyond where we are today. it's more than just a few HTTP messages coming in and out of the virtual world, but interoperable, open standards underpinning every aspect of the experience.

Wednesday, June 30, 2010

second life : there can be only one?

the foreground lights dim as the camera closes in on philip linden (portrayed by christopher lambert.) viewable only in silhouette now, we see an exhausted fighter, his sword already falling from his hands. the decapitated heads of vivaty, metaplace and forterra are still rolling as the bodies that once supported them fall in slow motion to the ground. lightning dances around the industrial setting, lighting philip's face for a moment. queen's "princes of the metaverse" plays in the background as the words of mitch kapor (played by sean connery) echo in the ears of our protagonist... "there can be only one."

or at least that's the image i sometimes get when i hear when about virtual worlds failing. a lot of people have been trying to extract cash from the virtual world, but it's a tough market. and a number of people have commented lately that in the post-hype world, second life™ may be hurting, but it's at the head of the pack and has the market for social virtual worlds more or less locked up.

but is that true? can there be only one?

just to clarify, i'm talking really about public, social virtual worlds. i'm not talking about virtual world platforms or small, departmental virtual meeting rooms. i'm talking about full-on massively multi-participant experiences.

OpenSim is an excellent project; as is SimianGrid. both are open source projects intended to replicate the functionality of linden's server software. the former seeks to maintain compatibility with linden's existing protocols while the later is more focused on next generation VWRAP protocols.

but neither are virtual worlds as much as they are open source software projects. they are both excellent projects, but they both explore the "solution space" of the virtual world domain and not the "problem domain."

no... what i'm talking about is public virtual worlds, with's lots of space for a bunch of people to hang out in world and do those things that virtual people do. this sort of knocks out Croquet / OpenCobalt (which is also mostly a "project") and (sadly) vastpark and teleplace. they're not bad concepts, they're just not massive.

if you look over at the OpenSim Grid List, you see that there are several grids out there, but the number of people visiting them is tiny. why is this? why is it that OSGrid, the largest of the OpenSim grids listed, is only attracting one 200th of SL user base?

my guess is it comes down to functionality, economy and community.

kvetching about features OpenSim lacks out of the box seems to be a popular sport these days. but it probably doesn't do much for the world to repeat some of the more extreme arguments. at the end of the day, some people like the second life permissions system and some people don't. some people like in-game currency, other people don't. but it seems that of the people willing to pay money for virtual space, most people either want those features (so they can do commerce) or don't really care if it's there or not. it seems that few customers are actively opposed to operating in a virtual world with cash and permissions.

without a turnkey system for starting a grid with cash transactions and a robust permissions system, the cost of implementing these features falls to the grid operator. without the virtual economy, it's a little harder to attract people to your virtual experience, and thus your community remains small.

so what can you do to grow OpenSim or Simian or OWL based virtual worlds into mega-monster avatar playgrounds? simple. stop trying to be second life™.

i think the answer to the question "can there be only one second life?" is yes; there really can only be one. but you can go on to have a lot of virtual experiences that are noticeably different from SL, and in many ways product differentiators. so let's not talk about things in terms of second life, and start thinking in terms of "next generation virtual worlds."

the obvious one that everyone is talking about is, "make second life run in a browser." there are enough people out there talking about Unity3D, WebGL and OnLive that a quick round of googling can find you a depth of opinion. (for extra fun, search for "+rezzable +unity3d +opensim".)

the next obvious one is, "make your virtual world more social." it's clear from linden lab's recent moves that they've heard this one. they interpret it to mean "follow the money, integrate with facebook."

another differentiator that is near and dear to my heart is "let info flow in and out of the virtual world." Linden Lab introduced an amazing new feature recently with it's media on a prim and shared browsing experience. but the truth is, putting a web page up in a virtual world isn't exactly new. heck, even sirikata did it. NanoCosm was doing it back in the late 90's. but that's the simplest way to get info into the virtual world.

how 'bout we let in-world groups map to facebook groups and twitter groups? why can't i easily see my facebook friends and twitter followers in world? for that matter, why can't i just log in using my twitter credentials. they _do_ support OAuth, after all.

and assets. Second Life's asset system requires you to upload images and what-not to their servers. why couldn't i just point to a texture or a COLLADA .dae file out on the web somewhere and say: "when i drag this item out of my inventory, i want you to go out to the web to get the data used to render it."

so i think my key point here is... don't try to recreate second life. it's been done. it attracted a fair number of people and a lot of hype. move on, do something better.

Friday, June 25, 2010

the next five years of SL : or, yet another rambling blog post about second life

so the recent tumult at linden lab got me thinking about the lab, second life™, virtual worlds in general, people's brains and business. and apple; i live in the bay area, so when the subject turns to "turn around stories" we start talking about apple.

yes, you know.. apple. the people who make the iPad, iPod, iPhone, iTouch and iEverythingElse. it's hard to believe, but there was a time when apple products were the domain of artists, students and assorted nut-cases like me who just wanted to be annoyingly different. before the iPod, apple's profits came from selling half-rate knock-offs of the Xerox Alto system software wrapped around well designed, but marginally manufactured hardware. (that is until they started selling half-rate knock-offs of the Xerox Alto system software wrapped around Avi Tevanian's master's thesis micro-kernel wrapped around well designed, but not completely marginally manufactured hardware.)

now don't get me wrong, i'm not a wintel bigot; nor am i an apple hater. i'm just telling it a little bit like it is to make a point. in the 1990's and early 2000's, you were a fool to waste time with macintosh products. they were temperamental, expensive closed boxes and using them set you off from the wider community of PC users and the bazillion programs you could run under windows.

as much as guy kawasaki likes talking about how the early mac team was trying to build something "insanely great," the mac operating system rested too much on it's laurels. throughout the late 1980's and 1990's, apple's steve-jobs-less leadership frittered away it's leadership position shuffling business units, preparing them to be the "next new thing." while the public was introduced to a stream of "interesting" products like the newton, powerCD, quicktake, cyberdog, opendoc, pippin and macintoshTV.

so by the mid-90's, apple's arch-nemesis to the north was nipping on their heels with Window95 and MS Office. the good news for apple was the decision to build user centered software with GUIs instead of crufty command sequences was vindicated. the bad news was that the courts allowed microsoft to rip off apple's look and feel.

and then steve jobs returned from the corporate hinterland, slashing projects, killing divisions and laying off staff. at the time, apple employees had a term for it, it was called "steve-ing." as in... "wow. they laid off the kitchen staff for mariani 1, i think imaging products division is going to get steved."

so jobs came back, turned apple around and today iPads are flying off the shelf and jobs hob-nobs with guys who can launch nuclear missiles at the google campus.

but what changed? why are apple products now cool? (yes, this is where we start talking about second life)

apple products are cool because apple products appeal to both a user's need for functionality AND the user's emotional closeness to the experience of using those products. apple products are cool. they delight. when you use them, they treat you like a movie star. they make you the center of their little device universe. they are cool and that coolness rubs off on you. so no matter how much of a dork you are, if you're using an iPhone, you feel like one of the cool kids.

can we say that about linden lab products now?

okay. loaded question. let me ask it another way. how does second life have to change to bring back that sense of emotional closeness?

waaaaaay back in 2005 and 2006, the hype cycle was in full swing. everyone was convinced that this was the wave of the future and we would soon all be virtually working in our virtual offices. so you couldn't teleport or you crashed every 15 minutes or the whole grid had to reboot every thursday. it wasn't a problem because you were experiencing "the future." and when you participated in the future, it made you cool.

but the future was a reasonably crappy place to work. prototyping real products in SL was annoying at best, and often impossible. you could have a virtual PC on top of your virtual desk in your virtual office, but it was just a prop. you couldn't use it to collaboratively edit documents with people in your virtual crib until very, very recently.

second life was a taste of the future; distance would soon be a thing of the past. we would have meaningful human interaction virtually.

but the promise of second life wasn't enough to keep the broader community of technology innovators "emotionally engaged." that a core group of enthusiasts drove the content creation economy with such primitive tools is testament to the creativity and ability of second life's residents.

for the broader community of content designers who wanted to use SL to build things that would interact with the outside world, or even live mostly in the reified world, the time to frustration was often much shorter than the time to delight. and when you have a tool that frustrates you more than it delights, it's hard to have emotional engagement.

and that's where we're at now... second life is a pretty cool niche with a comparatively small community of people using it to build engaging experiences. for the last several years the business guys at linden have been trying to figure out how to break out of that niche.

philip rosedale's return to the helm of linden has invigorated the community, and everyone seems to have a different opinion of how the world went wrong and a different narrative for restoring it to its former glory.

some view SL as a "platform." that is, linden's value lies in it software. either as a service (as it is now) or as a product (like SL/Enterprise), they say that untold riches await the lab if they could just figure out how to market it properly. to grow adoption, you simply reduce costs, develop new markets and watch the cash roll in.

others view SL as a "community." that is, it's value lies in it's community, waiting to be monetized with search and ad sales. make it easier for facebook and twitter users to convert into SL users and watch the cash roll in.

and some people point to steve jobs' success in converting apple from a maker of second-rate computers into a consumer electronics powerhouse and say the lab should adopt an "experience" strategy. "engage customers and give them an experience that is emotionally meaningful for them." perhaps that means enhancing the graphics capability or enhancing in-world music events.

but the truth is, none of these approaches will work by itself. linden and second life are at an inflection point, much like apple was in 1996 when steve jobs returned to re-orient the company. apple had it's strategic re-organization that involved layoffs and management changes.

but one thing to consider is it took steve jobs about five years from the time he returned to the time the iPod was released. so even if linden is pointing in the right direction, it could be years before we see the next big thing out of the lab.