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

LXF142:Interview

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


Вскры­тие «бу­ки»

Джо­но Бэкон бе­се­ду­ет с Дэ­ви­дом Ре­кор­до­ном из Facebook о Се­ти, стан­дар­тах, от­кры­том ко­де и о том, по­че­му в серд­це все­го, что они де­ла­ют, ле­жит HipHop.


Имея бо­лее 500 мил­лио­нов поль­зо­ва­те­лей, Facebook яв­ля­ет­ся крупней­шей в ми­ре со­ци­аль­ной се­тью, в то же вре­мя ак­тив­но со­дей­ст­вую­щей со­об­ще­ст­ву от­кры­то­го ко­да. Дэ­вид Ре­кор­дон [David Re-cordon], ре­дак­тор сай­та по от­кры­то­му ко­ду, рас­ска­зы­ва­ет нам о под­хо­де ком­пании к сво­бод­но­му ПО

  • LXF: Ка­ков ваш опыт ра­бо­ты с от­кры­тым ко­дом?

Дэвид Рекордон: На са­мом де­ле я на­чал ра­бо­тать с от­кры­тым ко­дом, бу­ду­чи еще под­ро­ст­ком. Я ис­поль­зо­вал YaBB SE (про­грам­му для фо­ру­мов PHP) и на­чал по­мо­гать дру­гим в со­об­ще­ст­ве. В то вре­мя я знал C++ и немно­го Perl, а web-про­грам­ми­ро­ванием поч­ти не занимал­ся. Ра­зо­брать­ся в PHP бы­ло лег­ко, и мне нра­ви­лось, что мож­но про­сто на­жать на Save и тут же об­но­вить брау­зер. За сле­дую­щие несколь­ко лет я глуб­же втя­нул­ся в про­ект, по­мо­гал за­пустить его пе­ре­пи­сан­ную вер­сию в ви­де Simple Machines Forum и соз­дал бизнес по хостин­гу фо­ру­мов с мо­им дру­гом Джо­шуа Ди­кер­со­ном [Joshua Dickerson]. Ви­ди­мо, это и был мой пер­вый опыт серь­ез­ной ра­бо­ты в про­ек­те с от­кры­тым ко­дом.

  • LXF: Вы про­дол­жи­ли ра­бо­ту в ин­тернет-бизнесе?

ДР: Па­ру лет спустя я ста­жи­ро­вал­ся в LiveJournal, по-на­стоя­ще­му вы­учил Perl, и мне ве­ле­ли ни за что не при­зна­вать­ся, что я ис­поль­зо­вал Nano (когда я пе­ре­шел на Emacs). Ра­бо­та в LiveJournal бы­ла так­же мо­им пер­вым опы­том по­все­днев­но­го ис­поль­зо­вания на­столь­но­го Linux.

  • LXF: Вас хо­ро­шо зна­ют в ми­ре OpenID. Как вы очу­ти­лись в этом про­ек­те?

ДР: Не­ко­то­рые восполь­зо­ва­лись от­кры­то­стью ко­да яд­ра LiveJournal и за­пусти­ли кло­ны. Со­глас­но Wikipedia, бы­ло око­ло 30 раз­ных сай­тов – пер­вым стал DeadJournal, в 2001. И хо­тя спам никогда не вы­зы­вал боль­ших про­блем у http://LiveJournal.com, ком­мен­та­рии ме­ж­ду сай­та­ми бло­гов по-прежнему изо­би­ло­ва­ли им, по­сколь­ку там от­сут­ст­во­ва­ло еди­ное по­ня­тие об иден­ти­фи­ка­ции.

OpenID бы­ла соз­да­на в Six Apart, что­бы по­мочь в ре­шении меж­сай­то­во­го ком­мен­ти­ро­вания де­цен­тра­ли­зо­ван­ным об­ра­зом. С 2005 го­да они до­воль­но силь­но эво­лю­циониро­ва­ли, и я дей­ст­ви­тель­но принимал ак­тив­ное уча­стие в OpenID 2.0, ра­бо­тая в VeriSign. Она бы­ла реа­ли­зо­ва­на прак­ти­че­­ски ка­ж­дой круп­ной ин­тернет-ком­панией, но нам ещё пред­сто­ит дол­гий путь. Я ви­жу сле­дую­щую вер­сию OpenID осно­ван­ной на OAuth 2.0. Это по­зво­лит ей стать весь­ма ком­пакт­ной тех­но­ло­ги­ей, ко­то­рая бу­дет ра­бо­тать для при­ло­жений вне брау­зе­ра.

  • LXF: Как вы пе­ре­шли в Facebook?

