LXF169:Интервью LXF
|
|
|
Бархатный диктатор
Django покоряет Интернет. Джейкоб Каплан-Мосс раскрывает LXF планы командования.
За два года со времени нашей последней беседы с одним из основателей Django история его головокружительного взлета получила продолжение. Заключительную часть нашего учебника по Django вы найдете в этом же номере, а Pinterest, Instagram и Mozilla уже вовсю используют его для создания эффективных динамических web-интерфейсов, вдобавок прекрасно масштабируемых. Джейкоб [Jacob Caplan-Moss], пожизненный бархатный содиктатор, стоял у истоков, и для нашего английского слуха (притупленного десятилетиями лязга ткацких станков) его голос звучит загробно, как у Квентина Тарантино. Так что про «Джанго освобожденного» мы его спросить не рискнули. Зато он охотно поделился планами развития Django, рассказал о работе над функциями и о насущной задаче создания идеальной документации.
LXF: Похоже, за последние годы Django ничуть не сдал свои позиции. Как успехи?
ДжК-М: Прекрасно, прекрасно. Django растет взрывными темпами, и по-моему, темпы роста – одна из главных проблем сообщества. Столь быстрый рост действительно чреват проблемами. Это из серии ответов на тот злополучный вопрос «Какие у вас недостатки?» – нам бы ваши проблемы, да? Это интересно и увлекательно.
LXF: Помнится, вы пытались подсчитать число пользователей Django.
ДжК-М: Да, я занимался этим где-то раз в год.
LXF: И каким же методом?
ДжК-М: Да наугад [смеется]. Нет, на самом деле есть разные метрики. Google Trends стал кошмаром – имя Django теперь ассоциируется с фильмом Тарантино, так что поиск по нему не работает, да и музыкант такой есть. Но можно судить по другим вещам.
Число разработчиков, например, или создателей заплат, число электронных подписчиков. Есть примерное число скачиваний самого Django – по числу зарегистрированных IP, уровню трафика на сайте и тому подобное. Но есть, конечно, и доля анонимных пользователей, подмножество которых читает документацию, подмножество создает заплаты или участвует в развитии проекта... В любом случае, тенденция очевидна, и видя рост этих чисел, я думаю, можно уверенно утверждать, что растет и сообщество, даже не располагая точными данными.
LXF: И этот рост ускоряется?
ДжК-М: За конкретными цифрами я бы лучше зашел в свой блог, но как будто в промежутке от пре-релиза 1.0 и года два после выхода версии 1.0 наблюдался экспоненциальный рост. Сейчас темп, похоже, несколько сбавился, но рост все равно очень быстрый. Если не ошибаюсь, трафик сайта за прошлый год увеличился вдвое или около того. Полагаю, бурный рост по-прежнему налицо.
LXF: А сферы применения Django изменились со временем?
ДжК-М: Значительно. Сначала он довольно долго не покидал пределов новостных редакций, считаясь по определению «медийным» инструментом.
LXF: Мы читали об этом, но никогда не осознавали полностью, как это работает.
ДжК-М: Изначально он задумывался больше как издательская платформа. Некое решение для информационно-ориентированных сайтов – где обычно нет общения, комментариев, опросов и прочего – только обычный издатель и множество пользователей.
LXF: Как в CMS?
ДжК-М: Верно, Django ведь и вышел из CMS. То есть это не CMS, но используется примерно так же. И хотя с самого первого дня это был набор для web-разработки, такое представление закрепилось, от него мы и стали отталкиваться.
За последние три-четыре года изменилось прежде всего то, что мы это представление преодолели, и Django больше не рассматривают как «медийный» проект, скорее как универсальную среду для web-разработки; и, как следствие, нет сейчас такой сферы, где бы Django не использовался. Есть, конечно, первая лига – те, кто делает Discus, Instagram и Pinterest, – создатели передовых соцсетей, но с другой стороны, я в этом году сотрудничаю с одной малоинтересной компанией, из Fortune 500, над внедрением Django в их средства разработки. Это как части одной большой палитры.
LXF: Почему же предприниматели обращаются к Django?
ДжК-М: Многие компании сейчас завершают использование первого поколения CMS или внутрисетевых инструментов, либо самим этим инструментам уже около 10 лет. Это те компании, что раньше всех стали предлагать сетевые приложения, те инструменты, которым сейчас 10, 12, 15 лет, и все это время они пользовались Java, .Net, PHP. Будущее Java и .Net сейчас весьма туманно. Сами компании плохо представляют, что будет с Java в контексте всей этой неразберихи с Oracle и что ждет Microsoft как бизнес, а Microsoft направляет своим разработчикам какие-то безумные путаные директивы, равно как и Oracle. Им нужен новый облик и новые средства разработки; они присматриваются к прочему инструментарию, и Python кажется уже не столь жуткой и странной технологией. Им пользуется Google, и ему уже 20 лет. Это уже проверенный старый ветеран. И вот теперь многие компании хотят сделать на него ставку, а если вы думаете работать с Python в Сети, Django будет лидером с большим отрывом. Так что я считаю его очевидным выбором.
LXF: То есть причиной перемен стало в том числе падение интереса к Java/.Net?
ДжК-М: Я вижу бурный рост web-мира Python, а не только Django. То есть у Django все прекрасно, но есть еще Pyramid, который привлек массу новых пользователей, равно как и Flask. И речь вовсе не о том, что Pyramid, Flask и прочие отнимают у Django его долю на рынке – мы тоже растем. И это идет на благо всему миру Python.
LXF: Значит, все дело в Python?
ДжК-М: Мне кажется, Python превращается в гиганта. Вот все говорят об OpenStack – его считают прорывом. А что такое OpenStack? Это Python и Django. Все инструменты управления – это Python, весь пользовательский интерфейс – это Django. Так что любая компания, решившая развиваться в облаке, теперь может выбрать проприетарного производителя – пойти к Amazon, или пойти к RackSpace, а может выбрать open source – ведь он уже не такой жуткий и странный. А выбрав open source, они выбирают Python. Это уже не шаг в неизвестность, а очевидный выбор.
LXF: То есть Python теперь — признанный инструмент web-разработки?
ДжК-М: Мне кажется, дело еще и в том, что динамические языки в целом получили гораздо больше признания. Была же такая старая «утка», что на них невозможно написать надежную программу, потому что компилятор вас не спасет. Сегодня, имея достаточный опыт работы со статическими языками – с Java и .Net – люди уже удостоверились, что это не так. Их опыт работы с Python, с другой стороны, свидетельствует о том же.
Специфика своя, конечно, есть, метод работы иной. Но платформы и Java/.Net, и платформы Python уже настолько зрелые, что не являются неизвестными величинами. Они уже не новы. Известны все их подводные камни, и люди делают выбор осознанно. И получив явную и равноценную альтернативу, люди все чаще выбирают open source, и значит, Python.
LXF: А ваша роль изменилась?
ДжК-М: Три года назад я был новичком, а теперь – консультант по работе с Python и Django. Помогаю компаниям освоиться в этом сегменте. Типичные клиенты – те, кто только окунается в этот мир и нуждаются в советчиках.
LXF: Они приходят к вам, зная о Django лишь в общих чертах?
ДжК-М: Когда как. Некоторые клиенты обращаются к нам, уже успев поработать с Python и Django, и хотят, чтобы мы проверили, все ли они делают верно. Некоторые же только делают первые шаги и хотят получить совет, кого им нанимать и как обучать свой персонал, как быстро встать на ноги, помощь с построением первичной архитектуры и прочее.
LXF: Разве первичная архитектура все еще важна? Мне казалось, что Django в этом отношении не столь требователен.
ДжК-М: Думаю, одно из преимуществ Python как языка и Django как инструмента в том, что здесь шире почва для эксперимента. Более высокоуровневые языки лаконичнее, а значит, вы можете решать те же задачи меньшим количеством кода. А значит, и с рефакторингом хлопот будет тоже меньше. Так что да, пожалуй, первичные ошибки здесь не так фатальны.
LXF: А MySQL по-прежнему используется как внутренний сервер?
ДжК-М: Знаете, это довольно забавно – похоже, что после того, как Oracle купили MySQL, с ним случилось то же, что и с Java. Компании очень боятся вот этой неуверенности в будущем. Я так вижу, что PostgreSQL тоже подстегнул Python.
Так уж вышло, что большинство разработчиков Django – поклонники Postgres, и пользуются в основном им; я и сам его предпочитаю, хотя это не важно. В свое время Postgres и MySQL отличались гораздо разительнее, чем сейчас, когда это просто две великолепные программы. Мне кажется, сложности MySQL носят характер управленческий, а не технический.
LXF: Как вам удалось создать такую хорошую документацию для Django?
ДжК-М: Отчасти благодаря тому, что Адриан (Головатый [Adrian Holovaty], со-основатель Django) по образованию журналист, а я – филолог, и мы оба всегда относились к писанине серьезно.
LXF: Но большинство разработчиков норовит только кодировать.
ДжК-М: Мы уже с самого начала решили не вводить ни одной функции без документации. Без нее и соответствующих тестов, заплатка не считается готовой. И это достаточно высокая планка.
Я считаю, что во всех сообществах тон задается сверху. И в Django была превосходная документация с самого первого релиза. Мы сделали это культурным эталоном. И привлекаем людей, которые с этим согласны.
LXF: Значит, и таких как мы — тех, кто сможет это прочесть и что-то для себя узнать.
ДжК-М: Об этом я думаю в первую очередь. Мне на самом деле кажется, что в последнее время мы увлеклись качеством, а надо бы сконцентрироваться на другом. Мы подошли к той точке, когда документации стало так много, что ее организация и поиск чего-либо стали проблемой – проблемой, которой прежде не было. Прекрасно, что задокументировано абсолютно все; но найти то, что нужно, теперь трудновато. К этой проблеме необходимо подойти очень серьезно и найти решение.
LXF: Как же создается документация?
ДжК-М: Есть такой инструмент, Sphinx, пришедший из документации Python. Изначально она писалась на Latex, а значит, внести свою лепту было довольно сложно – нужно было владеть Latex. Тогда-то они и создали Sphinx, и он великолепен. Это лучший инструмент для технической документации, мне известный.
LXF: Разработчики сами создают документацию к своим функциям?
ДжК-М: Да, сами. Не обязательно тот же человек – иногда один создает код, другой пишет документацию, третий ее редактирует. Мы стараемся проявлять гуманность. Для многих членов сообщества английский – не родной язык, и мы успокаиваем их: «Не переживайте, запишите только самое основное». Я более чем уверен, что никто не опишет функцию лучше, чем ее создатель. Ну, вы понимаете. Когда кто-то другой пытается воссоздать ход вашей мысли, у него все равно получится хуже, но это вовсе не значит, что вам надо быть великим писателем. Достаточно зафиксировать главное, а мы продолжим.
LXF: Два года назад вы сказали, что одно из главных преимуществ Django — широкая аудитория разработчиков. Это все еще так? Не трудно ли теперь ею управлять?
ДжК-М: У нас были сложности с пополнением действующих разработчиков. Первоначально политика была такая: новые члены принимались с согласия существующих комитетов, но когда людей становится много, это уже не работает. Пять человек еще можно привести к консенсусу. Ну, 10, ну, 15. Так что мы это отменили и немного упростили правила приема, что оказалось правильным решением. Наша пирамида по-прежнему очень широка в основании, а наверху ощущается острая нехватка волонтерской силы, скажем так, работников последнего звена – тех, кто проверяет и регистрирует готовые патчи.
И с этим мы постоянно боремся – привлекая новых сотрудников, но, естественно, есть огромная масса людей, пишущих код, и много людей, его проверяющих.
LXF: Что определяет стратегию развития проекта?
ДжК-М: В сообществе Python бытует шуточка, что Адриан и я выступаем в роли бархатных диктаторов, так ведь? Диктовать мы можем, но стараемся никогда этого не делать.
LXF: Значит, у вас нет планов на новый релиз?
ДжК-М: Есть черновые идеи. Я знаю, чего бы мне хотелось, и имею представление о том, как это можно воплотить, но все зависит от самих исполнителей.
LXF: Что-нибудь из серии Python 3000?
ДжК-М: Думаю, Python 3 был более целенаправленным. Было четкое видение того, что это будет – причем не одного человека, не только Гвидо (Ван Россум [Guido Van Rossum] – бархатный диктатор Python), а сразу многих. Но было конкретное описание и направление, и идея в основе всего этого. Наш релиз менее жесткий. По принципу – все, что будет отлажено к оговоренному сроку, пойдет в релиз.
LXF: И вы не боитесь, что функции окажутся слишком разномастными?
ДжК-М: Мы очень следим за этим, особенно в последнее время. Мы теперь более скептически настроены к новым функциям. Как правило, мы задаем вопрос: «А почему нельзя сделать это сторонним внешним модулем?»
Мы хотим, чтобы люди доказали нам, что эта функция либо чрезвычайно важна абсолютно для всех и достойна войти в ядро, либо что ее оптимально сделать именно внутренней; если не вводить таких ограничений, наступит хаос. Приходится постоянно отсекать метастазы этих мелочных «нужных мне» функций. К сожалению, работа куратора продукта на 80 % состоит в том, чтобы говорить «нет». |