= Branches = 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! [[PageOutline(2,, inline)]] == Active Branches == === Database layer === * [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: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. === Other === * [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: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. == Creating New Branches == We are discouraging the creation of new branches inside Django's subversion repository. 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 tactic is to use a distributed revision control system ("DRCS", or sometimes "DSCM", ''see'' [http://en.wikipedia.org/wiki/Revision_control Wikipedia's article on revision control]); these systems allow you to create your own repository anywhere you'd like, and typically include tools to import from Subversion. Options here include [http://bazaar-vcs.org/ Bazaar], [http://git.or.cz/ Git], [http://www.selenic.com/mercurial/ Mercurial], and [http://svk.bestpractical.com/ SVK]. Tom Tobin has set up Mercurial repositories mirroring Django: * Mercurial: [http://hg.korpios.com/] Matthias Kestenholz has set up several git repositories for Django and for a selection of Django applications: * Gitweb with complete list of repositories: http://spinlock.ch/pub/git/ * The django changes are sporadically published on repo.or.cz: http://repo.or.cz/w/django.git/ Please note that the information regarding branches in the [http://www.djangoproject.com/documentation/contributing/#branch-policy Contributing] document is out of date with regards to Django's branch creation policy.