95 | | === Housekeeping === |
96 | | * '''Complexity:''' Minor |
97 | | |
98 | | Django has gone through three recent cycles of rapid change, culminating in the release of versions 1.0, 1.1 and 1.2. These releases have all been feature heavy, which is good for ticking off checkboxes on feature lists, but it does mean that some internal housekeeping and code cleanup tasks have been avoided in order to deliver new features. These housekeeping issues would be well suited to a Summer of Code student wishing to gain a deep understanding of the internal workings of the Django framework. |
99 | | |
100 | | Issues to consider: |
101 | | * Django's Model._meta class is officially internal API, but in practice, many parts of _meta are in such common use that they couldn't be changed without causing major problems to Django users. The contents of _meta should be surveyed, cleaned up where necessary, documented and tested as part of formal API. |
102 | | * While the public API for foreign keys and m2m relations in Django is quite elegant, the implementation is anything but. This implementation should be cleaned up. |
103 | | * There are several internal components (such as the datastructures library) that are heavily used, but have not been extensively profiled to ensure that they are efficient. Profile the Django test suite to find the areas of code that are performance bottlenecks, and optimize them. |
104 | | |
105 | | See also: |
106 | | * Trac, bugs by component. Any component with lots of bugs is potentially a candidate for inclusion in this project. |
107 | | * [source:django/trunk/django/db/models/options.py The Model._meta class definition] |
108 | | * [source:django/trunk/django/db/models/fields/related.py The related fields implementation] |
109 | | |
| 127 | |
| 128 | === App loading === |
| 129 | * '''Complexity:''' Medium |
| 130 | |
| 131 | Django currently assumes that an application will only ever be loaded once, and that the name of that application will be determined solely by the package name holding the models.py file. However, this has several consequences; |
| 132 | * You can't deploy several instances of the same application |
| 133 | * You can't deploy two applications with the same name |
| 134 | * There is no convenient interface for internationalizing application names |
| 135 | * There is no way to rename an application with a name that isn't helpful from a UI perspective. |
| 136 | |
| 137 | This project would address these limitations by changing the way applications are loaded. Ticket #3591 contains a description of one proposal. |
| 138 | |
| 139 | Issues to consider: |
| 140 | * How can we change the app loading mechanism without breaking every existing use of INSTALLED_APPS in the wild? |
| 141 | * How should two instances of the same application be differentiated during runtime -- especially during URL reversal? |
| 142 | |
| 143 | See also: |
| 144 | * #3591, and any discussion on [http://groups.google.com/group/django-developers django-developers] that references it. |
| 145 | * [source:django/trunk/django/db/models/loading.py The current app loading mechanism] |
| 146 | |
| 147 | === Housekeeping === |
| 148 | * '''Complexity:''' Minor |
| 149 | |
| 150 | Django has gone through three recent cycles of rapid change, culminating in the release of versions 1.0, 1.1 and 1.2. These releases have all been feature heavy, which is good for ticking off checkboxes on feature lists, but it does mean that some internal housekeeping and code cleanup tasks have been avoided in order to deliver new features. These housekeeping issues would be well suited to a Summer of Code student wishing to gain a deep understanding of the internal workings of the Django framework. |
| 151 | |
| 152 | Issues to consider: |
| 153 | * Django's Model._meta class is officially internal API, but in practice, many parts of _meta are in such common use that they couldn't be changed without causing major problems to Django users. The contents of _meta should be surveyed, cleaned up where necessary, documented and tested as part of formal API. |
| 154 | * While the public API for foreign keys and m2m relations in Django is quite elegant, the implementation is anything but. This implementation should be cleaned up. |
| 155 | * There are several internal components (such as the datastructures library) that are heavily used, but have not been extensively profiled to ensure that they are efficient. Profile the Django test suite to find the areas of code that are performance bottlenecks, and optimize them. |
| 156 | |
| 157 | See also: |
| 158 | * Trac, bugs by component. Any component with lots of bugs is potentially a candidate for inclusion in this project. |
| 159 | * [source:django/trunk/django/db/models/options.py The Model._meta class definition] |
| 160 | * [source:django/trunk/django/db/models/fields/related.py The related fields implementation] |