I have a theory that the quality of an open source project is inversely proportional to the number of forks. OpenSim and SL / OS viewers have a lot of forks. I have one to. lol
SledjHamr is a rewrite from scratch of Second Life (SL) / OpenSim (OS) style 3D online virtual world client / server. It also intends to hook up with other virtual worlds and standards.
Simulating a world requires lots and lots and lots and lots of little details. So rewriting OpenSim server and a viewer from scratch will take a long time, especially for one person.
The plan is to use OS server and SL clients as crutches, when a bit of SledjHamr is ready, it replaces the matching bit in OS/SL.
OpenSim is mostly a bunch of web services that talk to each other and the viewers. There is also some UDP protocols involved. So my plan is to move away from the OpenSim web server and allow the use of other web servers. I also plan on writing things in C and Lua, with little bits of assembler if needed (see below for my claim to a right to be a language bigot). I think I can get much better performance using C and LuaJIT, and so far my experiments have shown that I do.
The world already has many ways of doing HTTP transfers, with very mature things like CDNs, proxies, reverse proxies, etc. So distributing assets across the world is a solved problem. So let's use all of that to make things better.
OpenSim isn't a complete system though. You need to supply some extra bits via another web server to complete the system. So initially I'll concentrate on those. Using FCGI as a fast method of hooking C and Lua code up to web servers.
A further part of my plan is to replace the non web protocols with some binary based protocol. Way more efficient. So there is a sub-project called "nails", hammering everything together. Nails could also bridge between SledjHamr and other virtual worlds.
However that's a really huge project, so SledjChisl was invented to slowly chisel away at things until it becomes SledjHamr.
So far that's a single executable based on toybox LuaJIT, qlibc, and fcgi2.
SledjChisl is basic server management stuff and a minimal account creation system. This rewrote bash scripts I had written earlier to do the management things. Start, stop, and get status for the grid or individual sims. Create IARs and OARs automatically on a weekly basis, including what I call GITAR files, which include git in the IAR / OAR files to track changes. GITAR files tend to be roughly twice the size of ordinary IAR / OAR, but include enough git tracked history to recover things from any given week since it started. The weekly backup also has an option to rsync the results somewhere for offline backups. Also other things like getting an updated OpenSim, building everything, running the tests.
SledjChisl runs everything in tmux. It automates figuring out which ports sims use, opening up tmux windows and panes for them. Including categories of prioritised sims startup, and figuring out how quickly to start them up in parallel so it doesn't over stress the server. One of those tmux panes is for the log output of the FCGI based account system. So you can, for example, have the first tmux window with four panes, one for ROBUST, one for FCGI log, one for your Welcome sim, and one for general terminal commands. The next tmux window might have your two most important sims other than Welcome. Next might be windows for your sea only sims, perhaps 8 panes of those per window. Then your smaller sims with four per window. Then your big heavy weight sims that might take ten minutes each to start up, so you want them to start last.
For those unfamiliar with tmux, it's very similar to screen, but can be scripted and has mouse support. For those not familiar with screen, it's a utility to allow control of multiple command terminal windows in one text command terminal. Both allow sharing with multiple people and persistence after you log off.
About a decade ago I came up with the ideas for SledjHamr, and discussed it with some of the members of a grid I was running at the time. They helped to flesh some things out and came up with other ideas. Though mostly it's been my ideas.
Shortly after that I started writing prototype code using Enlightenment Foundation Libraries. I was part of the overall Enlightenment project at the time, and very familiar with EFL, so the choice was easy. Before I started Samsung had been hiring some of the EFL team to use EFL and Enlightenment for their Tizen project. Samsung started a skunk works project to add 3D support, but that team was forbidden to talk with others. The major basic thing they where missing was any sort of avatar animation system. Even though I had written some of the subsystems of EFL, their response to my request to add that was "you gotta do something for us first". Then things got a bit ugly and I left EFL in disgust. So the SledjHamr project got put on hold for a while.
The SledjHamr prototype had a little scene, that was described by Lua scripts on the server. The viewer had basic camera control. I had my own script engine that converted LSL into Lua, than ran it with LuaJIT, and supported llDialog(), though it wasn't hooked up to do things to the world yet, but it could fire up MLP and run it's menu system. That script engine was orders of magnitude faster than OpenSim at the time.
During that SledjHamr sabbatical, I was running a grid and tweaking OpenSim. The main thing I did was to speed up the script engine a bit by removing three things. What I call the Oh Silly Threat System got tamed so that not so much useful stuff was forbidden for truly over the top paranoid reasons, and the function calls to check for permissions that would always be granted got removed. The Second Life "this function will sleep for X seconds" stuff was all removed. And I found out that the function calls in each function that supposedly calculated "lines per second" didn't actually do that, and the results never actually went anywhere, so those function calls got removed as well. Removing all those useless function calls made the script engine noticeably faster, and only caused a problem for one badly written script.
Then I started writing SledjChisl. OpenSim + SledjChisl, which I call opensim-SC, has been running at least three grids for over a year.
I have been programming since the late '70s. Working on all sorts of things in all sorts of languages. I have used 100 programming languages in my career, so I think I have earned the right to be a language bigot. I can learn a new language in an hour, and be expert in it in a week. I'm also great at writing documentation. My favourite programming languages are assembler, C, and Lua. LuaJIT FTW!
I have been working professionally with OpenSim and SL/OS viewers for over a decade. I used to be the maintainer of Imprudence viewer. To which I added experimental support for over 20 different mesh formats that would download them directly from the web, this was about the time LL was adding mesh. I've also been paid to add VR support to a corporate OpenSim viewer, before the current crop of VR headsets where released to the public (I used an Oculus Rift DK2, the finished project used Oculus Rift CV1).