Solaire / GLC

Lightweight, console-based, tool which automatically detects installed games and displays them to the user.
GNU General Public License v3.0
16 stars 3 forks source link

GLC2 platform discussion #71

Open Nutzzz opened 1 year ago

Nutzzz commented 1 year ago

As you, @Solaire , have mentioned a few times, the idea for GLC 2.0 is to separate platforms into plugins. I've got a couple of questions:

  1. What will this look like in practice, i.e., do you have the idea that this will be like Playnite or GOG Galaxy, where these are going to be maintained in separate repositories (potentially by separate individuals)? How will users discover these plugins? Would the user have to download each separately, and copy them to their plugin folder? We could have various built-in automation methods and/or websites to handle these things, but that seems like it adds a lot of work for both us and our users for minimal benefit.

  2. Note that the EA Desktop fix for #66 was based mostly on GameFinder's wiki, but not so much on its code. After examining it further, however, I found there were a lot of aspects that I liked, and thought it would be nice to use its various NuGet packages as references (there are separate ones for each store handler). I thought this would simplify things for us, and it would be nice to share the burden of discovering/fixing breaking changes for the various launchers/APIs. But the current implementation is rather limited for our purposes, and it only supports a few platforms. In this issue, I asked to what extent @erri120 would be interested in--with my help--increasing the scope of his project for uses like ours, and he was, quite understandably, loath to do so. So I've been toying with a rebranded fork (with attribution) of his project here: GameCollector. I'm learning some new tricks from examining his code, and I've started by moving to a generic record type with more fields, and adding additional handlers. However, at this point I'm wondering how well this might or might not dovetail with your plans for GLC2.

Nutzzz commented 1 year ago

EDIT: Moved this comment to (https://github.com/Solaire/GLC/issues/39#issuecomment-1474432565)

Solaire commented 1 year ago

Hey there. I have been burnt out from writing code and wasn't looking at any projects. I'm trying to get back to finish some things and I've been thinking about glc version 2.0. I think this is the final plan I came up with and been slowly working on implementing; the project will be split into separate components:

The reason for that is that the project has grown to be quite big and feature-rich (e.g. images in terminal) and I want people to be able to use the core to make their own apps (a good example would be an integration with PowerToys or voidtools everything).

As for the plugins; it's a little tricky. On one hand I'd like to have a separate plugin for each platform (personally I'm only interested in 5 platforms) but I understand that it would quickly lead to a messy repo. Perhaps the best thing to do would be to have the extension base in a separate repo, release it as a nuGet package, and implement all the 'official' platforms in that repo. The glc app would be able to download the plugins from there. We could use the platform scanning implementations from your GameCollector repo.

What are your thoughts?

Nutzzz commented 1 year ago

Oh no worries, I totally understand burnout.

I dunno. I understand the benefits of loosely coupled extensibility, but a plugin model adds complexities for both users and maintainers, and attempts to decrease the burden on one is often at the expense of the other.

Not that I wouldn't find it an interesting learning exercise in any case.

Nutzzz commented 1 year ago

FYI, GameCollector v3 now implements all of the platforms supported here.