Skip to content

[RFC] Technical Debt Audit & GSoC 2026 Implementation Roadmap #555

@ayushshukla1807

Description

@ayushshukla1807

Hey everyone,

With the GSoC pre-selection phase wrapping up, I wanted to share a quick summary of what I've been seeing under the hood of Montage. Over the last few days, I've managed to land a few surgical fixes (PRs #544 to #553), but the process really helped me map out where the project needs to go this summer.

Whether or not I'm selected, I think these items are high priority for the project's health:

  1. Modernization & Safety: We've got a lot of legacy Py2 stuff (like six) that's just taking up space. I've started adding type hints in refactor: modernize utils.py with type hints and remove legacy Py2 code #551, but we should really push this across rdb.py to stop those annoying NoneType crashes. Also, we really need to kill that circular import TODO in loaders.py once and for all.

  2. Data Integrity: I found some favorites leaking between campaigns. PR fix: add database-level UniqueConstraint to Favorite model #553 is a start, but we need a full Alembic setup to enforce these constraints at the DB level so we don't have to rely on application-side checks.

  3. Infrastructure: The hardcoded debug login in public_endpoints is a bit of a security headache. I've got a proposal in feat: add /health check and modernize public endpoints #552 to standardize this. I also think we should beef up the /health check to monitor the Toolforge volume connections directly.

  4. Juror Tools: The entry_lookup I added in feat: implement entry ID lookup by filename for jurors #550 has a lot of potential. I want to build that out into a proper metadata inspector so jurors can see uploader history without leaving the interface.

I've attached a quick architectural roadmap below. Really enjoyed getting into the weeds with this!

graph TD
    A[Montage Backend] --> B[Modernization]
    A --> C[Data Integrity]
    A --> D[Infrastructure]
    B --> B1[Type Hints - Python 3.14]
    B --> B2[Remove Legacy Py2/Six]
    C --> C1[Alembic Migrations]
    C --> C2[UniqueConstraints]
    D --> D1[Secure OAuth Config]
    D --> D2[Health Monitoring]
Loading

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions