= Django source-code repository, wiki and bug-report system = Django is available open-source under the [http://code.djangoproject.com/file/django/trunk/LICENSE BSD license]. [[PageOutline(2,, inline)]] == Getting the code == Django uses [http://subversion.tigris.org/ 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 [http://www.djangoproject.com/download/ download page]. == Browsing the code online == * [/browser/django/trunk/ Browse source]: See the full code via a Web interface. * [/timeline/ Timeline]: Keep track of recent changes. == Getting involved == Before ''anything'', please read [http://www.djangoproject.com/documentation/contributing/ How to contribute to Django]. You'll find out how the Django community works, and possibly save yourself much grief in the future. `:)` * [http://code.djangoproject.com/wiki/Reports Tickets]: View active tickets, make bug reports and contribute feature requests. * [wiki:LittleEasyImprovements Little, easy improvements]: Get your feet wet by taking on one of these small tasks. * [http://www.djangoproject.com/documentation/contributing/#reporting-security-issues 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! * [wiki:NewformsAdminBranch newforms-admin]: A refactoring of Django's admin site to use the [http://www.djangoproject.com/documentation/newforms/ newforms library] rather than automatic manipulators, allowing for additional customization of admin-site functionality. * [wiki:QuerysetRefactorBranch queryset-refactor]: A refactoring of the way queries are constructed in Django's database layer. * [wiki: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. * [wiki:SchemaEvolution]: This is a new feature, under development as a project for the 2006 Summer of Code. * [wiki: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). * [wiki: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. * [wiki:FullHistory]: A "full content history" implementation with compare, revert, etc. A SoC 2006 project. * [wiki: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. * [wiki: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 [http://www.selenic.com/mercurial/ 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 == * [wiki:BackwardsIncompatibleChanges Backwards-incompatible changes]: Comprehensive list of backwards-incompatible changes made since first public release. * [wiki:RemovingTheMagic Removing the magic]: The magic-removal branch was merged to trunk in May 2006 ([2809]). * [wiki:NewAdminChanges New-admin changes]: The new-admin branch was merged to trunk in November 2005 ([1433]). == Under discussion == * [wiki:ModelInheritance Model Inheritance]: Subclassing and model inheritance. * [wiki:VersionOneFeatures Version one features]: Which features will go in Django 1.0. * [wiki:Localization Localization]: How we can improve Django's l10n support. * [wiki:AJAX AJAX and Django]: To what extent should Django automate AJAX? * [wiki:BetterErrorMessages Better error messages]: Documenting situations where better error messages would improve the experience of using Django * [wiki:MultipleDatabaseSupport Multiple database support]: Adding support for multiple database connections. * [wiki:AutoEscaping Auto-escaping]: Auto escaping of variables by templates. == More Django resources == See the [wiki:DjangoResources Django resources page] for a cornucopia of unofficial articles, code samples and other information contributed by the community.