A video of my FOSDEM talk about Mono in Second Life and our plans for the future of scripting is now online (the slides are also available here ):
Watching back, I was surprised to hear myself say “Hooray!”, “Shit” and “Crap” quite so often…
While you’re catching up on FOSDEM talks, I recommend Miguel, Jeremie and Alan‘s talks from the Mono track. Unfortunately it doesn’t look like the very interesting talks on the XMPP track are available online, but I’m going to be catching up on lots of the talks I missed out on, including the key note talks on Saturday morning which I missed due to the very enjoyable beer event on Friday evening…
Last weekend I went to the 10th Free and Open Source Developers European Meeting in Brussels. This year was the first time that FOSDEM had hosted a track on Mono, so I went along to find out what’s going on with Mono, tell the Mono folk what our plans are for C# and fill in some gaps.
I started Saturday on the monitoring track which included a terrible talk about an interesting tool that I hadn’t heard of: SystemTap — a scriptable system monitoring tool designed to allow diagnosis of problems at run time on production servers without the usual instrument, compile, analyse loop. stap looks really interesting and useful as a tool for augmenting or replacing our current simulator performance tools.
After the stap talk I headed over to the XMPP track for the rest of the day and saw some great talks on BOSH, onsocialweb, pubsub, strophe.js, collecta and node.js. Federated, open social networks seem to be a big thing at the moment (@blaine was talking about them at @scalecampuk ) and there was lots of interest in using XMPP to build them as it already has standards for identity, presence, friends and events. Given that jabber and XMPP is a decade old it makes you wonder why the standards weren’t used the first time round. A possible reason is that XMPP doesn’t have it’s rails/django yet and still looks pretty clunky to work with although Strophe.js may help. Another reason may be that XMPP hasn’t been the web up until now, although BOSH may be the bridge that’s needed there.
While everyone else was thinking about using XMPP to build Twitter and Facebook I started thinking about what an open, federated virtual world platform built on XMPP might look like. I wasn’t the only one. The realXtend folks turned up to show off their latest new from the ground up viewer which uses XMPP and jingle for voice and IM integration and were obviously thinking along the same lines. As realXtend seem to be moving away from SL tech now, expect an XMPP based back end from them soon…
I spent Sunday camped out in the Mono room which was interesting from a cultural point of view. Miguel de Icaza seems to have completed his transition from champion to enemy of freedom in the open source community’s eyes. Last time he was at FOSDEM he was accused of talking about “Coca Cola” when showing off the closed source Unity engine that uses Mono, so stayed strictly to open technologies in his talk this year. Luckily, due to Microsoft’s Community Promise and open sourcing of the DLR, IronPython and IronRuby, that includes a lot of the .NET platform and gave him lots to talk about. Most of the legitimate worries of patents around Mono have been resolved, but talking about C# and the CLI at FOSDEM still requires a poster asking people to leave their religion at the door, apparently.
In my Second Life talk, I gave a summary of the interesting things we did to get LSL on Mono working in 2008 and then outlined our plans for C# in the future including lots of question marks around how we’re currently planning to implement them. Lots of my questions were answered after the talk and it turns out that the Unity developers are wrestling with the same problems at the moment, so we should be able to work together over the next few months to make a lot of progress.
Overall FOSDEM was hugely informative and enjoyable and I have a big shopping list of exciting new technologies to play with over the next few months. Hopefully the Mono room will become a regular fixture and we’ll be able to head back next year.
It was incredibly satisfying to be able to go back to Lang.NET 3 years on to be able to say that we actually managed to make all the crazy plans we had for Mono in 2006 work. My talk is now online here. Lots of people hadn’t seen the 2006 talk and were blown away with us adding support for continuations on the CLR and enough new stuff to keep those that had seen the first talk interested. In particular the anecdote about flywheel exploits for the Mono scheduler got a laugh from Anders Hejlsberg.
The other highlights on Tuesday were Mads Torgeson’s talk, which gave some nice insights in to the process that led up to the final C# 4.0 Dynamic design. Mads did a good job capturing some of the concerns that static advocates have with dynamic languages. Gilad Bracha’s talk on Newspeak and the Hopscotch IDE showed what’s possible with a really dynamic language: extending the IDE and debugging it from inside itself. The access that newspeak has to it’s call stack was particularly interesting: it would be much easier to move a newspeak stack around than build the infrastructure we needed to move a CLI stack. I spoke to Gilad about his experiences building newspeak on Sqeak afterwards. His impression is that Squeak is runtime mostly used for education and has no support for security or running untrusted code. Having spent a decade seeing the various security problems with bytecode verification in Java, Gilad isn’t convinced that a bytecode level sandbox is the right approach, but although he has some ideas for object capability based security for the post squeak Newspeak implementation it seems a long way off.
The highlight on Wednesday was definitely Lars Bak’s talk on V8, which I had missed last year at JAOO. The mechanism for discovering emergent types in dynamic languages to allow indexed lookup instead of hash table lookup is a very nice hack. Lar’s super competitive heckling of everyone at Microsoft for the rest of the day was also fun. Other highlights included Erik Meijer throwing coins around while talking about mathematical duality and Amanda Lauter and Luke Hoban talking about F#. Potentially relevant to Linden Lab if we get to the point where we can support debugging scripts in Second Life was Herman Venter’s talk on the Common Compiler Infrastructure a newly open sourced library which can allow CLI assembly rewriting while preserving debug information.
The Meta Introduction to Domain Specific Languages was a really good opening for the DevCon, but the talk most relevant to Second Life was Paul Cowan talking about DSLs in the Horn Package Manager. Paul talked about creating DSLs by extending Boo, something that should be possible when we get to the point where Second Life can accept arbitrary CLI assemblies. I got a first Boo script compiling against the Second Life assemblies at the DevCon and have some plans to experiment building a DSL for virtual ecosystems in Second Life over the next few weeks. Supporting C# as a general purpose language and Boo as a meta language for building DSLs in Second Life would be an excellent combination.
A lot of the talks at the DevCon seemed to involve doing terrifying language somersaults to create more natural DSLs that run on the JVM or CLI which then can’t be easily debugged due to the huge chained expressions or nested types that the languages boil down to. There seems to be a large opportunity for disaster here when these DSLs need to be extended or maintained in 10 years time after the original authors have moved on. Although Martin deflected a lot of these questions by saying you can get bad frameworks as easily as bad DSLs, I feel a lot more comfortable unpicking a bad framework or wrapping a library than trying to fix or extend a broken language (maybe several years reimplementing LSL’s quirks did that).
The ultimate promise of DSLs was hinted at by Magnus Christerson’s talk which demoed Intentional’s amazing Domain Workbench. Instead of building DSLs on top of mainstream runtimes, the Domain Workbench models the domain and can then project the model as code or using domain specific projections like interactive circuit diagrams that can be manipulated and debugged interactively. Magnus started his talk saying that we used to have to enter programs on punch cards that evolved in to sequential programs and that we don’t need to do that any more. If the Domain Workbench’s promise is fulfilled it could change the way we develop software forever.