Yep I was wrong. I should've thought twice before rushing in my words. What I meant was how, although .NET was meant for cross-platform development, the development for Mac (perhaps not for Linux in this case) was more like an added-on benefit, just tagging along, but it not sharing an equal focus. That's just how I felt while using CKAN on Mac, at least.
I expanded 3 parts in interpreting the metadata: license, version comparison, and "any_of". My implementation should be able to understand all licenses listed on SPCX License LIst, and pulls detailed information from it. I compare mods' versions the same way as CKAN does, alternating strings and numbers, but also take into account for non-Latin characters and semantic versioning-like versions.
The "any_of" recursion will go only as deep as it is in the metadata. By "infinite", I meant it's capable of handling as many levels as there is, like unlimited depth, but not self-referencing or digits-of-π kind of infinity.
My intention was to allow metadata files to expect a behaviour as if they were parsed by CKAN, and at the same time allow for some room of growth. However, I must admit that until I saw your reply, I overlooked how CKAN might deal with metadata outside of its specification, and how my implementation might clash against it with unexpected behaviours. Thanks for the words of caution.
The whole infinite "any_of" recursion started loosely because of the incompatibility between JSON's weakly typed and Swift's strongly typed data structures. It was quite fun to solve it by stretching their compatibility to as wide as possible, and indeed I did it mostly for fun. Although, it did take me about 2 weeks to solve this problem. I posted this stack overflow question a few days before I found a solution.
Yes, this is definitely true. Since all the relationship fields in the metadata are just logic expressions, however complex they might be, they can all be reduced to a single layer of ands and ors. I must admit, I did the recursion mostly for fun, and also for modders who might want to use multiple levels of "any_of" out of either convenience or laziness.
EDIT: Some grammatical issues. I typed at first in a hurry.