Archive for June, 2011

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.



Status Update (June 8)

Hark, another Imprudence status update!

Imprudence 1.4 beta 1 is practically complete, but preparing the release notes has taken a lot longer than anticipated. The scope of these release notes is simply huge, covering all the changes between 1.3 and 1.4. Development on 1.4 started way back in September 2010, so there are about 9 months worth of changes to summarize! I began working on the release notes on May 28, starting with an initial list of over 900 commits to sift through and pick out the most relevant changes. That weekend, I reduced that list to 450 by weeding out trivial changes, bug fixes to new features, things that were already merged into 1.3.1 and 1.3.2, and other generally unnoteworthy commits.

Even so, 450 items is way too many for any release notes, so I’ve spent several hours per day for the past 10 days trimming, condensing, and organizing the list. At the moment, there are about 230 items divided into 11 categories: General, Communication, Content Creation, Login, Map/Radar/Teleport, Media, Network/Browser, OpenSim/Aurora, Preferences, Texture Loading, and Development.

But even 230 items is too many, so I’m trying to cut that down to under 150. I plan to also provide a brief release notes overview, containing 30 or so of the most significant changes. (Yes, we’ve made so many changes since 1.3 that even our summary needs a summary!) I’m hoping to have all that done by this weekend. Otherwise, my brain is at risk of crumbling into dust and pouring out my ears.

I have also been poking at Mac streaming media, and unfortunately I don’t think that will be ready for 1.4 beta 1 after all. I’ve gotten the GStreamer plugin itself to load in SLPlugin, which is good. But, GStreamer also has its own plugins, which it currently cannot find or load. It will take some time to puzzle out the reason and fix it, but I would be very surprised if it wasn’t working in time for beta 2. And, I certainly don’t intend to release 1.4 final without getting Mac streaming media working properly.

Our latest goal for releasing Imprudence 1.4 beta 1 is “sometime this weekend-ish”. But, we’ll see how it goes.