A weekend of Quaddicted future?

Oh god how complicated did they make. It was trivial a while back. :o)

The mails should have gone out now.

Thanks - got in!

examples of potential metadata (with bugs and discrepancies as I wrote them over time):

for gmsp3:

{"filename": "gmsp3.zip",
 "files": {"gmsp3.txt": {"size": 4950, "timestamp": "2003-10-19 16:22:52"},
           "gmsp3v2.bsp": {"size": 5617208,
                           "timestamp": "2003-10-12 19:44:58"}},
 "install": {"extract": "{quake}/id1/maps/"},
 "sha512": "20cb367d7ade48ff98288e588d9fc34e127ee51a84baab92105e1d109822b34a5238bfc04acac56a5865a442d3c0b64694dd191289394bb36d3fdcbad381983d",
 "size": 2319710,
 "tags": "title:Day of the Lords",
          "author:Howard \"GlassMan\" Shaw",
          "game:quake",
          "mod:id1",
          "bsp:gmsp3v2",
          "style:castle",
          "style:medieval",
          "size:big",
          "todowhat:classic",
          "size:large",
          "textures:unreal",
          "textures:rtgnosis",
          "award:planetquake-map-of-the-week",
          "releasedate:2003-10-19",
          "dependency:id1"],
 "urls": "https://www.quaddicted.com/files/by-sha512/d/20cb367d7ade48ff98288e588d9fc34e127ee51a84baab92105e1d109822b34a5238bfc04acac56a5865a442d3c0b64694dd191289394bb36d3fdcbad381983d/gmsp3.zip"]}

quoth2.2

{"sha512": "7814d73af2041c13a8d0700caccf4516cae7d16f62bfd9a196b19794dae5bbfe5ae533d79761a9bd72904cea11dc3bb997368d2d3c603873281b5396ba6915f5",
 "filename": "quoth2pt2full.zip",
 "size": 54792367,
 "tags": "title:Quoth 2.2",
  "author:Preach",
  "author:necros",
  "author:Kell",
  "game:quake",
  "mod:quoth",
  "releasedate:2014-05-04",
  "dependency:id1",
  "version:2.2",
  "basename:quoth"],
 "urls": "https://www.quaddicted.com/files/by-sha512/5/7814d73af2041c13a8d0700caccf4516cae7d16f62bfd9a196b19794dae5bbfe5ae533d79761a9bd72904cea11dc3bb997368d2d3c603873281b5396ba6915f5/quoth2pt2full.zip"],
 "install": {"extract": "{quake}/quoth/"}}

quoth2.2 with included files from the zip and included files from one of its paks, those things of course would be optional:

