В официальном блоге Django появилась информация о том, что планируется расширить функционал встроенной ORM миграциями — важным функционалом, который присутствует во многих современных ОРМ-ах, что называется «из коробки», например в рельсовом ActiveRecord или пхпшной Doctrine. Исторически сложилось, что этот функционал отсутствует в Django ORM.
В отсутствии нормального инструмента контроля за версией схемы базы данных, по сути, страдают все: разработчики сторонних приложений ломают голову, использовать ли миграции, подключив в зависимости другое стороннее приложение, или нет, каждый резиз становится головной болью для разработчиков и админов — приходится придумывать способы как бы проще произвести апгрейд. Словом, в плане контроля версии БД в мире django царит легкий хаос.
Стандартом де-факто сегодня является South, но поскольку это все-таки даже не контриб, поэтому присутствует некоторая несогласованность действий (как, например, поддержка версии питона). Автор приложения Эндрю Гудвин, уже несколько лет входящий в состав «кор тим», собрался наконец разрешить данную проблему и подготовить код, который потом войдет в состав кодовой базы фреймворка. Миграция БД — довольно большая и трудоемкая задача, требующая много времени и сил от разработчика. Поэтому Эндрю предложил комьюнити профинансировать его работу, создав соотвествующий проект на кикстартере. Условия следующие:
- За 3500 фунтов Эндрю обязуется оформить минимально необходимый функционал как можно скорее, сконцентрировавшись на задаче
- За 4500 фунтов он предлагает реализовать дополнительные низкоуровневые операции, как сохранение данных при перемещении колонок между удаленными ключами, а также поддержку постгресового CREATE INDEX CONCURRENTLY
- За 7000 фунтов основные функции новых версий South будут подготовлены для совместимости с 1.4 и 1.5 версиями джанги
На момент написания статьи проект уже набрал почти 7 тысяч фунтов. Так что счастью быть. Кстати, уже сейчас на гитхабе можно посмотреть пул-реквест полугодичной давновсти с набросками данной работы.
Впрочем, я лично рассматриваю данный проект на кикстартере еще и как возможность поблагодарить Эндрю Гудвина за приложение, без которого, на мой взгляд, разработка под джанго была бы очень затруднительна.
Интересно, что далеко не все пользователи джанги разделяют энтузиазм по поводу добавления нового функционала. За примерами, кстати, далеко ходить не нужно. Основная аргументация — низкое качество кода сауса. Тут наверное, стоит учесть 2 важных факта: во-первых, для подготавливаемого кода будут действовать те же стандарты, что и для остального кода фреймворка, а во-вторых, использование миграций, также как и Django ORM — дело сугубо добровольное, поэтому разработчикам, использующий South станет чуточку удобней, а тем, кто его игнорирует, врядли придется испытывать по этому поводу какие-либо неудобства.
Автор: wronglink