I've been playing with an open source software called "OpenSim." It's compatible with the Second Life client software and implements about 80% of the Second Life features and scripting language.
It's just over 2 years old as a project, and it's amazing how usable it is for how big it is. There's even multiple open "grids" that link various servers together and handle a central login and authentication system for avatars. Other than the lack of in game currency, it's very near to a Second Life experience.
Oh, and did I mention it's open source and free? I'm currently running a test server in "standalone" mode - meaning I'm handling all my own authentication, asset and user databases and all the world zones. I can't decide if I want to apply for region coordinates in the largest open grid "OSGrid" and integrate my zones into the overall metaverse, or if I want to keep it separate for now. I've figured out how to manage users from a PHP website, so I could even integrate the authentication system with GamerzCrib.
The downside is that the physics engine is still under heavy development. Actually they offer four separate physics engines depending on what you want your world to be, but none of them are quite ready for primetime when it comes to vehicles. The other problem I'm having is that as soon as I figure out something cool I want to script I learn that one or more functions I'd need to use to accomplish it are not yet implemented.
But, it's free, and it's cool. The picture is of my avatar and the custom sword I designed. I added my own animation to the sword that when I wield it, my avatar steps into a combat pose, snarls and grabs the hilt with both hands. Cool stuff. And, you can even get graphics clients for Linux. With Linden Labs best skill being the ability to anger their customers, having an option like OpenSim is a lifesaver.