You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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:
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.
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.
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.
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]
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:
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 acrossrdb.pyto stop those annoyingNoneTypecrashes. Also, we really need to kill that circular import TODO inloaders.pyonce and for all.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.
Infrastructure: The hardcoded debug login in
public_endpointsis 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/healthcheck to monitor the Toolforge volume connections directly.Juror Tools: The
entry_lookupI 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]