Archive for September, 2011

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.



Introducing ZATZAi

Please join me in welcoming our new project organizer, ZATZAi Asturias! He will be responsible for many of the day-to-day operations of the Kokua/Imprudence Project, such as organizing meetings, monitoring development progress, and administering the secret daily beatings I have used to keep the rest of the team hard at work for the past 3 years. :twisted:

ZATZAi brings a wide range of skills and experience to the project. He has been involved in Second Life since 2005, and for a time was one of the estate owners of the United Sailing Sims, keeping track of projects there, and working with estate managers and leaders from the community. He helped organize and hosted the in-world portion of SLCC 2007, and has even run his own inworld-only convention called (of course) Second Convention.

In addition to his experience organizing virtual world projects and events, ZATZAi has many useful technical skills, including web site development, programming, and graphic design. I’m sure you’ll agree that he is a great addition to the team!

So, we’re very excited to say: Welcome aboard, ZATZAi! :D

P.S. Everybody: don’t forget the birthday parties this weekend! :mrpurple: