About GalaxyViewer

GalaxyViewer is an open source, cross-platform viewer for Second Life and OpenSim Next Generation Core (NGC) grids that I'm currently developing. The goal is to create something I've been wanting to do for a long time: a modern viewer that functions well on both Android and desktop platforms, flexible enough to adapt to different use cases. Whether you want to use it as a text-only chatroom, enjoy immersive 3D experiences, or something in between, GalaxyViewer is designed to accommodate your needs.

Please note that at the time of this writing, it's still in the early stages of development. The code is available on GitHub, but it's not yet ready for public use. It's missing way too many things for me to be comfortable sharing a public beta version. However, I will be sharing updates on the progress of the project as it develops, and will start reaching out to folks once we're ready for testing. I will also be in touch with Linden Lab once it's ready for a public beta to ensure compliance with their guidelines.

Some of the key technologies I'm using to build GalaxyViewer include:

  • Rider: An IDE for C# development, which I find to be better than Visual Studio for C# development right now.
  • AvaloniaUI: A cross-platform C# UI toolkit that allows for building modern, responsive user interfaces for desktop and mobile applications, as well as web applications.
  • LibreMetaverse: A library for interacting with virtual worlds, providing a set of tools and APIs for building Second Life and OpenSim applications. Cinderblocks is the main developer of this library at the moment, and I highly recommend checking it out if you're interested in building a viewer in C#.
  • .NET 9/.NET 8: The project primarily targets .NET 9 for desktop platforms to take advantage of the latest features and performance improvements. This will be upgraded to 10 once that is released. However, .NET 8 is used for Android and potential browser deployments at the moment due to platform-specific requirements and compatibility considerations.

Why am I building GalaxyViewer?

I've been a long-time user of Second Life, and I've always been interested in creating inside and outside of the platform. Over the years, I've seen many viewers develop, many of which have inspired me to take on the challenge of building my own.

One notable viewer that has influenced this (at least on the android side) is Lumiya, a mobile viewer for Second Life that was ahead of its time. Lumiya demonstrated that it was possible to create a functional, immersive experience on mobile devices, and it inspired me to take the time to study hard and learn how to do the same. It even had VR! Clunky VR because it needed a "Cardboard"-style headset to shove your phone into and a controller to use for movement, but it was still a VR experience. I was amazed to be able to look around, and see my home in virtual reality. I want to bring that sort of flexibility back, but with all of the modern upgrades that have come along since the days of Lumiya, and bring more to desktop in the process.

Why not contribute to existing viewers? While I have always wanted to contribute more than just support, honestly, nearly every single viewer is based on the same codebase which is written in C++. I don't know C++, and I don't want to learn it yet. But, I do work with C#, and want to build something in that language and strengthen my skills with it. I tried seeing if I could contribute to Radegast, but it being built on such an old .NET Framework at that point in time made it difficult for me to do at my skill level, and I didn't know enough about the codebase to upgrade it to .NET 8. The UI framework it uses (WPF) is also locked to Windows-only, which is too restrictive for my tastes. So, I decided to start fresh with a new codebase that I could build from the ground up, taking the time to learn from the very beginning steps and create something that I've always wanted to see. I do hope that once GalaxyViewer is further along and I better understand the ins and outs of how a viewer works, I can contribute to other viewers as well, but for now, I want to focus on building something that I can call my own.

What can you expect from GalaxyViewer?

As I mentioned earlier, GalaxyViewer is still in the early stages of development, so there isn't much to show yet that I haven't already shown off on BlueSky. However, I can share some of the features and goals I have in mind for the project:

  • Cross-Platform Support: GalaxyViewer will initially be designed to work on Windows, Linux, and Android platforms, allowing users to access virtual worlds from anywhere. Web browser support via WebAssembly is also being explored, though hosting costs may be a limiting factor. Note: Apple devices are blocked on my end because I do not own a Mac or iPhone, nor the money for the fees to get a developer account. If you want to help with that, please reach out to me.

  • Modern UI: The user interface will be built using AvaloniaUI, providing a modern, responsive design that adapts to different screen sizes and orientations. At the moment we're making use of Ursa Semi components, which are a set of reusable UI components that provide a consistent look and feel across different platforms. This will help ensure that GalaxyViewer has a polished, user-friendly interface.

  • Flexible Development Roadmap: The initial release will focus on 2D mode with text chat and basic functionality. The 3D world view will be added in a subsequent release, and VR support will be implemented after that. This phased approach allows me to deliver a stable, usable viewer sooner while building toward more advanced features.

  • Accessibility Focus: My vision is that Second Life should be accessible to everyone, regardless of their device, operating system, or ability to see or hear. GalaxyViewer is being designed with this principle in mind from the ground up.

  • Optional Features: Whether you want to use GalaxyViewer for text-based chat only, voice communication using WebRTC, or immersive 3D experiences, the viewer will be designed to accommodate your preferred way of engaging with virtual worlds. All advanced features will be optional.

  • OpenSim Support: While primarily focused on Second Life, GalaxyViewer will also support OpenSim grids running the Next Generation Core (NGC) fork. I will be collaborating with the developers of that fork to ensure compatibility and provide a seamless experience for users on those grids.

  • Open Source: GalaxyViewer will be an open source project under the GNU Lesser General Public License (LGPL), allowing anyone to contribute, suggest features, or help with development. I believe that open source is the best way to build a viewer that meets the needs of the community, and I'm excited to see what others will bring to the project.

Getting Involved and Staying Updated

If you're interested in following the development of GalaxyViewer or getting involved, here are some ways you can do so:

  • Follow Development: Keep track of progress by following the GitHub repository and our social media accounts like BlueSky.

  • Contribute: Once more code is available, you can contribute through code, documentation, bug reports, and feature requests. GitHub's Issues and Discussions tabs will be the primary venues for community interaction.

  • Support: If you'd like to support the project financially, you can do so through GitHub Sponsors, Ko-fi, or Polar. Every contribution helps keep the project moving forward.

  • Contact: For direct communication, you can check out the Discussions tab on GitHub. You can also see my contact information on the Contact page of my website (please be as direct as possible in your message so I can assist you better), but please be patient as development is the primary focus, on top of needing to manage my time with work and other commitments.

As for release timing, I don't have a specific date yet since the project is still in early development. However, I'll be sharing regular updates on progress and will announce when we're ready for beta testing, along with installation instructions.

GalaxyViewer will always be free to use, and I'm committed to making it accessible to as many people as possible. Whether you're a longtime Second Life resident looking for a fresh experience or someone new to virtual worlds who wants a modern, flexible client, I hope GalaxyViewer will have something to offer you.