Skip to content

Epic: Flexible platform support #176

Open
1 of 15 issues completed
Open

Description

@collectoss-issue-migrator

Note

Migrated from augurlabs/augur#3594
Originally opened by @MoralCode on 2026-01-16


Currently Augur is largely dependent on the github API (since that was what it was originally written for)

When considering support for new platforms, there are lots of ways we need to be flexible/things we need to do to account for other platforms that dont quite work the same as github. For example:

  • We need underlying support for the API of the platform (i.e. github/gitlab endpoint paths, this is the obvoius one)
  • We need support for changing the domain we use to make requests with that api implementation (i.e. some platforms have multiple instances, i.e. selfhosted forgejo, github/github enterprise Add option to use Github Enterprise API for api key checks #110, etc)
  • We need to associate API keys with the combination of domain and platform that is in use (someones GHE api key prob wont work on regular github)
  • Different platforms may have different specifics for handling API keys (i.e. github does rate limits for graphql and REST independently for the same key)

Also

  • Different platforms provide different sets of data, so we likely need to adjust the table schema to accomodate as many useful pieces as possible (without just creating platform specific columns Cross-contamination between github and gitlab columns in contributors table #156 )
  • We should probably be standardizing the way tasks are structured and set up ( Use Classes to enforce consistent APIs #107 )
  • We should make sure that our various interfaces show information about all of the platforms (notably the CLI for checking the rate limits left on all configured keys)
  • Having an admin panel in the web ui that can manage keys is probably going to help users a lot.

This is an absolutely huge task thats going to need to be broken down pretty small and done very strategically to keep us on track for adding more platforms this year.

Activity

  1. collectoss-issue-migrator commented on Apr 30, 2026

    @collectoss-issue-migrator
    Author

    Note

    Migrated comment from original
    Originally posted by @Sukuna0007Abhi on 2026-01-16


    Hi @MoralCode if it's open for us.. I have the suggestion as I worked on #107 and want to complete 1 part of this task via this #107 issue..

  2. collectoss-issue-migrator commented on Apr 30, 2026

    @collectoss-issue-migrator
    Author

    Note

    Migrated comment from original
    Originally posted by @MoralCode on 2026-01-16


    based on a slack message i posted:

    im less worried about the logic of querying the APIs - its more of managing the associations between which platform implementation we use, which domain we are querying, and which keys we use to do that query, and where the data goes afterwards.

    i.e. its more about getting the infrastructure and logistics of querying data in place in a way thats reusable - right now our solutions to a lot of that are: 1) assume the domain never changes, 2) have one list of API keys specifically for that platform, and 3) making new table columns for new platforms.

    All of that doesnt really scale well.

  3. collectoss-issue-migrator commented on Apr 30, 2026

    @collectoss-issue-migrator
    Author

    Note

    Migrated comment from original
    Originally posted by @MoralCode on 2026-01-16


    some aspects of this are more critical than others too. I'm less worried about the API keys and domains since we can introduce a new platforms table or columns in an existing table or add it to the config or make a new config or something for storing this information and use those for new platforms while we migrate the old ones.

    The biggest concern/critical item is more on the "where do we store the data" side - we are currently labeling DB columns based on the platform, and that's not scalable and cannot be fixed by making a new table and running the new solution in parallel until the old one is migrated.

  4. collectoss-issue-migrator commented on Apr 30, 2026

    @collectoss-issue-migrator
    Author

    Note

    Migrated comment from original
    Originally posted by @MoralCode on 2026-01-16


    https://github.com/chaoss/augur/issues/3363 splitting the contributors table may help, but as was mentioned in a recent maintainers call, we NEED to preserve the contributor resolution process, which means understanding the process (and probably finding and fixing bugs with it)

  5. self-assigned this
    on Apr 30, 2026
  6. MoralCode commented on May 20, 2026

    @MoralCode
    Contributor

    We are also likely going to need helper functions that can:

    • identify the specific, configured forge instance associated with a given URL (should be easy with domain matching)
    • identify the API type the same way
  7. MoralCode commented on Jun 29, 2026

    @MoralCode
    Contributor
    Image

    Quick diagram of an approximately correct relationship between all the various parts of this. Some things are still missing.

    For now i dont want to make collection tasks (not pictured but they operate on repo urls) too "general purpose" until we know how similar the APIs (and thus the functions we should have in the data access classes) are. For the early steps i think its fine to define different variants of the same task for the different platform types (even if it results in some duplicate code) - i.e. we should assume for now that a specific task will always be for one platform type

  8. added
    EpicThis task is very large and has been split into subtasks.
    on Oct 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

EpicThis task is very large and has been split into subtasks.

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions