Archive for the 'Imprudence' Category

Why doesn’t Imprudence have multilayers, inventory links, or mesh rendering?

Other viewers have them, so why don’t we? Why would a developer purposefully avoid such useful features–ones that users clearly want?

The answer is something of a mixed bag, and to get into it I’ll first have to explain a little bit about licensing and how licensing works. If you already know this stuff, please bear with me as I’ll get to my point soon.

As many of you know, Imprudence is licensed under the GPLv2+FLOSS Exceptions. The GPL is basically a software license that allows for free and open code. It’s because of this that we can easily share our code and incorporate others’ code in turn. Even so, the GPL doesn’t allow us to do whatever we want. There are certain restrictions, such as:

  • You cannot change the license of any line of code unless you are the original author, you hold copyright on that code, or the license permits it. When we get a patch submission, the author must license their code in a compatible fashion.
  • You may not distribute works based on GPL code that violate any part of the GPL itself. Doing so leaves you open to legal action.

So, how does that impact us, exactly? Imprudence is opensource. Second Life is opensource. Why can’t they work together? Here’s where the restrictions of the GPL come in: a bit over a year ago, Linden Lab decided to change the license for the Second Life viewer from GPL+Exceptions to LGPL–a similar-sounding but ultimately different license. While the LGPL is compatible with the old license, there’s no way to go from LGPL to GPL+Exceptions. This put a massive hurdle in our way as far as porting features from the Second Life.

For example, say someone submits a viewer 2/3-based patch to Imprudence.

While the GPL and LGPL are considered compatible licenses, we don’t own the copyright on the LGPL code submitted to us. Thus, we cannot change the license of that source to include exceptions. Whatever code was licensed as LGPL must stay LGPL (or equivalent) and that distinction must always be made clear wherever that code is used.

This might not sound like much of a hurdle (and at times it isn’t–we switched over to the LGPL version of our Quicktime plugin ages ago) but consider the Inventory Links patch that’s currently in most other viewers. It contains ~43K lines of code, and is made up of an unknown mix of GPL+Exceptions viewer 1 code and LGPL viewer 2 code. The two licenses are not made distinct, so the patch is clearly a violation. There’s no way we could legally use it as is.

However, if we could figure out which lines are compatible with Viewer 1 and which ones are compatible with Viewer 2, we could add the appropriate licensing and include the patch. Needless to say, this has felt like a daunting task to us, especially when we’ve been more focused on bug fixes and finalizing 1.4.0 (if you’re using 1.4 and aren’t on beta 2, I strongly recommend upgrading) as far as Imprudence goes. But, these are features you guys need. We want to include them.

My plan is to start looking at these patches one by one and sorting out which lines we can use and which lines need refactoring. As I mentioned in a comment on the beta 2 post, any volunteers who can help us with this process are welcome. Codie and I will be starting on this later tonight, and we’ll see how far we get. If you’d like to join us, please email me at and I’ll tell you what you can do.

You might find yourself asking, why go through so much effort for something like a little licensing issue? Why be so concerned when the author of the patch didn’t seem to be?

Our answer has always been–almost from the project’s inception–that while sometimes doing things the right way isn’t easy, these concerns are important to us. It’s thanks to licenses like the GPL, as well as the rules that accompany them, that opensource software has matured to the level it has today. Free and open software gave us the ability to start Imprudence (and later Kokua). We feel an obligation to respect that.

Anyway, I hope this clarifies for people where we’re coming from, and why we’ve done some of the things we have.

EDIT: I’ve updated this post a bit to try to make things clearer.

Imprudence 1.4.0 beta 2 Released

It is with great joy that we bring you Imprudence 1.4.0 Beta 2. This release contains a very large number of stability fixes especially for Windows machines. We also fixed several bugs with the audio subsystem and replaced the old flaky Windows installer.

IMPORTANT: Unfortunately those fixes does not include streaming for Macs, as we are currently out of a regular Mac developer. This build does NOT include Henri Beauchamp’s mesh patches either, as Imprudence is feature frozen. We are currently discussing the possibilities but are really focusing on Kokua’s next release for now, which will bring mesh support anyways.

