#################
Project Rationale
#################
While working together in late 2016, `Russell Keith-Magee`_ and `Andrew
Pinkham`_— original authors of the project—discussed the repetitive
nature of rebuilding a best-practices email-based User model in new
Django projects. The two were tired of redoing the same work, and
decided to open-source code based on what they'd learned previously.
Russell's *Red User, Blue User, MyUser, auth.User* talk from DjangoCon
US 2013 and PyCon AU 2017 (video below) provides a breakdown of the
problems with Django's existing approach to identity-handling, as well
as an introduction to using custom User models in Django.
.. raw:: html
In turn, Andrew wished for more modularity in Django's existing ``auth``
codebase. Having described the process of creating custom User models in
`his book, Django Unleashed`_, Andrew felt that developers should be
able to import and compose classes to properly integrate with Django's
permissions and/or admin. The two set out to build a project that would:
1. provide a User model that authenticates via email (not username)
2. provide a User model with global identity name-fields (full name and short
name, rather than the limited anglo-centric first and last name)
3. provide mix-in classes to allow developers to easily compose a new
User model.
The project is originally based on the app that Russell had built over a
decade of working in Django. Andrew took what he had learned from
`Django Unleashed`_ and his `consulting experience`_, and integrated it
into the project. The result is a :class:`~improved_user.models.User`
model that can be used out of the box (see :doc:`quickstart` for
details) and a set of :doc:`mix-in classes ` to
allow for creation of new User models (notably, the
:class:`~improved_user.model_mixins.DjangoIntegrationMixin`).
We hope you find our work useful!
.. _Andrew Pinkham: https://andrewsforge.com
.. _consulting experience: https://www.jambonsw.com
.. _Django Unleashed: https://django-unleashed.com
.. _his book, Django Unleashed: `Django Unleashed`_
.. _Russell Keith-Magee: https://cecinestpasun.com