Replies: 2 comments 6 replies
-
First I think we need to set the context and declare the need we are thinking to fulfill, so we are on the same page. Please comment if there is an aspect that I've missed.
Given those and the discussion on the list, I felt that item 2 was the most urgent to fulfill. I'm not at all fond of using flat file structures to store multi-dimensional structured data, so I immediately thought "database". And, as I think we can trust the community to keep the IF Archive/DB up for a long time, and at least give a heads up when it needs to be taken down or move, the database can be seen as a "front-end" to the IF Archive/DB. It is easy to export/download the data in Caspio turns out to be very simple to use if you've tried Microsoft Access or LibreOffice Base. And I'm sure there are, and will be, a number of similar alternatives. The free plan gives us everything we need. (The DB is, and probably should stay, a simple one-table implementation. I was tempted to break out an "author" table, but decided against normalizing it because a simple So my thinking would be to use this repo as a "backing store" where we could periodically dump the exported data from Caspio for safe-keeping. Nothing more, nothing less. (If GitHub has a built-in Remains 4) the "Alan Games Source Code Repository". Perhaps for this purpose a structure like you suggest would be appropriate. Again I'm thinking that the "Alan Games DB" would then have links here in the same way as it links to the actual games in the IF Archive. Then the only structure here that would make sense to me is the v2/v3 division since if you are browsing this repo for source examples you are looking for either v2, or more probable, v3. If you want the source for a particular game, you'd probably go directly from the games page in the DB. |
Beta Was this translation helpful? Give feedback.
-
As you can see I experimented with exporting data from Caspio and it turns out that the CSV displays as a table by GitHub, which is great. It would have been even better if the links would have been recognized too, but you can't have everything. It's possible to export as XML, Excel or even Microsoft Access as well, if we think that would be better (but I think not). |
Beta Was this translation helpful? Give feedback.
-
@thoni56, based on the previous discussions on the List of ALAN Games on IFDB thread on the Alan Google Group, I think that a good development strategy for this repository that would be simple to start with, yet flexible enough to allow future growth without breaking things, could be to:
Organize games into a simple directory-based classification system that splits game into: ALAN-2 vs ALAN-3 games; the game's locale; "game slug", i.e. a very-short version of the title (e.g.
cloak
for "Cloak of Darkness"), which is often already used in the actual storyfile name.I.e. adopting the following naming convention(s):
In each game folder, add a JSON file with the game meta-data (title, author, locale, pub. date, alan-version, IFDB link, etc.) following some guidelines provided in the repository documentation (if not a proper JSON Schema).
These JSON files could then be used in the future for various applications, ranging from the creation of a real database (e.g. for an app using SQLite) to the repository automation itself.
E.g. once the archive has been populated, I was thinking that we could exploit Ruby and Rake to merge all the different JOSN files into a single in-memory JSON file, and then use mustache templates to automatically generate:
README.md
in each adventure folder, presenting the game info (like a library card).README.md
file.docs/index.html
file with the games list (download links and all) by title, by author, etc., as an single-page HTML website served via GHPages.I've used mustache templates before to automate the creation of repository contents and/or documentation, and found them to be very easy to work with, especially in Ruby since it's mustache's native-implementation language. The Ruby mustache implementation comes with some extra power which can make its use even simpler, especially with Rake.
The idea of adding a simple JSON file to each game folder seems a reasonable maintenance burden, since contributors are only asked to focus on that specific game, as opposed of having to fiddle with a global JSON games data.
Initially we could simply focus on using this metadata to create the README docs of each folder, to ensure nice previews on GitHub. As the project grows, we can start to add more mustache templates and add the GHPages website, etc. In any case, change of mind about the metadata fields and structure only requires minor adjustments to the mustache templates and the toolchain, since its a very simple (yet powerful) logic-less templating system.
What I like most about this approach is these JSON files could be used for so many other things, including their translation to other JSON Schemas so that they might be exported to other tools (databases, etc.). If any such third party tools was to request us to add extra JSON keys to help better support their product, their addition wouldn't harm our project since it's all "background data" for the toolchain.
How do you see this proposal? Would it work well with the online database project you've set up? (i.e. in terms of sharing data in either or both directions)
Any suggestions?
Beta Was this translation helpful? Give feedback.
All reactions