If you need help with the viewer, please see our Support page. If you find a bug and want us to fix it, please follow our Reporting a bug guide.


This build is mostly about bug fixes, you can view the entire list here: Commit list


  • Selective cache clearing: now you can selectively delete different types of disk cache separately.


Builds for other platforms should be released soon, thanks for your patience.



IMPORTANT: Server side issue on SL grid breaks map, edit and visibility rights

In order to prevent a few bug reports, we would like everyone to read this JIRA explaining the issue. Basically, most TPV viewers are affected by a bug that prevents from setting map, edit and visibility rights from your friendlist. This only occurs on the SecondLife grid and doesn’t affect other grids. It’s unfortunately out of our control, and also affects most other TPVs. The JIRA issue is marked “Fix Pending” so we can expect that to be repaired on the next Sim rollout by the Lindens.

NOTE: This won’t affect permissions ALREADY granted to users before that bug occured. Those who already had those types of rights set up will still have it working.

JIRA SVC-7104: Granting/revoking perms broken for non-web-profile viewers

Thanks for your patience.


Codie, Community Liaison for Imprudence

Imprudence 1.4 Windows Beta Test Build

AKA “Beta 1½”.

This is a special Windows-only test release to address some specific issues before we release beta 2. If you use it, I’d appreciate it if you’d comment on this post if any of the following don’t work for you:

  1. Imprudence always installs and runs on XP.
  2. Inworld audio always works (except on parcels where restrict sounds is checked. See #819). You can verify this by checking your audio driver in Help >About Imprudence.
  3. Prims don’t turn invisible when they shouldn’t. If you find prims suddenly turn invisible (but are still selectable), please comment here with an SLURL and your draw distance so we can investigate.


This will default install as an “Experimental” build. You shouldn’t have any problems running it side-by-side with 1.4 beta 1.

As far as release notes go, it’s mainly the above along with:

  • Numerous crash fixes.
  • In particular, preferences-related crashes and OpenSim/InWorldz teleport crashes.

Also, if you’ll excuse me for getting serious for a moment, I’d like to say this as a personal note. One of the unique aspects of working on Imprudence is our distributed QA process. When we get to the point where we can’t test a feature/fix anymore ourselves, we release test/beta builds like these to you, the user, for feedback. Your comments (and your passion for putting the viewer through its paces) are tremendously helpful in tracking down bugs we’d otherwise never encounter ourselves.

For some, this might seem like “passing the buck” on our part, but in my eyes it’s always been a highlight of just how much working on Imprudence is a community process. We all care about putting a working viewer in your hands, and the fact that so many of you are willing to take time to help us do that really does warm our hearts and keep us motivated.

So, I just want to say, I know it might seem tough to see where we’re going when most other viewers are doing things differently right now, but I hope you’ll be patient with us. Things are still coming together as far as finalizing and transitioning go, but we’ll get there, and we haven’t forgotten why we do this: our community. Because seriously, our users rock :)

Some insights into our development process

As many of you have noticed, the process for getting Imprudence 1.4 beta 1 out has been a long one, so I wanted to take some time tonight to explain our process as developers behind it–what we intended to do, how we got there, and where we go from here.

Imprudence is something of a unique project for me in that we’re all volunteers scratching our itches, yet somehow despite this we’re able to come together and make things work. I know this sounds horribly cheesy and cliche, but I really have never worked with a more heartfelt and kind-hearted group of people. What makes an ImpDev unique, I think, is that we’d have just as much fun sitting around chatting for hours as we do hacking on the viewer source. We care a lot about what we do, and ironically that’s partly why the 1.4 process has been so frustrating for us.

After the release of 1.3, something became clear: our Quality Assurance process was far too long. We would fix an issue, then it would sit on the repo for weeks without being properly tested on all the environments we want to support (OpenSim, Second Life, InWorldz, and now Aurora grids). We changed that up with releasing the Weeklies (later renamed “Experimentals”). The idea was to get fixes as fast as possible into user’s hands in order to get important feedback. A LOT of the major bugs in 1.3 were fixed in this manner, and thanks to residents who were willing to track down bugs with us we really made a lot of progress. The 10.23 Experimental release is a highlight for people, I know, and that’s largely thanks to residents all over the metaverse being involved in the development process (one of my favorite stories is how many of us it took to track down what we called the Infamous Wright Plaza Crash of Doom. Fixing this eventually led to a patch that made all other 1.x viewers more stable).

