Walking on a tight rope with the SL client

Imprudence is here. Oh yes, it’s Yet Another Second Life® Client, interestingly released a bit before Linden Lab announced a new Release Candidate for the “official” viewer (or, rather, they didn’t exactly announce it; we have to rely on old faithful Tateru Nino to fish the news for us and publish the release notes, since LL lately seems to “forget” to announce those things).

With a team lead by Jacek Antonelli, Imprudence has quite a different goal than the many other SL clients around there. Most focus on stability (from the days of the Nicholaz viewer and its many spin-offs) or sometimes on making the SL client a bit more useful (like perhaps the OnRez viewer, if you like their style).

Imprudence, like its name promises, has none to do with “stability” or “bug fixing” (although it does include most of the Nicholaz patches, as well as several bug fixes whose code was ages ago submitted to LL’s public JIRA but that LL never managed to incorporate into their viewer, for reasons unknown). It’s about bleeding edge technology, and a completely new user interface — one that is designed for veteran residents, not clueless newbies, who need powerful tools to build and programme in SL, not a crippled-down version.

So Imprudence is not “another SL client for the masses”. It’s the SL client of choice for the techies; for the geeks; for the nerds; for the artistes; and for everyone who likes to live dangerously in Second Life. You might think of it as the Harley-Davidson of Second Life clients: it’s way cool and powerful, and you’ll be dressing in leather jackets and wear spiky armbands while using it.

Not legally imprudent

Understanding that this is the first release, when you first launch Imprudence, you’ll immediately notice two things: a different font than the usual one you’re familiar with on the whole range of SL clients, and no sound whatsoever, as well as no voice. Why?

Imprudence might be bleeding edge, but it doesn’t violate any copyrighted or non-open-source-licensed material. Linden Lab has done a thorough job of cleaning up the licensed libraries of the client (allegedly, this was one of the major reasons for not releasing the source code of the SL client before 2007), but not all. The first problem was with the JPEG2000 library — the SL client uses a super-fast, proprietary library (Kakadu) for doing that, but the source code allows plugging in OpenJPEG, which can be up to 5 times slower, a problem when viewing streamed textures (you’ll see that Imprudence neatly compensates that by being much faster on some areas, and you won’t notice a difference). The second problem was audio: right now, the spaghetti code of LL’s viewer uses hooks sprinkled around the code to call a proprietary sound library (FMOD), and the Imprudence team has been working very hard on porting everything to use OpenAL instead. They’ll get there soon — Jacek announced that the next release of Imprudence will already have most audio features back. And finally, the font. The “FF Meta Book LF” and “FF Meta Bold LF” fonts familiar to SL users cost €40 or so for personal use, but €3000/year if you wish to license it for distribution with the SL client — a cost that LL was willing to pay, but, of course, an open source project like Imprudence would hardly spend that much for, well, basically a font which is not exactly the nicest in the world. They opted to use a set of free fonts, Liberation Sans and Bitstream Vera Mono instead. Frankly, they’re more legible.

And, of course, the Vivox (proprietary) voice application had to be dropped as well. Although Vivox is apparently very willing to talk to open source teams to help to integrate their application with open source SL clients, and one can only wonder if Jacek and her team will approach them, too.

So you might ask, why bother, if everybody else (yes, even the Electric Sheep Company!) simply don’t care about the licensing issues. Well, that’s actually their problem. With Imprudence, you can rest assured that each and every component is unencumbered by any kind of licensing that might prevent you to enjoy an open source SL client. Imprudence is aiming for a large user base, making it very visible under the public eye, and this means being very careful with the licensing issues. Imprudence in the code, yes, but not on the legal issues.

Speed, performance, bleeding edge

The Imprudence experience was for me very weird. Whenever I run around a sim with Imprudence, it looks like my frame rate is in the upper 30+ or so, because everything is so smooth. Textures load insanely fast, in spite of the theoretical slowdown due to the OpenJPEG library (Tateru reports the same experience: you don’t really notice any slowdown, although you should). Was it a good day at the grid, or is Imprudence so much better? I have no idea — loading up the Statistics box, it shows pretty much the same performance as with LL’s official client. But it certainly doesn’t look that way. The weird issues on Macs with ATI cards, when you suddenly zoom out and the camera freezes and crashes SL (or even the Mac), are totally gone.

Why?

