Hi everyone,
My name is Jiachan Li, and I am a Computer Science student at Northeastern University, currently focusing on software engineering and AI. I am very interested in contributing to Django through Google Summer of Code 2026.
I would like to work on the “Experimental feature flags and processes” project, and I would greatly appreciate any feedback on my proposal draft below.
Problem Statement
Django’s strong commitment to backward compatibility makes it difficult to experiment with new features directly in the core codebase. Once an API is released, it becomes hard to change or remove, which slows down innovation and iteration.
An experimental feature flag system could provide a safe mechanism for introducing and testing new features without breaking stability.
Proposed Solution
I propose introducing a structured experimental feature system with the following components:
- Settings-based feature flags
EXPERIMENTAL_FEATURES = {
"NEW_FEATURE": True
}
This allows developers to explicitly opt into experimental functionality.
django.experimentalnamespace
from django.experimental import new_feature
This makes it clear that a feature is unstable and subject to change.
@experimentaldecorator
-
If the feature is not enabled → raise a RuntimeError
-
If enabled → emit a FutureWarning
This ensures both safety and visibility.
- System checks for deprecated/removed features
Django could track removed experimental features and provide clear errors if users still enable them.
Implementation Plan
Phase 1 (Weeks 1–2):
-
Design API for feature flags
-
Define decorator behavior
Phase 2 (Weeks 3–6):
-
Implement settings-based flag system
-
Add runtime validation and warnings
Phase 3 (Weeks 7–9):
-
Integrate with selected Django components (e.g., ORM or templates)
-
Write comprehensive tests
Phase 4 (Weeks 10–12):
-
Documentation and examples
-
Incorporate community feedback
Expected Outcomes
-
Safer experimentation within Django core
-
Faster iteration on new features
-
Reduced risk of breaking changes
Questions
I would really appreciate feedback on the following:
-
Is this combined approach (settings + namespace + decorator) appropriate for Django?
-
Is this scope reasonable for a 350-hour GSoC project?
-
Which Django components would be best for initial integration?
Thank you very much for your time and feedback!