But we’ve had problems. The QA process started to take on a life of its own, and as we got sucked into releasing quick updates the gap between our Stable and Experimental branches widened. When our doors were flooded with tens of thousands of new users after another viewer was banned on Second Life, we were thrust into a quandry: do we push to include all the new feature requests, or continue to focus on stability and workflow improvement? In the end, the Experimental line got lengthened again by a rush of new features (and fixes for those features), further widening the gap between the two branches. Looking back, that was probably a mistake. We should’ve kept to our core mission of releasing solid incremental viewers without the feature bloat that other viewers have. But, as I said, we’re a group who cares passionately about our users, and it was important to us to address what we felt were significant needs.

This brings me to the subject of beta 1. The release notes for 1.4 are longer than any release we’ve done to date (and if you follow our commits on github, you know how much work we put into the viewer on a regular basis). It’s been something of a culture shock for us, trying to resolve issues while still moving forward. The Imprudence development process is much like that of a UI designer. We make a change we think is useful, then release it to the community, gather feedback, and refine. Over the course of several iterations, you get a release like 1.3.2, which many people still prefer due its stability. With 1.4, though, this process is much harder for us. We’re giving the community a lot to look through, and we’ve received a lot of feedback. In a way, it’s almost intimidating, because 1.4–as the last of the Imprudence line–is very dear to us, and as I mentioned, we’re all personally dedicated to giving you guys the best viewer we can.

So, where we go from here might be a bit of a struggle for some. There’s obviously work left to do, but I want to point out that releasing the beta (i.e. moving Experimental features into the stable line) has pushed us to focus back on core issues. Based on early feedback, the inworld audio issues on Windows seem to be fixed. Inventory loading’s been vastly improved. More crash fixes have been pushed. The texture cache will hopefully be improved next if time allows before beta 2. Likewise, we’ve also had to balance our need to work on big issues with our desire to make sure everyone who submits a bug report at least gets their voices heard, which is why it’s so important for us that you use the issue tracker and promote it among yourselves. Commenting there brings issues to our attention much faster than commenting in other places. Particularly with this release, there’s so much going on it’s hard for us to give you guys the one-on-one time we’d normally like to. For example, I only recently learned about the “disappearing prim” issue from a forum post and a comment from a friend (currently, it looks setting RunMultipleThreads to FALSE in the debug settings fixes the issue;  let us know if this works it for you or not).

Most of all, I want to make a personal appeal to the community to be patient with us as we work on all these issues. We have Imprudence 1.4 to finish up, then a huge merge to do with Kokua followed by the many features/improvements we want to implement there. This is no easy task, believe me. As a user of our software myself, I know how frustrating it can feel to use an unfinished product, but it’s our hope that at the end of a concerted effort 1.4 will be the best version of Imprudence yet–one you all can look back upon as a journey that was worth the destination, and Kokua will grow into the same.

In short, we’re here, focused on getting this done. You guys are still the primary reason we do this, and while we haven’t been interacting with the community much lately, you guys are always on our minds. I hope you’ll keep with us as we continue to fine tune our process. In the meantime, I also encourage you to check out our new support system. I think it’s really nifty, and Codebastard Redrave has done an awesome job at making it easier to get answers from your fellow users. Check it out at

Cheers :)


Imprudence 1.4.0 beta 1 Released

Imprudence 1.4.0 beta 1 is now available!

This is the first non-Experimental release in the Imprudence 1.4 series. This version will certainly contain some bugs, but probably not anything severe. We consider it to be safe and suitable for everyday use. However, Mac users should be aware that streaming audio will not play on Mac in this version. We are working to fix that.

If you need help with the viewer, please see our Support page. If you find a bug and want us to fix it, please follow our Reporting a bug guide.

