================================
Django 1.0 alpha release notes
================================

Welcome to Django 1.0 alpha!

This is the first in a series of preview/development releases leading
up to the eventual release of Django 1.0, currently scheduled to take
place in early September 2008. This release is primarily targeted at
developers who are interested in testing the Django codebase and
helping to identify and resolve bugs prior to the final 1.0 release.

As such, this release is *not* intended for production use, and any
such use is strongly discouraged.


What's new in Django 1.0 alpha
==============================

Django's development trunk has been the site of nearly constant
activity over the past year, with several major new features landing
since the 0.96 release. Some of the highlights include:

Refactored admin application (newforms-admin)
    The Django administrative interface (``django.contrib.admin``) has
    been completely refactored; admin definitions are now completely
    decoupled from model definitions (no more ``class Admin``
    declaration in models!), rewritten to use Django's new
    form-handling library (introduced in the 0.96 release as
    ``django.newforms``, and now available as simply ``django.forms``)
    and redesigned with extensibility and customization in mind. Full
    documentation for the admin application is available online in the
    official Django documentation:

        :doc:`admin reference </ref/contrib/admin/index>`

Improved Unicode handling
    Django's internals have been refactored to use Unicode throughout;
    this drastically simplifies the task of dealing with
    non-Western-European content and data in Django. Additionally,
    utility functions have been provided to ease interoperability with
    third-party libraries and systems which may or may not handle
    Unicode gracefully. Details are available in Django's
    Unicode-handling documentation:

         :doc:`unicode reference </ref/unicode>`

An improved Django ORM
    Django's object-relational mapper -- the component which provides
    the mapping between Django model classes and your database, and
    which mediates your database queries -- has been dramatically
    improved by a massive refactoring. For most users of Django this
    is backwards-compatible; the public-facing API for database
    querying underwent a few minor changes, but most of the updates
    took place in the ORM's internals. A guide to the changes,
    including backwards-incompatible modifications and mentions of new
    features opened up by this refactoring, is available on the Django
    wiki:
    
         http://code.djangoproject.com/wiki/QuerysetRefactorBranch

Automatic escaping of template variables
    To provide improved security against cross-site scripting (XSS)
    vulnerabilities, Django's template system now automatically
    escapes the output of variables. This behavior is configurable,
    and allows both variables and larger template constructs to be
    marked as safe (requiring no escaping) or unsafe (requiring
    escaping). A full guide to this feature is in the documentation
    for the :ttag:`autoescape` tag.

There are many more new features, many bugfixes and many enhancements
to existing features from previous releases. The ``newforms`` library,
for example, has undergone massive improvements including several
useful add-ons in ``django.contrib`` which complement and build on
Django's form-handling capabilities, and Django's file-uploading
handlers have been refactored to allow finer-grained control over the
uploading process as well as streaming uploads of large files.

Along with these improvements and additions, we've made a number of
of backwards-incompatible changes to the framework, as features have been
fleshed out and APIs have been finalized for the 1.0 release. A
complete guide to these changes will be available as part of the final
Django 1.0 release, and a comprehensive list of backwards-incompatible
changes is also available on the Django wiki for those who want to
begin developing and testing their upgrade process:

    http://code.djangoproject.com/wiki/BackwardsIncompatibleChanges


The Django 1.0 roadmap
======================

One of the primary goals of this alpha release is to focus attention
on the remaining features to be implemented for Django 1.0, and on the
bugs that need to be resolved before the final release. Following
this release, we'll be conducting a series of sprints building up to a
series of beta releases and a release-candidate stage, followed soon
after by Django 1.0. The timeline is projected to be:

* August 1, 2008: Sprint (based in Washington, DC, and online).

* August 5, 2008: Django 1.0 beta 1 release. This will also constitute
  the feature freeze for 1.0. Any feature to be included in 1.0 must
  be completed and in trunk by this time.

* August 8, 2008: Sprint (based in Lawrence, KS, and online).

* August 12, 2008: Django 1.0 beta 2 release.

* August 15, 2008: Sprint (based in Austin, TX, and online).

* August 19, 2008: Django 1.0 release candidate 1.

* August 22, 2008: Sprint (based in Portland, OR, and online).

* August 26, 2008: Django 1.0 release candidate 2.

* September 2, 2008: Django 1.0 final release. The official Django 1.0
  release party will take place during the first-ever DjangoCon, to be
  held in Mountain View, CA, September 6-7.

Of course, like any estimated timeline, this is subject to change as
requirements dictate. The latest information will always be available
on the Django project wiki:

    http://code.djangoproject.com/wiki/VersionOneRoadmap


What you can do to help
=======================

In order to provide a high-quality 1.0 release, we need your
help. Although this alpha release is, again, *not* intended for
production use, you can help the Django team by trying out the alpha
codebase in a safe test environment and reporting any bugs or issues
you encounter. The Django ticket tracker is the central place to
search for open issues:

    http://code.djangoproject.com/timeline

Please open new tickets if no existing ticket corresponds to a problem
you're running into.

Additionally, discussion of Django development, including progress
toward the 1.0 release, takes place daily on the django-developers
mailing list:

    http://groups.google.com/group/django-developers

...and in the ``#django-dev`` IRC channel on ``irc.freenode.net``. If
you're interested in helping out with Django's development, feel free
to join the discussions there.

Django's online documentation also includes pointers on how to
contribute to Django:

    :doc:`contributing to Django </internals/contributing>`

Contributions on any level -- developing code, writing
documentation or simply triaging tickets and helping to test proposed
bugfixes -- are always welcome and appreciated.
