My post on UdonSharp, the user-made C# compiler for VRChat, inspired me to reach out to Jim "Babbage" Purbrick. Because when he worked for Linden Lab, he was aiming to make it possible to script in Second Life with C#. Sad to say that didn't come to pass, and he left the Lindens in 2010. As he wrote on his blog then:
Alas, tomorrow is my last day at Linden Lab and Babbage Linden will never get to see C# scripts running in the wild in Second Life, but I very much hope that I do. I hope that C# support is eventually added to Second Life and that I don’t have to wait 170 years to turn the handle. As another Babbage said when he failed to build the Difference Engine: “Another age must be the judge”.
Watch Jim's demo above to see how cool that could have been, with more background on his blog.
"Supporting C# and other modern languages was always the end goal with the work on Mono and we implemented the Mono scripting engine to be language-independent," he tells me now. "Although in production we only ran LSL scripts compiled to CIL we had development builds which would run C# compiled to CIL with normal C# compilers and then processed to inject microthreading support with the same tools that processed the assemblies produced by the Linden Script Language compiler in production."
Bringing C# to Second Life, as he explains, would be an enormous modernizing leap for the platform:
"At the time I was working on embedding Mono in Second Life I spent a lot of time talking to another engineer called Joachim Ante who was working on embedding Mono in a game engine he was working on called Unity. Since then Unity has become one of the most widely used game engines in the world. We used Unity to build experiences in Oculus partly because it's what a lot of engineers know and expect to use. " (After leaving Linden Lab, Jim eventually wound up working for Facebook/Oculus.) "Supporting C# in SL would make it much easier for those developers to build experiences in Second Life without first having to learn a new language."
There is at least one barrier to making C# available in SL:
"When I stopped working at Linden the main blocker to getting C# support in to SL was that bytecode verification of untrusted code hadn't been implemented in Mono, so we could only run trusted C# code in our demos," as he puts it. "That functionality may well have been implemented since then."
Another possible barrier? Given all the turnover since 2010, I'm honestly not sure anyone at Linden Lab even remembers this project is still on their shelf -- or is high enough on the corporate ladder, to prioritize it.
Hat tip to reader "seph", who inspired me to talk with Babbage via this comment:
Babbage Linden for years (2006-2010 ish?) communicated the process of getting Second Life's scripting powered by Mono. He talked often in user groups and other places about a clear path towards supporting not just C# but other .NET languages like F#, IronRuby, IronPython, etc. I'm not sure what happened other than Babbage leaving but obviously we never got C#. It seems now with that past work already done and Mono's licensing not being as problematic as it once was now that its owned by Microsoft (problematic LGPL then, MIT now), and there even being another option/successor like .NET Core, Linden Lab should invest in updating its own scripting again with the inclusion of C# and more .NET features.
I didn't feel like being angry this morning, but here we are.
Posted by: Adeon Writer | Tuesday, April 13, 2021 at 12:06 PM
I can imagine what SL could have been with C# and many other things.
Second Life instead has been a story of poor decisions, missed opportunities, half baked new features, that also introduce new serious, user-experience hampering, bugs... that get fixed after ages if never.
Now Linden Lab can't even fix the world map, broken since several months ago. Preview grid (Aditi) inventory can no longer be synchronized since November 2020. Screenshots still tend to fail to upload to my.secondlife, teleport failures, objects not showing up in the viewer until you right click and so on. All stuff that shouldn't have passed any serious QA check in first place.
It kind of works and it doesn't explode entirely seems the way to go for Linden Lab.
It would be great having C# in SL, but, yeah, VRChat allows that indirectly. I don't expect anything competitive coming out from Linden Lab anymore. Other virtual worlds are implementing anything that LL should have done, never did and probably will never do. People used to SL would be amazed to try out any other virtual world and see that it just works without falling apart. None of those can fully replace SL for now (in general, while subjectively it depends on what you do), but the strong points are getting fewer and fewer, while SL is being surpassed in so many other areas.
Posted by: Pulsar | Tuesday, April 13, 2021 at 04:42 PM
Yeah - what Pulsar said...
The uplift seems to have created more issues than it solved - the destination guide floater works sporadically (no timeline to fix it apparently), Avatar impostors (orange clouds) more often than not, textures popping in and out of focus (if displaying at all) & more random disconnects during teleport than I remember when I joined in 2006!
I think a half term report would be "Fair.. needs more effort & improvement"
Posted by: Sally Crofton | Friday, April 16, 2021 at 11:32 AM