Mono/Forum Transcripts

== Intro & Overview ==
Madhavi Linden (you): first, thank you all for your patience and for joining us today
Periapse Linden: hopefully soon I'll be joined by some other members of the Mono team
You: shall we start?
Periapse Linden: sure. Let me start by telling you who I am. I'm the PM for LL's Studio Icehouse, which started this incarnation of the Mono project last summer. The project is now in the hands of Babbage's Studio Blighty, and I'm sticking with it through the beta.
I would like to gauge ppl's familiarity with the Mono project before I go on. I don't want to give background on what it is and all if you are all already familiar. Who needs basic info on what Mono is, and what this project is about?
Eshi Otawara does
Gerome Mayne: me
Periapse Linden: kk
Periapse Linden: Mono is an open source virtual machine, part of the .net framework, as such it is known for its speed and stability.
joejack Iuga: aha
Periapse Linden: About three years ago Babbage Linden considered how to bring Mono technology into Second Life.
It has the promise of making scripts run faster, and the hope of using other languages to script SL
Gerome Mayne: ty
Eshi Otawara: ah
Gerome Mayne: i think i am in picture now
Periapse Linden: Because of several difficulties, and priorities, it wasn't until this summer that Babbage was able to really focus on this project. For this phase the purpose is to implement Mono as an alternative VM to the LSL2 VM that currently runs all SL scripts. So the focus is on getting LSL scripts to compile to Mono bytecode, and then have them run compatibly with the same script run under LSL2. Since the focus is on compatibility, we aren't changing LSL in any way for this project. Once the LSL -> Mono bytecode compiler was in place, around September, we went into QA. You can imagine how long a process this was, since there is just so much to test.
After about three months of our internal QA hitting Mono with every script they could find, vehicles, communications, math scripts, even griefer scripts, we had come to the point where we knew there must still be. plenty of bugs, but they were beyond the ability of even our dedicated and passionate QA team to find
So that's how this public beta was born. We unleashed Mono on the beta grid for all of our ace resident scripters to bash at it and find bugs. Which we've been finding aplenty -- over three dozen in the past two weeks of our beta. Before I open this up for questions let me just give you some resources 
https://wiki.secondlife.com/wiki/Mono
That's a good starting point. It has links to our beta FAQ, and tells you how you can download the beta client,
which is the same one for havok4, since we are sharing aditi (the beta grid) with them.
Right now Mono is running on one host, four regions, on the beta grid. We're going to keep up this beta for at least another month, and maybe add some regions to it, like a water region, damage region, and maybe a teen-enabled one. Hopefully after that we will be confident about the stability and compatibility of Mono, and we'll then consider how to bring it to the mainland.
One last thing -- since this question always comes up: We do not expect to ever get rid of the LSL2 virtual machine. Scripts running under it never need to be recompiled to Mono -- that will be an option. At some point we *may* turn off the LSL compiler, so that all new scripts become Mono, but even that has not yet been planned out.
== Q&A ==
Periapse Linden: So, questions?
=== Recognizing Script Language ===
IntLibber Brautigan: how does the system know what language a script is using?
Periapse Linden: Intlibber -- we can tell when we load the bytecode if it is Mono or LSL2, and give it to the appropriate VM
=== Recompiling ===
Echo Seigo: with that in mind, is their a plan to recompile everything with mono - or are we left up to doing that ourselves if we want?
Periapse Linden: oh, right. We definitely do not plan to auto recompile
Periapse Linden: there are several reasons for why we want to make it up to the scripter whether to recompile or not
Periapse Linden: First, many scripts are not designed to be restarted, which a recompile would trigger.
Periapse Linden: So it would break things...
Echo Seigo: "buy my scripts with an upgrade to mono for only 100L$" :)
Periapse Linden: Second, we believe that scripters may want to recoup the effort of porting their scripts to mono
Periapse Linden: i don't mean the effort of clicking a single checkbox to generate the mono code
Echo Seigo: testing can be a large effort, sure
Periapse Linden: but the effort of testing the script under mono to make sure it is 100% compatible
Periapse Linden: you can take your LSL scripts to a Mono beta region, and rez two copies of them
Periapse Linden: one you can recompile to mono simply by checking the new box on the script dialog window
Periapse Linden: then you can compare the two versions side by side
=== Script Memory ===
Kim Anubis: I understand scripts will have more memory now. Are there plans to continue to increase script memory?
Periapse Linden: oh, yes. We found that scripts recompiled to Mono often have a larger memory footprint
Periapse Linden: because of the overhead for Mono.
Periapse Linden: IT can be minor, but in some pathological cases it can be 3.4X the size of the script
Periapse Linden: So in order to allow for all cases, even a worst case 16k script that becomes 50+k under Mono, we upped the memory limit
Periapse Linden: for Mono bytecode, heap, etc. to 64k
Periapse Linden: the great thing about this is that Mono dynamically allocates memory
Periapse Linden: unlike LSL2, which occupies 16k even for a simple hello, world.
Periapse Linden: so even though Mono has more overhead, the dynamic allocation ensures that we never allocate more than we need
Periapse Linden: Nor does this bloat out the asset system.
Periapse Linden: Assets have a minimum size of 64k, so all mono scripts still fit in one minimum asset block
Kim Anubis: thank you :)
=== Script IP and Implementation ===
IntLibber Brautigan: lot of us have invested a lot of money into script IP we own, obsoleting that is a major economic impact.
Periapse Linden: Exactly. The economic reasons against automatic recompiling really gave us pause. So we leave it up to you to recompile, test, and then sell Mono versions of your scripts.
In some cases there will be no reason to move to Mono at all.
IntLibber Brautigan: how does this impact implementation of new functions, will new functions be implemented in both lsl and mono?
Periapse Linden: In others, scripts that do a lot of maths processing especially, you'll get huge performance wins.
Periapse Linden: Yes, any changes to LSL will have to be made for both Mono and LSL2 vms
IntLibber Brautigan: ah too bad random number generation doesn't pay like it used to
Periapse Linden: But we aren't really considering major changes to LSL. Mono opens the door for much richer languages in SL
IntLibber Brautigan: so does this mean that none of the security related lsl commands requested up to a year ago are never going to be implemented?
Periapse Linden: Intlibber -- The Mono team has no plans of implementing new LSL calls, but that doesn't mean no one else on the Lab will. I simply do not know the plans of the other studios.
=== Performance ===
Eshi Otawara: /so that would mean that in the near future as an artsy person that hires scripters for artsy projects, i could actually let imagination run wild as far as having an interactive art piece LOADED with listener scripts and all kinds of weird stuff with much less concern of lag?
Periapse Linden: Eshi -- that's the hope. But right now you really should test Mono yourself to see how it performs on your scripts
When we've tested Mono, it's been with industry benchmarks. These tend to be math-intensive scripts, and mono performed amazingly, often over a hundred times faster than the same script in LSL.
Eshi Otawara: /that's the thingie....I dont go beyond editing a particle script...but it would be nice to have my latest project run more smoothly
Periapse Linden: But only now are we getting the chance to see how mono behaves with real world scripts
Gerome Mayne: can i ask a question?
Periapse Linden: Gerome, go ahead
Gerome Mayne: what i got is that u develop a system for faster and better scripting usage
Gerome Mayne: which u will not estimate to be used in all secondlife soon
Gerome Mayne: will there be a date within years u swith that to allow faster performance wich germans realy ask for?
Gerome Mayne: its not a technical question itself ... its more to get an indea wich bigger performance changes will come for us abroad
Periapse Linden: Gerome, I'm not precisely sure what you are asking. If you are asking about overall SL performance
Gerome Mayne: the tool u build
Periapse Linden: I cannot comment about that -- I don't know enough about what's going on.
Gerome Mayne: seems to spend much more performance
Gerome Mayne: wich we need
Periapse Linden: If you are just asking about Mono, and improved script execution
Gerome Mayne: yes
Periapse Linden: we do plan on getting Mono out on the Main Grid this year. But how we do that has not been planned
Q Linden: Gerome, mono will make scripts run faster, but they have to be recompiled for mono. We won't *force* people to recompile...but we think they'll want to.
Periapse Linden: For example, we could do it like Havok4, and allow island owners to upgraed to Mono
Gerome Mayne: ok ... this is an answer ... i do not need to know how ... but if
Periapse Linden: or we could just roll it out in a server upgrade everywhere when we think it is done.
Gerome Mayne: ur loosing loads of german peoples because of not changing performance
Q Linden: Gerome...do you mean script performance specifically?
Periapse Linden: But as Q says, we don't plan on automatically converting everything to Mono because that should be the IP owners call.
Gerome Mayne: in half way yes ... scripts are making secondlife active
Gerome Mayne: and this is what we want
Gerome Mayne: an actine and interactive plattform
Q Linden: It's my personal belief that if we made scripts 10x as fast, people would do 10x as much with them and the visible performance wouldn't change. :-)
Gerome Mayne: no
Gerome Mayne: thi sis not the case ... we creators could offer more to make the peoples love sl
IntLibber Brautigan: thats what he's saying Gerome
Gerome Mayne: ok ;)
=== Griefing and Muting Objects ===
IntLibber Brautigan: so griefers can crash a sim 100 times faster now? Wont that wipe out the stability that havok4 has been promising?
Periapse Linden: lol -- yes, we did indeed find that initially Mono's speed helped griefer scripts. We're working with the gteam to fix that. Physics crashes are a different thing. Mono won't affect that.
IntLibber Brautigan: so I can expect to get buried in 100 times as much IM spam from griefer objects - thanks you just made my day
Periapse Linden: But we are looking at other griefer scripts that run faster, particularly those that spam
IntLibber Brautigan: how about getting the ability to mute objects named Linden? - that would help immensely
Periapse Linden: Well, i'm surprised that is still a problem -- I thought someone fixed that already?
IntLibber Brautigan: nope
IntLibber Brautigan: Nigger Linden is still unmutable
IntLibber Brautigan: same with Alsococks Linden
IntLibber Brautigan: and all their friends
Periapse Linden: Ability to mute objects named Linden would be a perfect feature request for our JIRA. It has nothing to do with scrripting, so I'm not going to comment on it further.
Q Linden: FWIW, in the studio I work in, I'm working on a redesign of notifications that would help to both throttle problem scripts and make it easier to deal with notifications. But it has nothing to do with Mono, and it's a ways away yet.
Periapse Linden: We are looking at ways within the script environment.
=== Mono Bugs ===
PM Sands: 1) So, I will try to test my scripts on beta mono. What is the ETA for final release (should I feel like being lazy about testing) ? 2) Also, can you share any common troubles testers are seeing, and how to avoid them.
Periapse Linden: PM - go to the page I linked earlier. You will find a link to a JIRA meta issue. I think it's SVC-1276, but not positive. It holds all the issues discovered so far with Mono.
PM Sands: thanks
Periapse Linden: We've already fixed over a dozen, and rolled out an update
Periapse Linden: oh, PM, as far as final release -- we haven't thought that far. The beta will continue for at least a month. Probably it will expand once Havok4 is done with the beta grid.
=== Mono Objects in Non-Mono Environment ===
Echo Seigo: if it was rolled out with mono enabled regions - how would a mono object preform in a non-mono region?
Periapse Linden: Mono bytecode will not run in a non-mono region
Periapse Linden: So, to avoid confusion, that argues that we don't want to have a hybrid grid for too long
Echo Seigo: *nod* at a quick glance thats what it seems to say
Periapse Linden: otherwise peoples Mono bytecode attachments may stop working when they tp or region cross to a non Mono region.
Gerome Mayne: so a very difficult switch anyway
Gerome Mayne: ;)
=== Languages and Mono ===
Echo Seigo: you mentioned that mono opens up other richer languages to be uses in SL.. what languages have been tossed around?
Periapse Linden: Well, the current frontrunner is C#
Echo Seigo: i'd imagine C#
Periapse Linden: We may try a proof-of-concept with that.
Q Linden votes for Iron Python ... but that's my personal favorite
Echo Seigo: Perl! lol
Echo Seigo: I think C# would be great but really i'll take and "real language"
Echo Seigo: oh to have an array!
== Closing Comments ==
Periapse Linden: But I wish to make you all aware that our thinking on "What's next" really needs input from you people -- SL's professional programmers.
If you want to participate in the discussion, please come to one of Babbage's office hours - Wednesday at 8am SLT
Echo Seigo: ok, great :)
You: well our time is just about up. Any final questions?
Periapse Linden: you'll find the info on the Mono wiki page I linked
IntLibber Brautigan: thanks
PM Sands: Thank you Madhavi, Periapse, and Q.
joejack Iuga: thnx and bye
You: Thank you everyone for attending and participating today
Echo Seigo: Yeah thanks for the info, gonna have to get to the beta grid
Kim Anubis: Thank you for your time and for keeping us in the loop!
Q Linden: see ya
You: a transcript of this forum will be up on the wiki soon
Periapse Linden: thanks for coming everyone.
Gerome Mayne: ty for the informations
Kim Anubis: Have a good day!
Marissa Bergbahn: bye
Periapse Linden: bye
Eshi Otawara: ta ta!