Some people have suggested two or three reasons for the huge improvements. First, of course, Imprudence actually implements some of the more serious bugs and fixes, through the Nicholaz patches, several of the unapplied Jacek patches lying around on the JIRA, and even more fixes coming from the team members and other contributors. Perhaps the combination of all those fixes really does wonders for performance and stability (one can hardly understand why LL takes months or even years to apply those patches, some of which have been around since 2007 at least…). The second reason might be the lack of audio, which in some sense ought to improve something (audio in SL is of course spatial, meaning that some complex calculations have to be done, and removing those will mean more CPU slots to run rendering code). And the third reason is that I suspect that Imprudence doesn’t send so much “statistical data” back to LL.

The latter might actually be frightfully more than we usually imagine (LL fully assumes that a lot of data is going back to their servers; the new 1.22 Release Candidate even has new settings to tweak the amount of data sent). Yes, of course, we want LL to capture statistical data to improve their client. But how much is “too much”?

I have no clue, but… I can certainly make an analogy. Step into a texture-intensive sim which is empty except for you, and one with few scripting (just lots of prims and textures). Now stand still and watch the statistics box. At the beginning, as prim data and textures are streamed to your SL client, the bandwidth consumption will peak for several minutes, until everything is loaded. Then, usually, it goes down until it reaches a minimum.

What is that minimum? Depending on the sim you are, you’ll see from 12Kbps to the usual 30Kbps or so. This is the “least” bandwidth that SL will consume, all the time, even if you’re not doing anything. Well, you definitely are doing something, at least from LL’s servers’ viewpoint: you’re an avatar on a server, using server CPU, even if you’re not moving or rotating the camera. The physics engine at least will be calculating your position relatively to the prim (or bit of ground) you’re standing on. The mapping thingies will be tracking your position inside the sim’s coordinates. And, of course, some statistical data is being sent to SL about your avatar and SL client performance. So something is still going on, even if no more textures or prims (or inventory!) needs to be loaded.

Do the same test — with the same content! — inside an OpenSim, and watch the statistics box drop your bandwidth to… zero. Yes, zero. Once everything (inventory, prims, textures) is in your computer’s cache, you aren’t loading anything else, and no bandwidth consumption is needed. OpenSim really consumes zero Kbps when you’re standing still and have downloaded all content. And this is with the same SL client.

Now I can imagine that the open source code for the SL client might have much less “statistics” built-in, and this would explain why most SL viewers built from LL’s release open source code use much less bandwidth overall. And, of course, this bandwidth is being used for “something”. There are bits of code processing “something” on your SL client which gets sent — or received — through your connection. Remove those bits, and the SL client will run faster.

Then again, I also know that a lot of things are much more perception than actual facts. With Imprudence, everything seems much smoother and faster overall, but the statistics bar doesn’t agree with the perception. The example on the picture shows what I mean. With all graphic proprieties set to full, on a relatively-intensely-textured sim (alphas all the way until the horizon!) my poor iMac struggles with 5 FPS. The same happens both with the SL client and the Imprudence client. However, the huge difference is in how I move. With the SL client, everything is sluggish; I get hiccups all the time; moving around is painful; detaching the camera is even worse; sometimes the water disappears on one frame (and if you just get 5 FPS you will notice that!) as SL recalculates the reflections and displays them again — giving you another hiccup. Moving around with precision at 5 FPS with all graphical options on is a nightmare — you can do it for taking pictures (which was my point really) but not anything more. And oh, did I mention that you should not move the camera around very quickly, or it’ll all crash?

Enter Imprudence. In a sense, it feels just like 2004 again — when I had no clue where the Preferences box was, and got 3 FPS with my “untuned” 2003 PowerBook G4 (these days, with a bit of tuning, that insanely old machine can easily do 15 FPS). Well, “life at 3 FPS” was certainly possible — you’d see the animations quite a bit slower, of course, but overall, you could navigate around (except on sims with a lot of avatars) easily enough. Building was possible. A serious case of heavy lag was getting 0.3 FPS on some of the clubs, when it was impossible to use SL at all. 3 FPS was actually quite good!

These days, 5 FPS with the regular SL client is totally worthless.

But not so with Imprudence! For taking that picture, I could normally walk around, twist the camera, zoom in and out, move just tiny microsteps to make sure I got the angle right — all with the graphics settings on Ultra. I had no problems at all. In fact, I thought I was getting 15-20 FPS or so, since it was so smooth, the animations played flawlessly, and SL was immensely responsive to my navigation! I was doubly-shocked — first, for having the perception of getting three or four times the performance; secondly, for taking a look at the statistics box and noticing that, after all, I was getting about the same amount of FPS. It just felt much faster!

