Following the acquisition of Xamarin by Microsoft the mono project, the runtime supporting many cross-platform C# projects, has been used as basis for further development of Microsoft’s own .NET, which mono had set out to replicate on Linux platforms. In a move that absolutely everyone saw coming, the mono project has been all but shut down, gutted of the most relevant parts and now left with very little support. It has been made clear in many ways mono would not receive a lot of care from the former developers working on it full time. This means barely any updates, releases and a future that looks at .NET(dotnet) becoming the primary runtime for C# projects. While Microsoft has made progress in supporting C# on Linux, they have only taken on the most relevant parts. This results in some features from mono not making the jump and thus breaking existing code. Should projects decide to move to dotnet then they will have to re-engineer these parts using the features still available in dotnet.
What this means for OpenSimulator is clear. The road with mono as base has ended and the only way to secure proper operation in the future will be to move along with Microsoft’s plan to control more aspects of software. This is not a good thing by any means as most already know, Microsoft is not a friend to anything that doesn’t make them money and much less to things that actively drive developers and users into the open-source space. Going along with their usual mode of operation the features not present in dotnet do not have alternatives that can be implemented easily or at all. Thus the parts of OpenSimulator that relied on them are dead in the water unless significant work is done to rebuild them using what is available in dotnet.
The major shift in runtime has also brought along the side-effect of the automated tests used to guarantee at least some form of regression testing, the practice of making sure code changes don’t break existing functionality. A completely new testing system is likely to be the only solution to re-introduce the least of safeguards against catastrophic failure. This is not a task that is easy and it ultimately requires the scarcest of resources, humans. As general practice those writing functions should not be the ones writing tests for them. This is done to make sure the code is examined with a critical view and promote tests written to not simply confirm expected behavior.
Currently the aim to support version 6 of the dotnet runtime as a start is bringing the code standard forward by leaps at, what could be argued, cost of readability of the code itself. Further changes will be needed as well, because newer versions of dotnet are already available. What effect this has on the quality of the codebase as a whole is difficult to quantify. While changes are made to update code and improve certain parts, others are left as-is. May this be due to those parts not benefiting from changes all that much or being complex, abstract or even esoteric in nature that changes require a lot more effort. With such a large codebase uniform upgrades take a lot of time to complete and with very little human resources available is likely to take months to years.
While we remain committed to providing feedback, assistance and code towards the project, it has become rather clear that in order to move forward larger changes are needed. Moving away from the basics of runtime support and changes, there remain some problematic areas in OpenSimulator. These modules and code blocks are in dire need of re-design in order to bring them up to more modern standards or simply to fix the underlying conceptual issues brought about from poor planning or more grand ideas not well translated to code. Unfortunately such large changes to entire modules are never easy and also require a lot of groundwork in order to allow for integration into the project. Famously such large changes required those working on them to create forks and put pressure on the main OpenSimulator project by directly showing the benefits of the changes. This attitude has been brought about through different causes, but remains a concern for those looking to re-engineer larger parts of modules. Equally difficult is ensuring proper operation with the sometimes ancient, by the Internet’s standards, data still floating about across the metaverse. All leading to the barrier for such endeavors being rather high, which directly translates to time and time equals money.
As open-source projects go the available funding for OpenSimulator is minimal and there are not many providing financial support towards the project, especially as of late. Made worse by other adjacent projects taking funding from willing donors to stage events or run platforms with very little to no return to the project. While the project enjoys support rendered in different forms from the monetary aspect, there is only so much achieved through user contributions and anything major ultimately requires either a very driven individual or an organization providing funding without attaching unnecessary strings to it. Some “organizations” that did attempt to further the project have made a complete mess of their funding campaigns, which likely only serves to deter others. Leaves driven individuals electing to donate their free time towards the project and hopefully a community willing to show them appreciation in return, however form that may take.
We look into the future with a hopeful heart and plans to support both our customers and the OpenSimulator project to the best of our abilities. We hope you can spare some love for the project and show your appreciation in some way, if only by continuing to report bug or providing feedback. Again, shoutout to Microsoft for showing their ugly side again.