ДР: Я при­сое­динил­ся к Facebook в 2009 го­ду, что­бы ра­бо­тать над от­кры­тым ко­дом и стан­дар­та­ми. Моя ко­ман­да ста­ра­ет­ся уп­ро­стить для всех со­трудников ком­пании ра­бо­ту по ис­поль­зо­ванию, со­дей­ст­вию и вы­пуску про­ек­тов с от­кры­тым ко­дом. Вре­ме­на­ми это оз­на­ча­ет ра­бо­ту в дру­гих ко­ман­дах, как бы­ло, на­при­мер, с HipHop для PHP, ко­то­рый мы вы­пусти­ли в на­ча­ле 2010. И хо­тя HipHop уже под­твер­дил свою зна­чи­мость в Facebook, там все же оста­ва­лось нема­ло ра­бо­ты, что­бы он стал по­лез­ной ча­стью ин­фра­струк­ту­ры для дру­гих.

  • LXF: Что имен­но де­ла­ет HipHop?

ДР: HipHop во­пло­ща­ет в се­бе то, как мы тво­рим в Facebook. Его за­пустил Хай­пинь Чжао [Haiping Zhao] как экс­пресс-про­ект – ха­ка­тон, а по­том к нему при­сое­динились Иэн Прок­тор [Iain Proctor] и Минь­юй Янь [Minghui Yang]. Хай­пинь за­ме­тил оп­ре­де­лен­ное сход­ст­во син­так­си­сов PHP и C++ и за­дал­ся во­про­сом, мож­но ли про­грамм­ным спо­со­бом пе­ре­пи­сать один в дру­гой. И вот, бла­го­да­ря уси­ли­ям, от­няв­шим два с по­ло­ви­ной го­да и несколь­ких ин­женеров, HipHop уже об­слу­жи­вал боль­шую часть про­из­вод­ст­вен­но­го тра­фи­ка Facebook. Он бе­рет наш ис­ход­ный код PHP, транс­фор­ми­ру­ет его в C++ и ком­пи­ли­ру­ет в неза­ви­си­мый би­нарник, а мы его за­дей­ст­ву­ем при соз­дании web-сер­ве­ров. Это ти­пич­ная схе­ма за­пуска про­ек­тов в Facebook. Кто-то про­сто хо­чет что-то по­про­бо­вать. Мы на­зы­ва­ем это «куль­ту­рой ха­кин­га».

  • LXF: Ва­ша ра­бо­та над стан­дар­та­ми OpenID и OAuth ис­поль­зу­ет­ся в Facebook?

ДР: В про­шлом го­ду на­ша ко­ман­да плат­фор­мен­но­го ин­жинирин­га нема­ло по­тру­ди­лась над OAuth 2.0. OAuth соз­да­вал­ся для стан­дар­ти­за­ции час­ти ди­зай­на API, что­бы дать поль­зо­ва­те­лю спо­соб по­зво­лить дру­го­му че­ло­ве­ку вой­ти на сайт вме­сто него, не со­об­щая при этом сво­его па­ро­ля. И хо­тя два по­следних го­да OAuth 1.0 встав­лял­ся прак­ти­че­­ски в ка­ж­дый но­вый API, все же для мно­гих раз­ра­бот­чи­ков он был слож­но­ват. Мы по­мог­ли соз­дать OAuth 2.0, что­бы снять эту про­бле­му.