Compared to the latest Imprudence Experimental, Imprudence 1.4 has many bug fixes, better inventory caching, the Animation Overrider starts working faster, the object exporter can export textures from SL (with TPVP-compliant permission checks), the Preferences have been reorganized, and more. We strongly encourage all Imprudence Experimental users to upgrade to Imprudence 1.4.

Compared to Imprudence 1.3, Imprudence 1.4 adds a mind-blowing number of new features, UI improvements, and bug fixes. We recommend Imprudence 1.3 users also upgrade to Imprudence 1.4 soon, unless you require streaming audio support on Mac.

Here is a brief overview of some of the most notable new features, grouped by category:

  • General: Support for WindLight notecards; Updated Chinese, French, German, and Japanese UIs; Derender object/avatar; Gestures can use more keys; Reload $ Balance; Animation Overrider starts working sooner.
  • Communication: Spell Checking; AutoCorrect; Chat Translation; Chatbar Commands; Display Names support; Highlight chat from friends; Highlight chat mentioning your name or nickname(s); Search bar in Friends and Groups lists.
  • Content Creation: Support for Alpha and Tattoo layers; new Prim Alignment tool; Local Textures (real-time preview of textures on your computer without uploading); Object texture export from SL (with TPVP-compliant permission checks); Upload support for Photoshop PSD image files (available on Mac only); Copy/Paste buttons in Build tools.
  • Login, Grids, and OpenSim: Login name and password saved per-grid; Support for variable sized regions (i.e. bigger than 256m) when available; Support for the OpenRegionInfo capability.
  • Map, Radar, and Teleport: Full Radar; Teleport History; Estate Managers’ minimap radar distance is no longer limited; Right clicking objects in Area Object Search to teleport to/cam to/edit them.
  • Media, Browser, and Networking: Media system revamped with SLPlugin; Media Filters; Interaction and zoom with streaming media/webpages; Improved XMLPRC and SOCKS5 proxy support; Parcel media URLs are no longer hidden.
  • Preferences: Reorganized Preferences window; New UI skins (Dark and Gemini); Sliders for draw distance, etc. allow typing in exact values; Search bar in Debug Settings.
  • Texture Loading: Many, many texture loading improvements from Robin Cornelius, Thickbrick Sleaford, and others; Various improvements to help prevent unloaded (cloud) avatars.
  • Development: Many, many, many code improvements and cleanup under the hood. Special thanks to Aleric Inglewood and others for their work on this.

You can find more information about these and the other changes in this version by reading the release notes. As of this writing, the release notes are still a work in progress, but we will try to finish them up before the final 1.4.0 release.



Thank you !

I want take the chance before the beta is released  to say thank you to YOU -our users- and YOU – all developers- of Imprudence and Kokua.
Last December the Computer I was doing the Linux 64-bit releases on showed signs of aging, which got worse in January and end of February it was almost unusable. Fortunately McCabe, when he heard of this, didn’t hesitate to offer me to get a new one from donations left, when about the same happened to his computer. Thank you McCabe! Thank you all who donated that time !
So since March the Linux 64-bit releases are done on a shiny new Box with Intel Core i5-750 processor, 4GB of RAM, 1 TB harddrive and a Gainward 1GB graphics card with nvidia GTX 460 chipset.

Special thanks to Rynnan, who helped me to find my way through quicksand north-north-east bridges and smoke signal prone power supplies. Thank you Rynnan!
I am really still surprised what huge difference it is to do development without waiting forever for the compiler to finish. So already a lot thank you is written in code on the new machine, most work on Kokua is done with it. And a lot of bugfixes for the Imprudence 1.4.0 beta release, to which I am looking  very much forward  for.

Thank you :)


Status Update (May 27)

Greetings, Kokua/Imprudence fans! It’s time for another status update.

Lately, we have been hard at work finishing up Imprudence 1.4.0 beta 1. It has been a loooong time coming, but we think it will be worth the wait! Our current goal is to release the beta next week, perhaps on Thursday or Friday. But, as with any release, that depends on our personal schedules and how much time we can work on Imprudence between now and then.

One bit of exciting news is that I have been able to focus and make good progress on the Mac media system in the past few days. It’s not fully working yet, but it’s close. With a bit of luck and some favorable winds, I will be able to get audio streams on Mac working in time for the beta next week!

