Okay, one of the big gaps in the platform model we didn't really discuss, yet, is: multi-platform operating systems like Linux. I thought about these while writing a new blog post about platforms, and came to the following conclusions:
A multi-platform OS supports varying hardware platforms with every new version of it. There's two main cases involved here, first one is that a new OS version supports a new platform, second one is that support for an old, obsolete platform has been removed in a new OS version. Unfortunately, there's gray areas, too. We've seen cases, where the support for a platform within Linux was broken for several releases, and nobody noticed or cared. And this down to the level, that the code for some platforms not even compiled.
That just means that not every platform Linux officially supports is actually tested for every release, and thus working. In the end, it means that every platform port of Linux, or other multi-platform OS's for that matter, is a tiny OS in itself. And Linux is a collection of smaller OS's that share technical concepts and basic code, and therefore are released together under a common brand.
So what does that mean for Oregami?
1) Since we need to be a technical database, too, we should be able to track hardware support of the OS's in our database. This can be achieved by a m:n-connection between the hardware and software sub-platforms.
2) When a game is released "for Linux", it is almost always released for a specific platform inside Linux, mostly for x86. Whether it runs on other Linux ports, remains to be tested. Most probably not, as the game needs to be recompiled on that other platform, which makes the end product like a new release.Think Android.
3) If we'd choose to create a GamingEnvironment "Linux" with the hardware platform "All compatible HW" and the software platform "Linux", our existing possibilities of tracking game compatibility wouldn't suffice any more, because we'd need to track "hardware platform + OS version" compatiblity for every Linux release group of a game. While it may be possible, the added complexity is not really needed IMHO.
4) Instead, we should stay true to the model we already discussed, and create a GamingEnvironment for every Linux port that has seen game releases, the first and foremost one being "Linux x86". This may clutter up the GE list, but severely eases the compatibility tracking issues. And for the bigger picture, we have the facility of GE groups, where we could create a group "Linux" that incorporates all the port GE's, or we can offer deep search and listing features for games that span several GE's.
So much for a video game reserarcher's nightmare, let's see how this turns out later.