OAuth 2.0 ис­поль­зу­ет SSL для за­щи­ты досту­па при от­прав­лении за­про­сов API вме­сто под­пи­сей HMAC, ко­то­рые при­ме­ня­лись в вер­сии 1.0. Это зна­чи­тель­но уп­ро­ща­ет де­ло: ведь раз­ра­бот­чи­кам, взаи­мо­дей­ст­вую­щим с ва­шим API, уже не нуж­но нор­ма­ли­зо­вать, сор­ти­ро­вать и по­том под­пи­сы­вать все свои па­ра­мет­ры за­про­са HTTP. Мы пер­вые сде­ла­ли OAuth 2.0 ча­стью Graph API, анон­си­ро­ван­но­го в f8 в ап­ре­ле, по­ра­бо­тав в со­об­ще­ст­ве IETF над на­пи­санием из­ряд­ной его час­ти. Так­же в f8 мы вве­ли про­то­кол Open Graph (http://ogp.me), ко­то­рый ис­поль­зу­ет очень про­стое под­мно­же­ст­во сре­ды RDF для пред­став­ления лю­бо­го сай­та в ка­че­­ст­ве час­ти со­ци­аль­ной схе­мы.

  • LXF: Facebook счи­та­ют сай­том с за­кры­тым ко­дом. Как еще вы под­дер­жи­вае­те от­кры­тый код?

ДР: Ин­женеры Facebook ак­тив­но вно­сят свой вклад в эко­си­сте­му Apache Hadoop и в MySQL и PHP, и соз­да­ли ряд функ­ций, по­зво­ляю­щих сис­те­мам с рас­пре­де­лен­ной па­мя­тью [mem-cached] мас­шта­би­ро­вать­ся до со­вре­мен­но­го обо­ру­до­вания. Но мы не про­сто уча­ст­ву­ем в дру­гих про­ек­тах или вы­пуска­ем ин­ст­ру­мен­ты для раз­ра­бот­чи­ков: мы от­кры­ва­ем код це­лых уча­ст­ков про­из­вод­ст­вен­ной ин­фра­струк­ту­ры. HipHop, Flash-Cache, Apache Hive и Cassandra, Thrift, Scribe и мно­гие дру­гие соз­да­ны в Facebook. Не ду­маю, что най­дет­ся дру­гая ин­тернет-ком­пания на­ше­го раз­ме­ра, спо­соб­ная по­хва­лить­ся тем же.

  • LXF: Ну, а труд­но ли ра­бо­тать над от­кры­тым ко­дом в ком­пании?

ДР: Ком­паниям лег­ко по­ве­рить в миф, буд­то от­кры­тый код не тре­бу­ет до­полнитель­но­го вре­мени и уси­лий. А он еще как тре­бу­ет вре­мени, ес­ли вы хо­ти­те сде­лать ра­бо­ту хо­ро­шо. И очень важ­но пра­виль­но на­стро­ить свои ожи­дания от про­ек­та, чет­ко раз­граничив вы­да­чу сво­его ко­да для поль­зо­вания дру­ги­ми по ли­цен­зии от­кры­то­го ко­да и пре­достав­ление кон­тро­ля над са­мим про­ек­том. Это ре­шение мне ка­жет­ся менее важ­ным по сравнению с необ­хо­ди­мо­стью пра­виль­но уста­но­вить свои ожи­дания для ком­пании.

  • LXF: Что вы ду­мае­те о Diaspora, клоне Facebook?

ДР: Я очень ува­жаю этих ре­бят. Они эн­ту­зиа­сты сво­его про­ек­та, и дей­ст­ви­тель­но соз­да­ли стоя­щий про­дукт. По-мо­ему, в том, что они пы­та­ют­ся сде­лать, есть дерз­но­вен­ные пер­спек­ти­вы. Со­ци­аль­ная сеть с от­кры­тым ко­дом – это не про­сто об­нов­ление ста­ту­са и об­мен со­об­щения­ми ме­ж­ду сай­та­ми; это так­же гло­баль­ное ощу­щение един­ст­ва и воз­мож­но­сти объ­е­динить сво­их дру­зей и свой кон­тент в се­ти, по­зво­ляя в то же вре­мя кон­тро­ли­ро­вать, кто про­смат­ри­ва­ет то, чем вы де­ли­тесь. Это уже по­строение плат­фор­мы.

  • LXF: Вы по­ла­гае­те, что в на­стоя­щее вре­мя Facebook ох­ва­тил от­кры­тую сеть?

ДР: Да, я по­ла­гаю, мы про­шли дол­гий путь за про­шед­ший год. Будь то OAuth 2.0, HTML 5, или Open Graph Protocol, мы ис­поль­зо­ва­ли стан­дар­ты там, где они уже име­лись, и ра­бо­та­ли вме­сте с со­об­ще­ст­вом над их соз­данием в об­лас­тях, где их не бы­ло. Нас еще бу­дут кри­ти­ко­вать за непри­менение имею­щей­ся тех­но­ло­гии, но наи­луч­шие стан­дар­ты соз­да­ют­ся в про­цес­се, когда вы де­лае­те де­ло – ино­го пу­ти нет. Как я на­пи­сал ле­том про возник­но­вение стан­дар­тов: «Не бой­тесь на­ру­шать их, ес­ли вам это нуж­но – ес­ли в ито­ге у вас по­лу­чит­ся луч­ший про­дукт, луч­шая тех­но­ло­гия и в конеч­ном ито­ге – луч­ший стан­дарт. Мы по­сту­пи­ли так с OAuth 2.0, и бла­го­да­ря это­му Ин­тернет стал луч­ше».

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