What exactly causes this reaction is beyond me. Again, I have only one explanation: the slower SL is, the more information it sends to LL saying “I’m slow! I’m slow!”, thus making SL even slower. Back in 2004/5, LL captured relatively little information, so 3-5 FPS was “usable”. Imprudence gives us back a reasonable experience at low framerates, just like the SL client used to do in the past.

So… download Imprudence and walk straight into your favourite, laggy club 🙂 You’ll be watching the statistics and be disappointed when you notice there is not such a great difference in FPS. But suddenly you notice that people around you are not gray (or cloudies!), that you can see their animations, that all textures have loaded after a while, and hey, see, you can even move around and chat at will, and the lag simply doesn’t seem to be there! (Well of course it is — you’ll be still having 3-5 FPS — but at least you can do something with those 3-5 FPS!)

And, of course, my personal experience might just be due to the grid behaving unusually well for a change. After all, that sometimes happens 🙂

It’s not for everybody

Many people will download Imprudence, and, well, be impatient with it. The usual “first” complain is that it takes an awful lot of time to start the first time (specially on the Mac version) and that “it crashes a lot”. It’s possible. I have been reading the same reports for all kinds of non-LL clients: the first time you use it, it’s far more “crashier” than the regular SL client. There isn’t really a reason for that — except, as Jacek notices on the Imprudence Viewer blog, that you might be reading stale entries from the cache, if you happen to use the same directory (which is very likely). Still, if you’re looking for a super-stable SL client, Imprudence is not for you.

When helping out new SL users, I came to conclusion that most problems they have with SL is not because of the client at all — but because their computers are improperly configured. When I tell that to them, they get furious. And usually the answer is “I use the application/game from X and it always works fine, it’s only SL that crashes!”. Well, I’m sympathetic to that answer — after all, the vast majority of computer users do not want to tweak their computers all the time, but turn them on and use them. It’s like the difference about owning a car and being a car mechanic. You just wish to step on the pedal and hope that the engine pulls your car around. “Maintenance” is something for the car-techies, not for the common users.

With the regular SL client, LL’s technology is pushing the limits of what your computer actually can do. And some obviously are not able to give you adequate capabilities to run SL properly — not without some “manual” help from the user, who has to delve deep into the operating system, the configuration toolboxes, and the many parameters (both of your graphics card and the SL client) to find out a combination that actually works well. This is definitely not a task for a beginner or a casual computer user; worse, it’s not even something for a regular, mainstream user.

Games and application developers are aware of this, and place the burden of figuring out the proper configuration on the software itself. Things get more complicated if you wish to support a vast range of different hardware and even operating systems. Linden Lab has done a rather good job of it, in my humble opinion, but it’s not a perfect job. For instance, my MacBook (not Pro) has a nasty Intel graphics card, the bane of all 3D engine software developers. The first time I launched SL on it I got 0.3 FPS! Then it was tweaking time — and by chance I unchecked the WindLight shaders. As if by magic, FPS jumped from 0.3 to 30 — a hundredfold increase in raw rendering power! Such “magic” is possible if you’re willing to spend a lot of time tweaking your computer, but it’s not for the faint of heart: it really means understanding very thoroughly how your computer really works (for instance, I have an application called “LaunchCFMApp” consuming 450 MBytes on my MacBook; is it safe to shut it down or not? The answer in my case is “yes”, but it’s far from obvious why it’s safe to kill it).

Now, Linden Lab goes the route of trying to self-configure a “best choice” based on the hardware and software the SL client finds running on your computer. And as so many people very well know, often the SL client does poor guesswork (there are simply too many possible combinations out there!), and you have to give it a little hand.

Imprudence goes way further than that. It will assume that you’re not afraid to tweak your computer in search of the best combination of performance and features. Without tweaking and being patient, you can get lots of crashes at the start — before you finally get something that runs better than LL’s own SL client. In my case, I just “needed” to crash once 🙂 (allegedly the Imprudence Mac client takes a long time to sort through the existing cache and might fail the first time it runs) and all went fine from there on. But how many of the thousand residents downloading Imprudence for the first time gave up after a few minutes?

So, if you’re willing to test Imprudence, be forewarned: you have to be a little more patient than with the SL client. Imprudence is for the bleeding edge users, not for the mainstream.

So where are the User Interface improvements?

