Changes between Version 2 and Version 3 of SummerOfCode2027


Ignore:
Timestamp:
Nov 9, 2026, 9:22:40 AM (32 hours ago)
Author:
Sarah Boyce
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SummerOfCode2027

    v2 v3  
    128128The project ideas below will list key skill, but all assume a knowledge of Python, and familiarity with Django itself.
    129129
     130== Add migration hooks for Django and third-party apps ==
     131
     132|| Difficulty || Hard
     133|| Size || 350hr
     134|| Mentors || (need confirmation)
     135|| Key Skills || Django ORM, migrations
     136
     137Introduce an API for apps to respond to migration operations with additional operations. Adapt `django.contrib.contenttypes` and `django.contrib.auth` to use it, making content types and permissions available to subsequent data migrations.
     138
     139The design should account for reversing and squashing migrations, database routing, and apps being added to existing projects. The expected outcome is a tested and documented API usable by Django and third-party apps.
     140
     141References:
     142 * [https://code.djangoproject.com/ticket/29843#comment:9 Ticket #29843: Create permissions using migration operations]
     143 * [https://forum.djangoproject.com/t/can-the-migration-system-be-extended-by-third-party-apps/44009/4 Forum discussion: Extending the migration system]
     144
     145== Develop scalable pagination for large querysets ==
     146
     147|| Difficulty || Hard
     148|| Size || 350hr
     149|| Mentors || (need confirmation)
     150|| Key Skills || Django ORM, SQL, database performance
     151
     152Develop a third-party pagination package that avoids expensive counting and large offsets, with cursor-based pagination as a promising approach. The design should address ordering, navigation in both directions, and supported queryset limitations.
     153
     154The expected outcome is a published package with tests, documentation, and performance benchmarks, accompanied by a Django blog post inviting feedback to inform development and possible inclusion in Django.
     155
     156References:
     157 * [https://code.djangoproject.com/ticket/37220 Ticket #37220: Scalable pagination]
     158 * [https://code.djangoproject.com/ticket/26451 Ticket #26451: Historical pagination discussion]
     159
     160== Composite Foreign Keys ==
     161
     162|| Difficulty || Hard
     163|| Size || 350hr
     164|| Mentors || (need confirmation)
     165|| Key Skills || Python, Django ORM, SQL, database constraints, migrations
     166
     167Add support for foreign keys referencing composite primary keys, building on draft PR #18868. This includes database constraints, validation, and migrations.
     168
     169The design should address explicit field mappings, fields shared between relationships, and whether automatic field creation is feasible. It should also consider a standalone `ForeignKeyConstraint` and how composite relationships interact with virtual fields and the usual `<field>_id` attribute.
     170
     171The expected outcome is a tested and documented API supporting composite foreign keys across Django's supported database backends.
     172
     173References:
     174 * [https://code.djangoproject.com/ticket/35956 Ticket #35956: Add composite foreign keys]
     175 * [https://github.com/django/django/pull/18868 Draft PR #18868]
     176
     177== Add translation catalog checks and statistics to makemessages ==
     178
     179|| Difficulty || Medium
     180|| Size || 175hr
     181|| Mentors || (need confirmation)
     182|| Key Skills || gettext, Django management commands, internationalization
     183
     184Extend `makemessages` to check whether translation catalogs are up to date and report translation statistics without modifying `.po` files.
     185
     186The work includes defining command options and reliable exit codes for automated checks. Checks should distinguish outdated catalogs from incomplete translations and ignore differences caused solely by generated metadata.
     187
     188The expected outcome is tested and documented functionality suitable for local development and continuous integration.
     189
     190References:
     191 * [https://code.djangoproject.com/ticket/26803 Ticket #26803: Add a statistics option to makemessages]
     192
     193== Migrate Django's translation workflow to Weblate ==
     194
     195|| Difficulty || Medium
     196|| Size || 175hr
     197|| Mentors || (need confirmation)
     198|| Key Skills || Python, gettext, Git, translation platforms, technical writing
     199
     200Migrate Django and documentation translations from Transifex to Weblate, coordinating the transition with translation maintainers and available hosting capacity.
     201
     202Update `scripts/manage_translations.py` and the tooling in `django/django-docs-translations`. Validate that catalogs are preserved, translated documentation builds, and translation updates can be incorporated into releases.
     203
     204The expected outcome is a working Weblate workflow, tested integration tooling, and guidance for translators and maintainers.
     205
     206References:
     207 * [https://forum.djangoproject.com/t/improving-the-process-of-incorporating-translations-to-django/26140/19 Forum discussion and hosting arrangements]
     208 * [https://github.com/django/django-docs-translations Django documentation translations repository]
     209 * [https://github.com/django/django/blob/main/scripts/manage_translations.py Django translation management script]
     210
     211== Add interactive ORM examples to Django's documentation ==
     212
     213|| Difficulty || Medium
     214|| Size || 175hr
     215|| Mentors || (need confirmation)
     216|| Key Skills || Django ORM, Sphinx, JavaScript, technical writing
     217
     218Integrate DryORM into Django's documentation so readers can experiment with ORM examples and inspect their results without setting up a local project.
     219
     220The work would include agreeing on the integration approach, preparing runnable examples with models and sample data, and adding documentation tooling to maintain them. The design should account for Django versions, accessibility, and keeping the documentation usable without the external service.
     221
     222The expected outcome is a tested integration demonstrated on selected ORM documentation pages, with guidance for contributors adding further examples.
     223
     224References:
     225 * [https://github.com/django/new-features/issues/203 Proposal #203: Include DryORM tool in the documentation]
     226 * [https://dryorm.xterm.info/ DryORM]
     227
     228== Add built-in Cross-Origin Resource Sharing (CORS) support ==
     229
     230|| Difficulty || Medium
     231|| Size || 175hr
     232|| Mentors || (need confirmation)
     233|| Key Skills || Python, HTTP, Django middleware, async programming
     234
     235Bring the core functionality of `django-cors-headers` into Django, allowing projects to configure cross-origin access without an additional dependency.
     236
     237The work would include agreeing on requirements and configuration, implementing middleware for synchronous and asynchronous requests, and providing a migration guide for existing package users. The design should cover allowed origins, credentials, preflight requests, and interaction with existing middleware.
     238
     239The expected outcome is tested and documented CORS support, with configuration examples and guidance explaining its relationship to CSRF protection.
     240
     241References:
     242 * [https://github.com/django/new-features/issues/8 Proposal #8: Bring django-cors-headers features into Django]
     243 * [https://github.com/adamchainz/django-cors-headers django-cors-headers]
     244
     245== Implement DEP 15: Improved startproject interface ==
     246
     247|| Difficulty || Medium
     248|| Size || 175hr
     249|| Mentors || (need confirmation)
     250|| Key Skills || Python, Django management commands, project templates, technical writing
     251
     252Implement the improved `startproject` interface described in DEP 15, making it easier to start Django projects with simpler layouts while preserving backwards compatibility.
     253
     254The work would include updating command options and project templates, testing the generated projects, and documenting the supported layouts. Particular attention should be given to the experience of beginners and consistency with existing Django tooling.
     255
     256The expected outcome is a tested and documented implementation of DEP 15, with examples explaining how to create and develop projects using the new interface.
     257
     258References:
     259 * [https://github.com/django/deps/blob/main/accepted/0015-extended-startproject.rst DEP 15: Improved startproject interface]
     260
    130261
    131262== [PLACEHOLDER] Project name ==
Back to Top