{
  "sha512": "7814d73af2041c13a8d0700caccf4516cae7d16f62bfd9a196b19794dae5bbfe5ae533d79761a9bd72904cea11dc3bb997368d2d3c603873281b5396ba6915f5",
  "filename": "quoth2pt2full.zip",
  "size": 54792367,
  "tags": 
    "title:Quoth 2.2",
    "author:Preach",
    "author:necros",
    "author:Kell",
    "game:quake",
    "mod:quoth",
    "releasedate:2014-05-04",
    "dependency:id1",
    "version:2.2",
    "basename:quoth"
  ],
  "urls": 
    "https://www.quaddicted.com/files/by-sha512/5/7814d73af2041c13a8d0700caccf4516cae7d16f62bfd9a196b19794dae5bbfe5ae533d79761a9bd72904cea11dc3bb997368d2d3c603873281b5396ba6915f5/quoth2pt2full.zip"
  ],
  "install": {
    "extract": "{quake}/quoth/"
  },
  "files": {
    "launch.bat": {
      "size": 6927,
      "timestamp": "2014-05-03T11:23:28.000Z",
      "sha512": "c29493f67183b46cb1758e4d9680e2a6e7a675cb996741f8103098d1d3d8292a0fb2e2067fed5723aed7fdfdf387583a7ee34426094d3b24f290952342fc8220"
    },
    "pak0.pak": {
      "size": 48226771,
      "timestamp": "2008-02-06T20:38:00.000Z",
      "sha512": "c0d6f7553368e459522f63d6bd4cfc767a0f7275bd6826b434b3fac378bbeb5bd1935fa32d28959a1d6f4bfed19625f6a45048b695b29f31372c466dec59858e",
      "files": {
        "gfx.wad": {
          "size": 128932,
          "sha512": "fbb73295dc57facb7fb120e9f6d5e56c675cd9cfe5f574c1ab2be8a12776e8ca997a70fe5a10b0f0ce8361d73bf89f9b3644babeb7c494fd5b66266d70d97ac0"
        },
        "gfx/env/bseaup.tga": {
          "size": 786450,
          "sha512": "54bc7c070a2f935b0ffb4f2bccd6d5cafd34c53d5073bdc459dfb01f1590efed1c7218723c258ee572ee2a3fe2c7c61700e43c67e952417b31fa462350154bdb"
        },
        "gfx/env/bseabk.tga": {
          "size": 786450,
          "sha512": "d76af137a8484d092f8852a4920bc5f7e72c7feeaf5b7bb9b5f3c8eb25b18ff67f51b495ca8150d603482c75302f55577488af9e6a4d42681c8dc04b0148cacf"
        },
        "gfx/env/bseadn.tga": {
          "size": 786450,
          "sha512": "781141d24979ea3e652ac22e1a5bac5609b8a4464d5379a11cfbef104127a2fcbd44b5f5a0fe1dbb08206749e3da27d3ffc105845a132399babab41d0aefedb4"
        },
        "gfx/env/bseaft.tga": {
          "size": 786450,
          "sha512": "4c881507ef0a00f7b93fa6c349ed99b9a6469f24f5082789128d58cbeb93284aef04045a2a9520fce5cabe1c78ac6845fbc37366a92f8ff20607ef90de29acc5"
        },
        "gfx/env/bsealf.tga": {
          "size": 786450,
          "sha512": "3c4b36e1916c994e67f34c221476b718d0e1709504ff13da9523a2701f9a82cacc5fb2485dc4bb0e1efe11ef8c11e9cbca69103e6c5d6a377b740c0ea9648ab1"
        },
        "gfx/env/bseart.tga": {
          "size": 786450,
          "sha512": "79e8788b9a1e018f37de69594b1745f8f719603ad0653f6cf29d65b4c67d3d0b7a227a564de2c90eeb2104a7f1653c95ab76c04b84000de1f86d2cd7d3690884"
        },
        "gfx/env/fodrianlf.tga": {
          "size": 502698,
          "sha512": "436f6f951cd5c09a7cdfac878af56bd90fa531186e72a59a4a9bd04a3478a285df50dde7db51785b1ab0ed093ddda4a0d07bfa5c4c9895ce3515cf1960128f11"
        },
        "gfx/env/fodrianrt.tga": {
          "size": 468382,
          "sha512": "990ef367a39e485182fcaf5e14f84efce2a1cc8b764994fce332219cf3187721cf8099294a70ca047aaf59180834073900eec5d1947dbf930b50ffffdbe28520"
        },
        "gfx/env/fodrianup.tga": {
          "size": 538367,
          "sha512": "2f16b501421f116b3f2bd0f1ad094f168033adb59a2d0ef5cd84ffa21a3439fd9e137c66d5c07436e41fac02ccbf364199b9243bf16438f58a725738fc6e985f"
        },
        "gfx/env/starsbk.tga": {
          "size": 51294,
          "sha512": "2fc454733b177ee21ba5dfc74fe40fe0c17aa05dd405d7004cb1dbfa8779dada4432498a8460f4a595d7c768bbe3a8c43fae1506410496275073cb41bbbd990e"
        },
        "gfx/env/starsdn.tga": {
          "size": 51322,
          "sha512": "4abe8d9c39eb75d6496ed55c99b7d4c41c7110c7e0a07f15575e5ab625eaa1ccbafcfe0d543f9a240953e3c6f2d282bd14e08aaa3d0a9e6c1ab0d3e1ea864651"
        },
        "gfx/env/starsft.tga": {
          "size": 51685,
          "sha512": "745039e042cde1e0e82bb96b6c49e8ba168bc1cc9a1a6ce172bf760daad3a67ea3f5df342d01dfe73311b335f04d774e3427664301d331d77bf06b2299ce5117"
        },
[stripped] 

pak1.pak because why not, it’s not just zip files:

{"filename": "pak1.pak",
 "install": {"basedir": "{quake}/id1/"},
 "releasedate": "123-10-19",
 "sha512": "123",
 "size": 123,
 "tags": "title:Quake",
          "author:id Software",
          "game:quake",
          "mod:id1",
          "bsp:e2m1",
          "bsp:e2m2",
          "bsp:e2m3",
          "bsp:e2m4",
          "bsp:e2m5",
          "bsp:e2m6",
          "bsp:...",
          "version:1.06",
          "dependency:id1?!"]
}

The chat approach turned out not to be a good idea so above is what we discussed. Input and more discussion would be HIGHLY appreciated!

How about this year? Small, global, hackathon style?

I’m down. Lets do this!

I might find some time in the end of the year. Any suggestions what to focus on? I would prefer to iteratively replace bits of the current system step by step so it stays fun and managable. Maybe a conversion of the current database to that JSON format first, then the reverse of parsing that into the database? Then we could put the JSON files into Git, let everyone contribute and have the database take updates to the live site.

I will be working on that today.

I am on dumptruck’s discord and would love some collaboration :slight_smile:

Dumped some early examples into https://github.com/SpiritQuaddicted/QuaddictedPlayground/ , e.g. https://github.com/SpiritQuaddicted/QuaddictedPlayground/blob/master/json/by-sha256/7/70fc2496d9d48a6476ecf7fbd28aa7335fbb51ffa7c5d88d8d70eccd9c891404.json

We have a dedicated channel on dumptruck’s discord now, you are welcome to join in there.

Here is what I posted as mission:

So far I wrote some Python to play with the existing database, exported it to JSON files (https://github.com/SpiritQuaddicted/QuaddictedPlayground/) and imported those back into a new database with just two tables: files and tags.

Next step will be a prototyp of a webpage like https://www.quaddicted.com/reviews/ and the details pages linked from it.

This will not make it easier for regular mappers. It would require a Github account and knowledge of how source control works. Or knowing someone who knows these things.

This would just be a mostly unstructured document of strings that the “client” (website compiler or Quake engine) would have to manually parse as a different syntax.

This is where fixing the packages would make the data more useful and more likely to be used.

This is apparently not particularly useful and would require more functionality in the clients to work around the bad “data”. A list of “start” maps is at least what FTEQW wants.

I think a simple web interface created specifically for uploading maps and mods would be better.

I think Quaddicted would be far more useful as a dedicated map/mod repository with an interface made for simple clients. It’s also in a position to enforce some standardisation on uploads; or at least recommendations.

Having to describe how a particular client should launch or use the data is, I think, a losing battle. Far better, I think, to make the data clean, and then describe it well.

Likewise, uploads via the website could/should be unpublished until approved by a moderator.

This is just how I see Quaddicted; like a lvlworld for Quake 1 maps. I think making it a general “bucket” of files would be to make it less useful; and also make it a less-used clone of moddb.com.

Thanks! I hope this was not new to you, but that you had seen it last year when this all started?

I think there are two important things I must stress:

  • There will never ever be editing of files. The site is an archive and must support any kind of format or structure.
  • A focus on just SP maps (and whatever constitutes SP mods) would be a missed opportunity as all other Quake files are also in dire need of a proper catalog.

That was still a huge step from being three people with editor access as it is nowadays, plus it would have been public, with free history and tons of tooling and APIs around it.

It would be simply key=value strings, nothing hard to parse and easily supporting multiple values for a key (e. g. multiple authors). Dunno though, the alternative would be having something like: "tags": {"author":"single author"], "dependency": "packageA", "packageB"]}
Same data but you are right, this would save a step of additional parsing.

Repackaging goes against the spirit of an archive and it was a big mistake that we did this in the past instead of fixing the issues at the core of the system (metadata and Quake Injector support). Even if it was different, this would be a horribly time-intense labour.

This would be hugely useful. For example one could easily see if a particular file is also bundled in other releases. Or clients could make guesses about features of a package based on its metadata (without having to download and inspect it themselves).

Sure! This was a thought on the process if a Git-based approach was used.

Quaddicted is nowhere near that position nor should it ever be. Recommendations have been there for years and are constantly ignored even by experienced people. People will always release things as they like and the system must be able to handle that. It is/should-be an archive, not a stream-lined, repackaged bunch of selected releases.

It would cost pretty much nothing to have optional namespaces for certain clients. If someone cares for one, they can add what is needed (think of all the DP gameplayfixes/-bugs for example), other clients can just ignore it.

Sure! This was a thought on the process if a Git-based approach was used.

[quote=hemebond]
This is just how I see Quaddicted; like a lvlworld for Quake 1 maps. I think making it a general “bucket” of files would be to make it less useful; and also make it a less-used clone of moddb.com.[/quote]

We have a long history of trouble on the border between maps and mods, this is something that has done a lot of damage in the past. The site already is a bunch of other files, take a look through https://www.quaddicted.com/files/. The origin was the “SP maps” and thus only that got an interface at a certain point. This is not the vision I have nor has it been robust for the past 5 years or so.

There’s a bit of a problem between what people want and expect, and what currently happens for files. Dwell Episode 1 being split between version 1.0 and 1.2 is nonsensical, as is Copper being split between like 7 different versions.
As a middle-ground, some kind of in-listing versioning would do wonders. Not every listing can be AD (where there is a mass of comments and ratings with each release) and having to re-link your listing across sites is extremely annoying.
It could function the same as it does now, where versions have different ratings and comments, but a tab/dropdown could switch you back to older versions, since downloading them is most likely an extremely niche thing 99.99% of people would never do. You could also possibly keep the ratings and comments, but show what version they were commented on (older ratings would be compiled into an average, and newer ones would be split into their own thing.)
The old Dwell / Copper / SMEJ listings do nothing but cause confusion, and I feel it’s only this way because you’re trying to keep Injector compatibility at the detriment of the usability of the site. Injector should be updated as the site needs it, not the other way around imo.

(Edit: It also doesn’t help that this is inconsistent at best, with SMEJ having it’s patch relegated to an optional download… patches should be opt-out, nobody wants to download a broken version of a map pack just because the archivist thinks the patch is less worthy of it, or something.)

I had seen it but couldn’t find it again because I didn’t realise it was in the news section :smiley:

[quote=Spirit]I think there are two important things I must stress:

  • There will never ever be editing of files. The site is an archive and must support any kind of format or structure.
  • A focus on just SP maps (and whatever constitutes SP mods) would be a missed opportunity as all other Quake files are also in dire need of a proper catalog.[/quote]

Hmm, I’m going to message you on Discord so we can have a chat. I think I’ve been a bit unfair with where I’ve been taking the rebuild, pushing it in the direction I wanted, and I don’t think I share your goal for it.

No need to be so snarky. Seriously, that’s not nice.

Functionality on the frontend is very important and something that could have been implemented by anyone via https://github.com/SpiritQuaddicted/Quaddicted-reviews (best don’t touch that old spaghetti…). It would be a major effort to integrate your ideas in that. Same for the Injector.

I like your ideas but they are not directly related to the core issues I put the focus on first and which are supposed to be the foundation of a new frontend. Does the structure of metadata discussed in this thread not provide the basis for your ideas? If not, please suggest how it could be modelled instead.

Hemebond: Yeah, let’s do that! I am sure we can find a good way. :slight_smile:

[quote=hemebond]I think I’ve been a bit unfair with where I’ve been taking the rebuild, pushing it in the direction I wanted, and I don’t think I share your goal for it.[/quote]See, this may be a problem… I think the mapping community’s goals for Quaddicted might be a bit incompatible with whatever Spirit considers it to be.

No one needs vague statements of controversy. Please don’t post such negativity.

I see nothing incompatible here, if you do, be constructive if you can.