At first sight, Imprudence just looks like the regular client, with very minor tweaks. You’ll immediately notice the different font, of course. And the many windows are more transparent than the regular SL client — good for building, since you’ll see more through them, but a little harder to read chat on the History window. Besides that, the small changes are almost unnoticeable. Lordfly Digeridoo reported that there is a cool trick that allows you to fix permissions on a complex building, but I haven’t been able to find it on the release notes. Most of the “improvements” are “under the hood” really.

The real fun starts from now on. This first “release candidate” is basically a starting point for a new series of a specific SL client. Only if you went through the pain of creating that “starting point” you’ll understand why it can take two and a half months until you can start producing your first set of SL clients. It’s anything but easy to do! Granted, a lot of people on the Imprudence team have tons of experience playing around with the SL client, but one thing is to compile it for your own personal use, the other is to release a public version for it. This is just the first public version.

Jacek regularly posts on the Imprudence Viewer blog about the forthcoming UI features. Imprudence’s most interesting promises are actually on that side: slowly turning the SL client into something with a useful interface. Not a crippled-down version of SL — a “SL Lite”, as LL apparently is developing — but a SL client that actually gets the interface right, for veteran users (newbies, of course, will always benefit from an interface that makes sense). This is no easy task.

You might have noticed that people like Rheta Shan, who has contributed a new design for the SL client’s UI, are part of the Imprudence team as well. So we’ll really see some big changes over time.

But the whole point of Imprudence is that change is good and should happen quickly. As you can read on the Imprudence Manifesto, they have listed the major reasons for Linden Lab’s lack of dramatic improvement. Just think how many people would complain if the Inventory tools changed! Or, well, you remember the drama around the new “Silver” skin, even if it’s not a mandatory change (I personally like it much better, but it’s really a question of personal taste). So LL stopped the “radical changes” with, oh, version 1.2 or so. The SL client still looks quite similar to that old June 2004 version, after all.

The Imprudence team has no fear of changes, and this obviously also means that it’s a SL client designed for the bold, reckless, and fearless residents, who wish to embrace change instead of getting stuck to the “old look and feel” which LL will hardly ever change. After all, they’re just copying the best examples in the industry. Look at Word 97 and its latest incarnation: you’ll find most of the menu items similar. Granted, there is a new toolbar now, but really, the application hasn’t changed a lot. You can say the same about, say, Adobe Photoshop — I have often to look at the About box to have a clue why some options are missing, all versions look the same to me. And the greatest unchanging interface is very likely Mac OS X — born in late 1999 (or was it early 2000?), it looks exactly the same — not even Microsoft is such a traditionalist.

So Linden Lab is going the path of those “traditionalist” applications out there. Oh, we did this wrong? Tough luck — now people are used to it, we won’t change it, even if it’s pretty obvious we could improve everything. Typical things which will very likely never change is, for instance, the “Pie Menu”, even if LL might still shuffle options around, and one day allow us to add more options (besides changing the names for the “Sit” and “Touch” slices). But the Pie Menu will stay. And so will a lot of many other interface options.

It’s up to Imprudence to get rid of those preconceptions and totally transform the UI, just because they can, and mostly because they’ll attract a huge proportion of SL residents that are more than tired with the cumbersome and user-unfriendly look and feel of the SL client.

A project such as Imprudence was long due for all of us who are really tired about the “stability mantra” (when the result, as we have seen, is that the stability doesn’t change that much across SL client versions; on the other hand, server software changes and network upgrades on LL’s co-location facilities do wonders for stability). Back in the early days of SL, LL tended to have a development cycle where they focused on new features for half a year, and then spent the rest of the year improving stability. These days are long gone: now it’s only stability, stability, and more stability — oh, and sometimes a performance increase here and there. But the new features are dumped out of the window. The list of “half-done features” is endless: starting with more groups, the Group Tools 2.0 (announced in, uh, 2006?), a better inventory interface, better IM tools, redesigning the Build tools, and much simpler things like sharing WindLight preferences with other residents. LL will probably do all of that — in the far future, when SL is “stable enough”.

In my view, however, the SL client will never be “stable enough” — that’s just wishful thinking, and, granted, a goal which looks nice on LL’s manifestos and blog articles to “appease the masses”. Stagnation — losing the spirit of change — rarely, if ever, brings innovation. Radical thoughts and massive changes might have a much bumpier ride, but sometimes they give an incredible boost of performance (and even stability!) just because things are done in a completely different way. Alas, the ride is definitely not a smooth one.

But I’m really so happy that the Imprudence team is willing to go that way 🙂 My sincere thanks, best wishes, and congratulations for being bold and reckless.

/me puts her leather jacket on and revvs up her Harley