|Version 269 (modified by 9 years ago) (diff),|
Django source-code repository, wiki and bug-report system
Django is available open-source under the BSD license.
- Getting the code
- Browsing the code online
- Getting involved
- Branches in development
- Descriptions of major changes to the codebase
- Under discussion
- More Django resources
Getting the code
Django uses Subversion (
svn) for managing its code.
Assuming you have Subversion installed, the following command in a terminal will fetch the most recent code for you:
svn co http://code.djangoproject.com/svn/django/trunk/
Django also offers "official" release tarballs at the download page.
Browsing the code online
Before anything, please read How to contribute to Django. You'll find out how the Django community works, and possibly save yourself much grief in the future.
- Tickets: View active tickets, make bug reports and contribute feature requests.
- Little, easy improvements: Get your feet wet by taking on one of these small tasks.
- How to report security issues.
Branches in development
Development of major new features for Django tends to take place in branches — copies of the main codebase focused on a particular feature. Using branches makes it easier to experiment with such sweeping changes without possibly breaking the trunk — the main line of development.
Branches may not be stable, but they offer a chance to test out bleeding-edge code before it hits the mainline. Give them a try, and remember to send feedback to the branch maintainers!
- newforms-admin: A refactoring of Django's admin site to use the newforms library rather than automatic manipulators, allowing for additional customization of admin-site functionality.
- queryset-refactor: A refactoring of the way queries are constructed in Django's database layer.
- ModelInheritance: Write-up discussing how inheritance/subclassing of models should work. Currently this is not implemented in the development version of Django, so if you need model subclassing stick to one of the older stable releases or use workarounds like one-to-one relationships.
- SchemaEvolution: This is a new feature, under development as a project for the 2006 Summer of Code.
- RowLevelPermissions: Currently Django's permission system only works at the level of an entire model -- e.g., user "Bob" has access to add flatpages and edit users. This Summer of Code project will extend the permission system to be much more fine-grained, so permissions will be able to be assigned per object instead of per model (so, for example, user "Bob" could be given permission to edit only flatpage number 24 and user number 12, instead of all flatpages and all users).
- GenericAuthorization: A more flexible authorization system for Django. The new system should allow for ACL's, role-based systems, and Django's current model-level permissions.
- FullHistory: A "full content history" implementation with compare, revert, etc. A SoC 2006 project.
- TextIndexingAbstractionLayer: An abstraction layer for full-text indexing and search engines such as Lucene, Xapian, and Hyper Estraier. Also known as Merquery, this Summer of Code project will most likely be placed in contrib.search.
- GeoDjango: A branch for building GIS-enabled web applications. Includes geometry-related fields and an interface for using Django's ORM with a spatial database (currently only PostGIS).
- Generic relations: a "generic foreign key" feature is currently under development, but not yet completed. There is no support for it yet in the admin application, and it is probably unwise to attempt to use it in a production application.
We are discouraging the creation of new branches inside the Django repository in the future; if you'd like to work on a major new contribution to Django, we encourage you to set up a new "branch" elsewhere and let the Django-developers mailing list know about it. One easy way to do this is via Mercurial, a distributed version control system; Tom Tobin has set up a Mercurial repository mirroring Django's trunk at http://hg.korpios.com/django.trunk.
Descriptions of major changes to the codebase
- Backwards-incompatible changes: Comprehensive list of backwards-incompatible changes made since first public release.
- Removing the magic: The magic-removal branch was merged to trunk in May 2006 ().
- New-admin changes: The new-admin branch was merged to trunk in November 2005 ().
- Model Inheritance: Subclassing and model inheritance.
- Version one features: Which features will go in Django 1.0.
- Localization: How we can improve Django's l10n support.
- AJAX and Django: To what extent should Django automate AJAX?
- Better error messages: Documenting situations where better error messages would improve the experience of using Django
- Multiple database support: Adding support for multiple database connections.
- Auto-escaping: Auto escaping of variables by templates.
More Django resources
See the Django resources page for a cornucopia of unofficial articles, code samples and other information contributed by the community.