Imprudence is OpenSim’s IE6

No more Imp!If you’d asked me just a year ago if I’d tell people not to use Imprudence on OSgrid, I’d have thought you were joking. Never was there a better viewer for OpenSimulator; Team Purple made a significant effort to make quite certain that OpenSim support on Imprudence was second to none. It has been officially endorsed by OSgrid admins and offered as a premier download on OSgrid’s download page. For the vast majority of regions on OSgrid, usage of Imprudence 1.3 or newer easily accounts for at least half of all visitors. People are used to using it, and it fits like a very comfortable glove. I was, and still remain, a very vocal cheerleader for Imprudence as a stellar example of a third party viewer that was done right, with the utmost professionalism.

The problem is, it’s old. Imprudence hasn’t seen any updates at all since September of 2011, the last actual full non-beta release was 18 months ago now, and no new updates are anywhere in sight. Development on it currently seems moribund. Even if it comes back to life, the backlog of improvements necessary to once again make it a first class viewer in terms of features has grown quite long, and will just keep getting longer. There have been 38 (thirty-eight!) official releases of the LL viewer since the 1.23 code-base that Imprudence is based on.  That’s an awful lot of bug fixes and refinements. And that’s not taking into consideration non-official third party features that have since been created.

It has gotten to the point where Imprudence is holding us back. There have been some very nice features introduced that some content creators are hesitant (or just unable) to embrace because they fear that Imprudence users won’t be able to use them. Some new features make life quite a bit easier for users in terms of managing inventory, clothing, or privacy. A few examples of just some of the major features are:

  • Shared media (web integration and javascript)
  • Multiple attachments per attach point
  • New attachment points for the neck and root
  • Multiple wearables
  • Mesh support
  • Deferred lighting and shadows
  • Ambient Occlusion
  • Depth of Field
  • Display Name support
  • Parcel Invisiblity
  • Direct Delivery

Some of these are a bit SL-centric. Display names and Direct Delivery are unlikely to come to OSgrid or OpenSim very soon. And a few of these, like multiple attachments per point are not yet supported by OpenSim, but should be soonish.

Other features people will point to as being too slow. This is, frankly, complete nonsense. Windlight suffered from the same claim, with just as much substance. If you disable shadows, AO, and DOF in a newer viewer, what you’ll wind up with is a Windlight capable viewer just like Imprudence, only with a newer, faster, improved renderer. The only real technical reason for a user to be unable to run a newer viewer that I know of is that since the 2.7.1 codebase, SSE2 support is required in the CPU. But this has been supported in all AMD and Intel CPUs since about 2003 (nearly a decade!). If a user’s computer is that old, it is unlikely that even Imprudence barely runs. And if you happen to think mesh is too slow, then you really need to read the article written on Raz’s Blog that clears up a lot of the myths that keep circulating. Mesh is often much faster than an equivalent prim build for a number of reasons.

Things like deferred lighting really, really improve the experience. Content creators are stuck designing for an out of date look. Lights are much brighter, numerous, and more effective in newer viewers. They make a major impact in an environment in terms of ambiance. Shiny also looks different, and much, much more realistic on my opinion. Imprudence actually has some support for this if you know where to look, but it has a very old and out of date version of shadows and lighting, and it’s not at all stable. The viewer renderer has improved immensely since Imprudence’s last release, not just in that it can make things look better, but it terms of speed and stability.

I’m a little puzzled at how anyone could not want multiple attachments per point. Once you use this, you wonder how you ever lived without it. Justin Clark Casey has begun work on supporting this on a development branch of OpenSim, and Imprudence won’t be able to use it.

What’s more, LL has made it clear that soon any 1.23 based viewer is going to be obsoleted by plans to redo how avatar baking is done over in SL. Right now, baking is done on the viewer, which is then sent to the simulator and then relayed to other avatars. LL plans to instead do avatar baking server-side in an attempt or increase reliability and efficiency. You will still be able to use a 1.23 based viewer, but be ready to see everyone as gray. It is a safe bet that OpenSim will soon follow suit in an effort to retain compatibility.

I really understand the love Imprudence gets from users of OpenSim and OSgrid. It deserves that love! But it’s holding us back, and it’s old. It’s time to start exploring the many available alternatives, a few of which include Singularity, Firestorm, Zen, or Teapot. Yes, these are different from Imprudence, and make for a change you’ll have to get used to. But Imprudence is the past. It isn’t joining us in the future. Change in this circumstance is good, and we’ll do ourselves a favor to fumble just a little but with an interface that’s a bit different until we’re accustomed to it. The fumbling won’t last long, and in just a little while you’ll wonder why you waited so long.

Advertisements

