Журнал LinuxFormat - перейти на главную

LXF169:Интервью LXF

Материал из Linuxformat
Перейти к: навигация, поиск

Бар­хат­ный дик­та­тор

Django по­ко­ря­ет Ин­тернет. Джей­коб Ка­план-Мосс рас­кры­ва­ет LXF пла­ны ко­ман­до­вания.

LXF169.iview.jacon3 opt.jpeg

За два го­да со вре­мени на­шей по­следней бе­се­ды с одним из осно­ва­те­лей 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 % со­сто­ит в том, что­бы го­во­рить «нет». |

Персональные инструменты
купить
подписаться
Яндекс.Метрика