Here at Imprudence we’ve been juggling several issues, trying to develop two different clients at the same time (Imprudence and Kokua) for three different platforms in 32bit and 64bit flavors. not to mention supporting not only the Second Life grid but all the various OpenSim grids as best we can. We think we’ve made some pretty awesome viewers but lately we’re also become stagnant as we’ve been weighted down by trying to juggle all these various things. It seems we may have over extended ourselves a bit and to fix that we need to refocus and simplify. Thus in the coming weeks we will be holding an all-hands team meeting for all Imprudence/Kokua team members, be they Dev or Support, where we will discuss what’s working and what isn’t and what we plan to do about it (Details have already been sent to all team members).
But we’d like to hear your input as well, as we make these viewers for you our users after all. Tell us what makes Imprudence special for you, what draws you to this particular Third Party Viewer over others and what you would like to see going forward. How do you use Imprudence, and how do you use other viewers even the official one? What do you like about them, what don’t you like, and how is that similar or different from Imprudence. Do you use OpenSim, Aurora or any other alternative grids, even your own local grid? Is there anything you think that Third Party Viewers are missing that would make them easier or more productive for people? What about the site itself, this blog, the forum, the wiki and etc, how can we improve it?
While we can’t make any promises about addressing every issue, we will try to discuss any points made here in the comments.
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 mccabe@kokuaviewer.org 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.
Greetings, Mac users! We’ve created a short survey to help us find out what sort of Macs you are using to run Imprudence, or would use to run Imprudence if it was compatible.
This information will give us an idea of how many people still use PowerPC Macs, how many people would benefit from a 64-bit version, and how many people would be affected if we updated to frameworks only available in 10.5+.
If you use a Mac, please take a moment to fill out the survey. Thanks!
All responses are anonymous and confidential. Please respond only once per person.
Imprudence 1.2 has a feature borrowed from the Emerald viewer: double-click teleport, i.e. double-clicking somewhere in the 3D view will instantly teleport your avatar to that location. There are also pie menu entries, “Go Here”, which do the same thing as the double-click teleport.
However, some users have commented that the double-click is too easy to accidently trigger, and can interfere with double-clicking on scripted objects. We have added a confirmation dialog to prevent accidental teleports, but that isn’t an ideal solution, because confirmation dialogs can be annoying and disruptive too.
We’ll be adding an option to allow users to choose whether they want the double-click behavior, but we’re still deciding whether it should be enabled or disabled by default. Mostly this depends on whether more people find double-click useful or annoying.
So, here’s a chance to have your say: Should double-click teleport be enabled or disabled by default?
We’re thinking of having a weekly meetup for developers and other folks interested in Imprudence’s progress. The purpose of the meetups would be to keep in sync with each other, share what we’ve each been working on, discuss roadmaps and future plans, and generally keep the project moving and active. Anyone is welcome to attend, but be aware that it won’t be a “users group” meeting, it will be focused on getting things done.
So, we want to gather input about what days and times would be best to hold the meeting. We’re leaning towards a weekend meetup (Friday, Saturday, or Sunday), and it would be held most likely in SL or OpenSim, or possibly on IRC. If you would be interested in attending the meetup, please contact me with the days and times (including time zone!) you could attend.
If you were unable to attend the discussion yesterday for Orange Island Innovation Week but are interested in what we talked about, you’re in luck! The good folks at Orange Island have posted a transcript of the event for your downloading pleasure!
If you are interested in working on the Imprudence source, we’ll be meeting inworld this Saturday to discuss coding, our viewer roadmap, and converting feature requests into coding tasks.
I’ll be participating in a discussion at Orange Island tomorrow, Tuesday September 30 at noon SLT. I’ll be representing the Imprudence project as one of a panel of participants, including the lovely and talented Rheta Shan, who won the UI design contest a while back. The discussion will be moderated by Dusan Writer, and will cover innovation, UI, lightweight clients, and more! It should be fun times!
In case you missed or weren’t able to make it to the informal gathering earlier this week, but still wanted to go, Jacek has put the notes and a transcript up on the forums. It was great seeing everyone there. More ideas were discussed, with some interesting feature requests popping up (all included in the notes), and Jacek answered a few questions about the project.
We’ll be having a casual discussion in Second Life tomorrow at 1PM, and anyone is welcome to attend. The topic will be ways to improve the SL user interface and usability. Lex Neva has kindly let us use her new plot of land in Hippotropolis for the chat. Thanks, Lex!
Topic: User interface, usability, accessibility, etc.