Today, I'd like to give what I'm calling a "State of Minkata" report. More than the bland homilies of "I'm working on it" or "Soon(tm)".
Unfortunately to do that I'm going to have to do a deeper dive into both history and technical detail. If you need to don Maintainer suits to keep your heads from exploding please do so now.
![Smile :)](./images/smilies/icon_e_smile.gif)
For the first part, I'm going to go back in time, to when Cyan decided to release the Uru game client as open source. This was, if my aging noggin recalls, back in 2011. Prior to that point in time Uru had gone through a tumultuous period, first the original release, then the closing, then the resurrection, and once again a closing.
During that (brief) time Uru and the Myst franchise had already established an amazingly resilient fan community, both technical and not. During Uru's downtime, a lot of community effort went into reverse engineering how Uru worked, much of it as I understand it with the intention of making Uru still available to those who wanted to participate in it. I was not part of the Uru community during that time, but there were underground "shards" available, with varying degrees of success in reproducing the Uru environment.
The point here is that a pool of technical expertise grew during that time period, with knowledge of the inner workings of how the Uru game client and server worked.
Forward to around 2011, when Cyan committed to releasing the Uru game client in open source form. This is when I started to become involved in a technical sense, and was invited to join OpenUru.
One of the factors that I think influenced Cyan's decision was the appearance at that time of a new, open source game server designed by two of the community members a'moaca' and cjkelly1. My understanding is that they had been for quite some time part of the technical group interested in reverse engineering the Uru system. And at the time Cyan was considering releasing the game client, they were ready to release their game server called MOSS.
When the commitments were finalized from both the part of Cyan and the MOSS team, I volunteered to create a shard called "Minkata" that I would manage. It's goal was to provide a "sandbox" (hence "Minkata") for testing changes that the fan community wanted to contribute before proposing to Cyan that their changes be made part of the game. Minkata would be running the MOSS server for it's shard.
MOSS was an extraordinary piece of work. The authors were seasoned computer software professionals, experts in the computer languages of C++ and SQL. The server was comprised of almost 60000 lines of C++ code, plus several thousand more lines of SQL for databases.
There was one quirk, however, in my hosting Minkata. I too was a computer software professional, at the time employed by Sun Microsystems. Sun had
a flagship product, a Unix operating system called Solaris. Unix was the precursor to Linux, designed at Bell Laboratories in the 1970s,
and eventually very successful in the commercial world. Unfortunately, it never was used by the public communities because it was hideously
expensive, and took a great deal of expertise to install and manage.
I ran a server at home, that was built on Solaris. The same server I was going to offer Minkata from.
By the time of the open source Uru client, Linux had started to establish itself as a replacement for most if not all commercial Unix installations. It was free to individuals, and was becoming closer and closer to an interchangeable system to Unix.
MOSS was developed under Linux.
What this meant was that in order to run MOSS on Solaris, I would have to install all of the software that MOSS depended on. Software is now never something that stands alone when an author finishes his code. He or she depends on code that others have already written so that they do not have to "re-invent the wheel". Think of the "Russian doll" toy. Open up one doll and you find another nested inside of it.
For me, the inner dolls existed, but only in source code form. I would have to compile and install all of the dependencies that MOSS used.
I was happy to do that, but it did take time. I was able to complete the task by the time we made the Uru source code available, and Minkata
was born, running on my Solaris server.
We spent the first year, ironing out how to make MOSS and Minkata function smoothly. Some of you may remember the "stress test" parties
during that year where we crammed almost 150 players onto Minkata before it broke in a way I needed time to fix! But we made progress, both with the stability of Minkata, as well as starting to get contributions to the Uru game client.
In the time since then, the amazing part has been that MOSS has required zero updates and bug fixes, to keep Minkata running. That is extraordinary in the computer software world, let alone the open source software world. It is a tribute to the thought that went into the original MOSS implementation.
During that time, unfortunately, a'moaca' and cjkelly1 have withdrawn from active participation in the MOUL world. It is a significant loss, as you will see in a moment. In the meantime, Minkata kept chugging and contributions -- game client contributions -- made their way back into MOULa.
Also, during that time, the server running Solaris also just kept working. Sun was bought by Oracle, I retired from Oracle, and my server never needed updating. I only had to reboot it when I had power failures that lasted longer than my battery backup. I also never needed to change any of the software that MOSS depended on.
Until last year.
Last year, actually the year before that, my server experienced a security breach. It wasn't surprising, the secure code used to access my server was years old, and hackers had that time to discover flaws in the code they could exploit to get in. This meant that I would have to start updating underlying code libraries that implemented security on my server.
The authors of those libraries were not idle in the years I had not changed anything. Linux was evolving, and things that those libraries depended upon, even the compilers, had been updated. Sometimes so significantly that the new versions would not work with code built with the older versions. So my adaptation of MOSS on Solaris had to be rebuilt, along with the newer version of code it depended upon.
This meant that among other things, the next time I had to rebuild MOSS for Minkata, it would be using the new underlying libraries.
Also during last year, a'moaca' and cjkelly1 reappeared with some updates to MOSS. They too had observed that MOSS no longer completely worked with contemporary versions of Linux, and had developed code fixes to make it compatable with things like newer encryption software and a new version of the Postgres database which was the current "standard" version being distributed with current Linux.
And last year I started working in earnest on how to get Fan Content into the pipeline for testing and eventual inclusion on MOULa. I had planned to add a new shared I've been calling Minkata-prime on the same server, for testing fan content. To run two shards on the same server required some changes to MOSS.
So MOSS needed to be rebuilt.
I completed that task late last fall, and thought I had successfully migrated Minkata to a new MOSS server. Unfortunately feedback soon appeared that things were not quite right on Minkata. In particular, sometimes things that were changed in ages during game play reverted to their prior state when an explorer returned to that age. This is what is termed "state", which has to be stored by the game server (i.e. MOSS). And it was failing after the rebuild.
So Minkata has been malfunctioning since October of last year.
On and off since then until January I've been poking at it, but with only a small amount of time available for work on it.
Now for the current "State of Minkata".
Since the beginning of the year I have been able to spend a fair amount of time trying to narrow down the possible causes for the Minkata bug. During this time I've disabled all previously existing accounts on Minkata, which makes it much easier to debug things with a new Vault. Minkata is still locked down today.
I've eliminated the database as the cause of the problem, and identified a part of the problem that MOSS is not creating or writing to a file when it is required to save state in the game. The task now is to determine the cause for skipping the file update. Unfortunately the original code for MOSS did not include substantial tools for diagnosing this type of problem. So I have been writing additional debugging code and working to incorporate it into MOSS to give me more insight into how the logic of that particular functionality is working when a player in the game causes a state change. Right now, I've modified close to 1000 lines of code in order to implement those changes, and have not yet rebuilt MOSS with the new code. I am optimistic that once
I am able to run Minkata on the updated MOSS I will be able to identify the cause of the problem.
So, given that state, what is the path forward?
First, Minkata needs to be made whole again. I am continuing to work on it, now with a fairly consistent schedule of time each week. I don't know what the problem is yet, so I can't give a schedule on a fix. I do know I have a few more days of work before I can test the updated MOSS.
Second, start testing and adding changes to bring Minkata-prime up coexisting with Minkata. Again, I know there are changes needed, and I've had to read code both in MOSS and the Uru game client (CWE) to understand where the changes need to be made. Without that information, I can't give a time frame, but expect it to take a couple of weeks.
Third, I have some fan created content, both very simple ages for proof-of-concept as well as an older copy of Doobes' Pub. I was able to experiment for a short time last year with these age additions, and found that the game client crashed or malfunctioned with them. So it is likely that there will need to be bug fixes added to the game client before we can experiment with fan content. Once I am at this point I will enlist the aid of the GoW members, opening Minkata-prime to them. Hoikas has already mentioned a possible bug that was fixed in H'uru that may be a factor. I've also heard that the Blender module for producing Uru ages has been updated several times since I did my first experiment.
So in conclusion, I'm saying that while you have not heard anything from me about Minkata and fan content for a long time, there has been considerable work being done to reach the point where we can deploy it in a testing framework. And once that barrier has been broken, the community can start working with Cyan to finish the bridge to MOULa
Thank you.
_R