Continue reading ‘Status Update (May 27)’

Imprudence 1.3.2 Released

Imprudence 1.3.2 is now available. This is a maintenance release to addresses several issues in the 1.3-series Imprudence viewer, including an exploit that could allow griefers to crash the viewer with a specially-constructed ogg-vorbis file. If you are using Imprudence 1.3, you should definitely update to 1.3.2! If you are using Imprudence Experimental 1.4, you should consider using 1.3.2 until we release Imprudence 1.4 beta 1 (expected later this week or next week).

Changes in this verison

  • Updated the ogg-vorbis libraries to address an exploit that allowed attackers to crash the viewer. libogg is now version 1.2.2; libvorbis is now version 1.3.2.
  • Fixed VWR-25479: Avatar physics causing broken shapes on other viewers. Thanks for the patch, Seraph Linden!
  • Fixed the Vivox Acceptable Use Policy window appearing under the wrong conditions.
  • Fixed voice chat always being disabled at startup, even if you had enabled it in your Preferences in the previous session.
  • Fixed a startup error related to “” on certain Linux distros. (IMP-790)
  • Fixed the viewer encountering an error: “Vertex buffer destroyed while mapped!”
  • Tweaked the compile system so the viewer can link using “gold”.


Final Experimental Release for 1.4.0: 2011.04.19

I think hands down, you’ll agree this is the best Experimental release we’ve made yet. I’m really thankful to everyone who’s participated in our Experimental process. You’ve provided us with a great amount of useful feedback, and our ability to get these viewers out to you sooner rather than later means 1.4.0 will have the highest mix of features and fixes out of any version of Imprudence to date! And a special thanks goes out to everyone who’s contributed great patches to bring us here :)


New Features:

  • Full sim radar. That’s right, not just the radar in the mini-map. Changes to the mini-map are forthcoming, but in the meantime you can access the new radar window from the Advanced menu > Full Radar
  • Login and passwords now saved for each grid. No more having to re-enter your first/last/username and password when you login to a different grid! Usernames are also now stored in the grid manager (grids that want to support usernames can enable their entry by adding  the boolean “username_compat” to their grid info).
  • Inspect now shows last owner as well as script and object count (depending upon server performance, this can tricky).
  • Imprudence now supports SOCKS 5 proxies.
  • Set your Imprudence tag color. You can change your tag color in Preferences > Advanced. (Only affects what you see on your computer, not what other people see.)
  • New preferences for color and behavior of particle clouds in Preferences > Advanced > Eye Candy.
  • Debug Settings are now searchable.

Bug Fixes:

  • Fixed issues with camera and selection in the previous experimental. For those who’re curious, it was an attempt to make the selection process more consistent in the UI, but the change did more harm than good.
  • Fixed search not remembering results when closed. A “save results” checkbox was added to this window. Checking it will keep the search window always open but hidden (note: this will consume more resources in the viewer).
  • Fixed large sculpt rendering (let us know if you have any texture problems with this release especially! Changes were made there).
  • Fixed account history/management menu items still showing up on non-Second Life grids.
  • Fixed numerous crashes (including two fixes for known crashers, a teleport crash fix for InWorldz, and a fix for Aurora Sim).
  • Fixed upload cost being reported as $-1 on some grids.
  • Fixed URLs not being clickable in numerous windows across the UI, such as profiles and groups.
  • Fixed Windows version identification.
  • Fixed Vivox license appearing when you login to a non-Second Life grid and a potential fix for not being able to accept the license.
  • Fixed quicktime not being used for m4v files on Windows.

Known Issues (introduced with this release):

  • Right clicking the chatbar doesn’t bring up the translation submenu (workaround: use the chatbar in Local Chat).
  • Menu borders and colors might be off depending upon the menu.
  • Some preferences windows need to have their layouts adjusted.

As always, please post any issues you have on the issue tracker! We really do need you all to speak up there if you have an issue, particularly as we prepare for the beta.

Why the issue tracker?

One of our users recently posted about this over on the InWorldz forums.