4 thoughts on “Imprudence is OpenSim’s IE6

  1. I use it a lot for development and many times, for trips to OSGrid. V3 based viewers are the future – the improvements are massive and have drawn almost, if not all the development in recent months. Unfortunately we don’t yet have the infrastructure to fully support the V3 viewer, but work has been going on for a while to change this.

    The V3 viewer has all those things that we see. But, a lot of other important things are under the hood. In the V1 based viewers, all the dialogs were fixed and just required a little data be sent back for the viewer to complete the form. Then the viewer uses that to create the dialog – profiles, group, search, etc. The V3 has changed all of that by using webapps to do these things. And a lot of people don’t care too much for that because it’s not familiar. But, this is the beauty of it all.

    I started working on V3 code to take parameters in the login response to set urls for an OpenSim grid’s profile server. It wasn’t too hard to put it into wither the viewer or OpenSim. But, I was aware of the level of integration that is required to build the support needed to interact with the viewer. Presently, most of this integration is done by directly tying into the database. This is a bad practive for several reasons, and the main one is that almost every project duplicates the work of others and kills a lot of time. So, I have been putting my efforts into making things easier to develop this infrastructure directly against the Robust server. I want to help create some API to build these against. Then we can build libraries in popular languages to build these services into our favorite CMS.

    This will also help with integration on the OpenSim side by letting us use the same database migrations and facilities used in our Robust and OpenSim servers. Also this adds a feature that lets us subscribe to remote repositories and load plugins for the API from those, as well as load locally. I pushed the work to a branch a few days ago, then had some discussions in email and IRC. It seems that we will be taking this work into the infrastructure of Robust, and probably OpenSim so all our modules can have these features. You can see some console interaction on my blog @ http://bluewallvirtual.com/node/47

    As soon as that is stable, we will need to publish example modules and documentation for the APIs so we can get this infrastructure built. I’m ready for V3 100%, Ohh. I forgot about the web apps. We should be able to create applications using new OAuth technology in out webapps so we can plugin and play from external sites into our “profile”. Huge fun is on the way.

    BlueWall

    PS: Armin Weatherwax, a key developer of Imprudence is working on Teapot V3 viewer. He is also working on Firestorm and will be doing the work to bring an OpenSiim version to us. Any adventurous souls can get his viewer and try it out, giving feedback, I will be doing work with it to get these things working on the OpenSim side too. Tnx!

    • Thanks so much for the insights and info, Bluewall! 🙂 I agree that people seriously underestimate just how powerful and transformative things like web-based profiles and search can be. They provide a very real opportunity for OpenSim to innovate in ways LL has chosen not to, and for platforms that make use of OpenSim to display the information that’s most important to them and their users. It’s really exciting stuff!

      As for Armin, I’m a huge fan of his, and totally agree people should support his Teapot viewer, which in turn will act as a testbed for OpenSim focused things in Firestorm. User participation and passion were part of what made Imprudence great, and that same energy can really help us acquire the next great OpenSim viewer.

  2. To the best of my knowledge, people I know that swear by Imprudence are mostly builders who still hate the V2/V3 look and feel, and work on the misguided assumption that the latest viewers are “too slow”. I have argued precisely against the opposite. With the latest 3.3 series, the new viewers are at least three times faster than Imprudence in terms of FPS, with the same settings (turning off WindLight, as you suggested), and I get this experience consistently even on very old hardware. Putting into other words: yes, the first generation of the V2 viewers might have been slower at some point, but this is nowhere near the truth these days.

    On the other hand, your comparison between Imprudence and IE6 still holds. People dislike the new V2/3 UI (which is not “new” any more… we have it for a couple of years now… it’s just different!) and this will make them fall back to Imprudence. A year ago, the justification was that “too few people use the v2/v3 viewers so we need to build content for those who use v1-based viewers”. Today, the justification is “the v3 UI is too awkward for serious builders to build”. There will always be new justifications to keep the v1-based viewers around. Ironically, for 7 or 8 years, we all were united behind the idea that the SL Viewer UI was a catastrophically bad. These days, the v1-based defenders seem to love it — while turning their hate to the v2/v3 UI. It’s interesting to see how short people’s memories are, and what strange reasoning they employ to justify their irrationality.

    I have no idea what happened to the Imprudence folk. I was looking forward to a Imprudence-like v3 viewer: Kokua. But apparently, after a first “early alpha release” work stopped again. There is an exceptionally good argument for using Imprudence and or Kokua — it is, to the best of my knowledge, the only viewer that has stripped out all “proprietary” (i.e. non-open-source) bits of the code. This is no mean feat! All other viewers that I’m aware of will use LL’s code (or code from other third parties) here and there (except perhaps for Radegast), which means license troubles ahead if someday LL’s policies change. Imprudence has no such problems. I remember Jacek explaining how her team (when it was still her team!) would stumble across a block of innocent-looking code, raised the doubt that perhaps some of the lines of that code was not 100% licensed as open source, and just rewrote them to make sure. This is the spirit that gave us a free and open source Unix (e.g. the GNU tools/application layer/whatever you wish to call it that are today used on top of Linux, FreeBSD, and Mac OS X): look at the original code, raise an eyebrow if it “looks” proprietary, rewrite the code again so that there is no doubt about the license any more, test it to make sure the application continues to work in the intended way.

    Well, this is what the Imprudence team has been doing so far, and that’s why they take so long in developing code. It’s not just having the enthusiasm to port all the “latest & greatest” features: it’s to make sure that they can distribute Imprudence without licensing issues. Ever.

    Now, the average user doesn’t really care about that. After all, LL is not “going after” most TPVs (specially the approved ones) and is fine with the careless way different licenses are used. I guess that their philosophy is simple: if forbidding someone to use a TPV will make LL lose a customer, then it’s better to keep a few customers happy instead of going after the TPV developers. And, who knows, maybe the TPV developers come up with clever new ideas. Which they do, of course. All the time. They just get ignored by LL… but that’s another story.

    Anyway, I’m fond of using Imprudence too when I connect to OpenSim grids. But recently, well, using mesh becomes imperative. In my case, I have always used OpenSim grids to upload and test content — where it’s for free — and then to have it uploaded it to Second Life, when all is finished. In recent times I cannot avoid to evaluate meshes built by my team. So I had to drop Imprudence.

    On the other hand, I found a precious little gem which attempts the impossible — and succeeds: it’s the Cool VL Viewer, an old effort (five years in development!) to incorporate all (or most) of the v2/v3 functionality on top of the v1 UI for the ones that cannot live without the v1 UI. Cool VL Viewer fully supports meshes, display names, multiple attachment points, alpha layers, tattoo layers, and all those innovations that came on v3. It’s amazing how Henri Beauchamp managed to do all that on top of v1, which is supposed to be “impossible”. He proved otherwise! So for the v1 die-hard lovers, I’d say that Cool VL Viewer is like IE7 — the same look & feel as IE6, but more compatible with what the rest of the world sees 🙂 It’s worth a try…

    Ironically, I had a recent discussion with an eight-year-old resident who only uses Imprudence for her building work. She was complaining about how the texturing is applied on the “large” prims (i.e. all bigger than 10x10x10), because it was tricky to get shadows pre-baked on the edges of prims, a trick most builders have been using for the past few years to address the limitations of the old v1 viewers, who render everything as if it’s made out of flat plastic. I told her that she didn’t need to worry: the v3 renderer has a different lighting system which makes shadow pre-baking pretty much irrelevant, even if people don’t turn full shadows on. At this I just got 15 minutes of ranting on how content builders cannot assume that everybody has their settings “right” or that everybody is using v3, and she has to make sure that her content looks right everywhere… so she continues to use Imprudence for all her work, and occasionally switch to a standard v3 viewer to upload meshes (yes, even on OpenSim), but falls back to Imprudence to do “real building work”, which she claims to be impossible on a v3 viewer. So, well, that’s the kind of arguments we get.

    In a way, I’m almost happy to know that the 1.23-based viewers will soon be unable to log in to Second Life any more, and that OpenSim will very likely have to start to emulate the new login procedures (and the move to HTTP capabilities for pretty much everything except positioning data) which will make most 1.23-based viewers unable to login (with perhaps the exception of Cool VL Viewer, since Henri seems determined to push the old codebase to incredible limits…). This will simply make sure that everybody has the latest renderer installed — no matter what viewer they actually use — and content creators will have no choice but to design content for whatever the majority of people are using. There is really a big difference: so many of the “old” tricks to aim for “more realism” are unnecessary under the new viewer.

    Again, it’s like writing awkward HTML4 to make sure IE6 users still manage to see a good-looking web page, when we should forget all about these die-hard IE6 lovers (who are so few anyway) and just jump straight into HTML5 to design better pages which take far less time to load…

    • Thanks Gwyneth, excellent points. 🙂 I skipped V2 for the most part when it came to my personal use. I definitely tried to use it, but it kept annoying me in pretty fantastic ways. Once V3 got FUI, though, the viewer once again became quite usable, and I haven’t used Imprudence to do more than the the quick login of an alt or something since.

      I’ve heard people complain about building with V3 too, and I’m not actually sure I understand why. Perhaps my building workflow is quite different from theirs, but it works for me exactly as it did in V1. I make immense use of the keyboard shortcuts, so that might have something to do with it.

      I don’t honestly know for sure what’s up with Kokua. My brutal evaluation is that it lacks commitment from the developers of Team Purple. The only person I actually ever saw working on it was Nicky Perian. That doesn’t mean the others haven’t done anything, it is just that if they have it hasn’t been terribly visible. They did maybe 5 or 6 beta releases last I checked, and there was not so much as a peep from their blog. The forums that used to be so active are now basically dead. The IRC channel is filled with the sound of crickets. I really, really wanted that viewer to go somewhere and to support it. I really wanted a V3 viewer with all of the conscientious attention to detail and commitment to open source that Imprudence had. But for right now I’ve given up on Kokua.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s