Proposal: Community-supported git org or for outdated modules and plugins

Started by edmundito, Fri 19/04/2024 15:18:12

Previous topic - Next topic

edmundito

Hello, this is neither a new plugin nor a module but a discussion on what to do when modules are outdated, and I wanted to propose something. (Moderators: Feel free to move this thread to the proper forum)

Currently, when modules and plugins are outdated, there's a lot of word of mouth, communication through forum replies, Discord DMs, or secret connections to get an updated version of the module. This is rather tedious and discouraging for game authors who want their games to work with little technical work and an unfair advantage to more seasoned members of the community who have more connections and time to get what they need.

I want to propose a way to allow AGS community members to maintain plugins and modules: With the help of the admins, we create an org in GitHub that is more open to the community, where all the outdated plugins or modules can be forked or hosted (if there is no online repo). The community can contribute to it openly and without restrictions other than providing quality code. It would be separate from the /adventuregamestudio org to have more flexibility and give more people access to the repos while being less restrictive.

I'd be happy to administer this for a while while seeking more support, but I'd like to work with the existing admins to get things set up.

Thoughts?

eri0o

I think this initiative can only work if it starts and someone has to be it's maintainer and stay with it for a long time.

Most of old code feel quite terrible when I look at, probably due to whatever limitations AGS had at the time. I would say that chatGPT is good at helping understanding the code - it's suggested comments and refactor are usually useless, specially in AGS script, but I use it to do archeology in my own codebases with some success. Most of old AGS code from others that I looked into were quite impenetrable at first look and only after breaking functions and properly naming variables I could understand something.

I am not so sure on how many libraries that are old exists that are still useful. Haven't used any, do you have some in mind already that caught your attention?

Crimson Wizard

@edmundito when you say you want to do this "with the help of the admins", which admins exactly are you referring to, and which help exactly do you need? At the moment this is not clear.

I agree with what eri0o said about maintainer, these things never work without leadership, they just stall and get disorganized, so you either take responsibility yourself, or wait until someone volunteers, which may be a very long time.

Snarky

If this is primarily intended as an archive of old modules (I believe there are very few plugins that are open-source), I think we need to consider what we can do without explicit permission from the original developers.

Many modules have been released without any defined license, and although one can probably argue that the act of posting them grants implicit permission to download and use them in a game, is rehosting them OK? Is modifying them OK? Is sharing the modified versions OK? By strict IP rules, probably not.

There's a difference between being "open-source" in the sense that the source code is available (which for AGS is more of an "accidental requirement" of releasing a module/library), and being "free and open-source" in the sense that you have permission to use and modify it freely under certain terms.

edmundito

Quote from: Snarky on Tue 23/04/2024 13:07:54If this is primarily intended as an archive of old modules (I believe there are very few plugins that are open-source), I think we need to consider what we can do without explicit permission from the original developers.

You're on point: Any outdated module that people are having trouble with can be forked or added to the repo and updated so that people can have a stable version.

Quote from: Snarky on Tue 23/04/2024 13:07:54Many modules have been released without any defined license, and although one can probably argue that the act of posting them grants implicit permission to download and use them in a game, is rehosting them OK? Is modifying them OK? Is sharing the modified versions OK? By strict IP rules, probably not.

I was not aware of this. I guess there the tricky part is that if the module has no specified license, we cannot fork it due to IP rights?

In that case, then it would be for modules or plugins with a license where the author is no longer available to make updates, for whatever reason.

@Crimson Wizard I can take ownership and make it available to the community so that it can be used.

Alan v.Drake

I'm not sure git is the best way to store modules.

When looking for a module the first information should be which AGS version is compatible with, there should be filters, an easily accessible history from which you can download the right version, a way for users to submit a new version for an abandoned module, declaring a dependency to other modules, and perhaps a clear license.

Git is not for everyone, and expecting a maintainer to always be around to oversee modules is unrealistic.

The problem here is convenience, and the only solution I can think of is creating a platform that makes these actions convenient.
Basically what eri0o was doing with agsModuleList but more fleshed out.

I could do something simple with a bit of PHP.
At the moment I'm swamped with work, but I could work on it in 3-4 weeks from now. We can discuss the specifications in the meanwhile.


- Alan

eri0o

Uhm, I think these are different things. I still store the source code in a git repository of js library that I develop and release to npm. Same for my python stuff that I release to pypi.

I think git is just how to sanely maintain the project source code and make collaboration viable.

The package indexer is for more convenient consumption of the released product with extra features - like dependency manager and such. They are just different things afaict.

Alan v.Drake

Exactly, they are different things. Here I'm presenting the user side of things.

GIT is great for us developers, but for an average AGS user going through GIT to find things is an obstacle. Not to mention forking and sending a PR.

There's a reason the main platform for sharing modules continues to be the forums. I just think neither forums nor git are the best fit for managing them and showing them to users.

Not many in the community might have the drive to submit PRs to github for modules, but they might post code fixes on the forum thread. But the forums aren't particularly amazing for managing modules, they're just more accessible than git platforms, which is why I wonder if it isn't worth building a site to manage and upload modules with greater ease.



Plugins are a different matter, of course. They're not just a pair of ash/asc code snippets anyone can create or fix, and I fully agree they should be somewhere on github.


- Alan

Snarky

Quote from: Alan v.Drake on Tue 23/04/2024 17:49:09GIT is great for us developers, but for an average AGS user going through GIT to find things is an obstacle. Not to mention forking and sending a PR.

I don't see how github is more of an obstacle than any other file hosting site for someone just looking to download a module.

And in order to allow people to modify the modules and share updates in any kind of systematic manner, you will need some kind of source control, whether that's git or svn or something elseā€”and why would we think we can build or own, better system? I say stick with the standard, and if people can't figure out how to use it, someone will just have to do it for them.

If github is chosen, does anyone have a suggestion for how the archive should be organized? I would assume we'd want a separate repo for each module rather than a single one for the whole collection: that way people can get the particular module they're interested in, make a local branch of the repo, fork it, etc., without involving the whole archive of other modules, and the version histories are kept separate. (Besides, a number of modules already have their own github repos.) But I can't figure out just how you would group a bunch of repos in github. They have things like "projects" and "organizations," but I can't fully wrap my head around the semantics.

Crimson Wizard

Quote from: Snarky on Fri 26/04/2024 16:35:00But I can't figure out just how you would group a bunch of repos in github. They have things like "projects" and "organizations," but I can't fully wrap my head around the semantics.

This is called "organization", it's a "super-user" that may have members, teams (with varying repository access) and repositories.

Example:
https://github.com/adventuregamestudio/

Alan v.Drake

Quote from: Snarky on Fri 26/04/2024 16:35:00I don't see how github is more of an obstacle than any other file hosting site for someone just looking to download a module.

Learning how to download the code from github is merely the first inconvenience. To contribute you need an account, install git, maybe a gui, you need to learn how to clone a forked repo, commit the code, and submit a PR, and pray the gods the repo owner is still active.

The other problem is that you're only finding a module's repo because someone made a post on the forum/wiki/erico's module list, because those are the likely search results.
You don't just search "ags modules" on github and get what you want, unfortunately.

Going on a hunt for modules is the wrong approach if we want something manageable, it's the modules that should come to us where we can manage them.

People having modules on github is completely fine, there are APIs to query that allow to obtain a list of tags or releases, so it's possible to integrate on a custom solution.
But what about the others? Maybe a dev downloads a module, fixes the old instances of SetViewport and few leftover errors, but he can't be bothered going through the hoops to submit the fix.
Or maybe he just hates git and wants to just upload the asc/ash contents. Maybe even saving on dropbox and sharing the link on the forums is too much effort.
In such a case, we have lost a potential module update submission.

If we want to receive help from the community we should find some way to make it easy to contribute.


- Alan

Snarky

And what I'm saying is that you're still going to need most of those concepts, because otherwise how could we keep track of module versions and ensure that what gets uploaded is legit? So you just end up reinventing a source control system. (I suppose you could have a page with a simple upload button that sends it to a maintainer to do all the source control stuff behind the scenes, but you said that relying on a maintainer to always be around is unrealistic.)

And meanwhile, people are still going to be posting fixes to forum threads, so you'll have to "hunt for modules" in any case.

Quote from: Alan v.Drake on Fri 26/04/2024 23:33:13The other problem is that you're only finding a module's repo because someone made a post on the forum/wiki/erico's module list, because those are the likely search results.
You don't just search "ags modules" on github and get what you want, unfortunately.

That's what this proposal is meant to solve, surely?

Crimson Wizard

I find it difficult to understand what Alan is proposing there. At first I thought that he meant a custom web "frontend" for a github repository, to ease looking up for releases and sending patches, but each next comment gives me more doubt.

There has to be a maintainer, and access control, because if anyone can just replace source code with no restrictions, there will be no guarantee for the quality of the code, nor its usability, or consistency in design.

There has to be a source control, because a contributor needs to know which version they are fixing (which commit they are applying their changes to); and maintainers must be able to revert back in case of bad changes.

If there were a webpage "frontend" that would allow to browse and find releases, as well as quickly send a patch for review, that's fine, but it should have something solid underneath.

edmundito

I created an organization here and invited some core AGS engine/editor development members.

https://github.com/orgs/agscommunity/

I'll make a more official post later to see what I'm looking for, but if you're reading this and would like to join to create/fork repos, you can DM me and I'll add you.

SMF spam blocked by CleanTalk