Rasmus Lerdorf рассказывает как родился и развивался PHP

Чарльз Северанс берет интервью у Расмуса Лердорфа о создании PHP. Из выпуска журнала Computer за ноябрь 2012 года:

Ладно, это началось в 1993 году, когда я увидел веб-браузер Mosaic. Это было тогда, когда я действительно заинтересовался интернетом. До этого я занимался Gopher и IRC и другими связанными с Интернетом вещами.
Но с Mosaic я мог внезапно объяснить, что я делал для своей мамы, чем он поможет ей помочь. Так понял, что эта штука будет очень, очень интересной.

Предыстория PHP

Я жил в Маунтин-Вью, Калифорния, но я вернулся в Торонто, чтобы зарабатывать на консультациях. Я проводил консультации для ряда компаний, и я писал один и тот же код снова и снова.

В основном CGI-скрипты написанные  на C. И я писал похожие коды с формами и пост-данными и фильтрацией. И все эти одинаковые скрипты, которые вы в конечном итоге должны писать на C , если вы пишете индивидуальные CGI-скрипты. Итак, это было очень утомительно. Я не очень любил программирование, это немного утомительно и скучно для меня. Я занимался консалтингом. Поэтому, если бы я мог уменьшить количество времени, которое мне пришлось потратить на программирование и максимизировать вывод и быстрее добраться до решения, это то, что мне было нужно от PHP.

Начало PHP

Я собрал все мои скрипты CGI на C в веб-сервер NCSA.

NCSA HTTPd — один из первых веб-серверов стандарта HTTP/1.0, получивший широкое распространение в начале 1990-х. Поддержка проекта прекращена в 1996 году как потерявшего актуальность — фактически на смену NCSA HTTPd пришёл Apache 1.0 (1995 год), состоящий из исправленных текстов NCSA HTTPd. Разработан в Национальном центре суперкомпьютерных приложений (NCSA). В 1995 году перестал обновляться из-за того, что его авторы покинули NCSA. Использовался в связке с браузером (клиентом) Mosaic в World Wide Web. В этом сервере был введен интерфейс между http-сервером и скриптами Common Gateway Interface (CGI), который позволил легко создавать динамические веб-сайты, не требуя написания дополнений или изменения кода сервера httpd.

И затем добавил небольшую систему шаблонов поверх этого, чтобы позволить мне легко вызвать в нее. И это была первая версия PHP. Это был инструмент производительности для себя, поэтому я мог очень быстро пойти к новому клиенту и создать для него новое веб-приложение. И привязать их к базе данных или к тому, что им нужно. У каждого клиента были несколько разные требования, поэтому я продолжал расширять свой инструмент.

Потом другие люди начали спрашивать меня об этом. Они спросили меня, как я построил эти вещи, и я сказал, ну, я использую этот маленький инструмент, который я построил. И они спросили, могут ли они иметь его, я был уверен, почему бы и нет? Это не то, что я продаю. Я продаю свои услуги по решению проблем. Сам инструмент на самом деле не имеет значения. Это просто мой молоток, и любой может использовать мой молоток, мне все равно.

Развитие PHP

А потом они начали посылать мне патчи, которые, как я думал, были очень, очень крутыми. И они нашли ошибки в моих вещах, которых я еще не нашел, что означало, что я мог бы также пойти к клиентам и сказать: «Эй, привет! Вот новая версия, которая исправляет это, это и это». И они думали, что я очень продуктивен, пишу весь этот код и исправляю все эти вещи так быстро. Так вот, когда открытый исходный код действительно ударил меня. Это было в 1994, 1995 годах до того, как существовал термин open source. Но это действительно зацепило меня, что я собрался вместе с группой моих сверстников. Другие люди, заинтересованные в Интернете, решение веб-проблемы со всего мира. У всех нас были схожие проблемы, мы сталкивались с похожими проблемами. И совместными усилиями мы могли бы создать инструмент, который решил эту проблему. И именно так PHP сошел с земли.

Сообщество разработчиков

Я немного узнал по пути, что для того, чтобы это расти, мне пришлось отказаться от контроля над PHP. Мы должны были позволить другим людям иметь некоторый контроль. Я не мог переписать все патчи, потому что я довольно ленивый и , это много работы. Но и дать людям некоторую собственность в проекте. Как только у них есть какая-то собственность, как только они полностью контролируют свою часть, , тогда они становятся гораздо более инвестированы в нее. И они становятся страстными, и это становится их. Не только они вносят свой вклад в мой проект, но и становятся нашим проектом, и , которые действительно изменили характер PHP. Это произошло примерно в 1997 году или около того, где я действительно делегировал его и дал людям полный доступ к репозиторию CVS, который я использовал для разработки материала в. И после этого она стала сумасшедшей. Оба потому, что веб рос, и PHP был своего рода в нужное время, в нужном месте. Но также потому, что это было очень, очень легко войти и начать вносить вклад в PHP и использовать PHP, а также, очевидно. Он имеет очень низкий барьер входа. Таким образом, как на стороне PHP, так и на стороне PHP, я попытался сохранить барьер для входа на очень низком уровне. Не нужно много, даже сегодня, чтобы получить CVS аккаунт и PHP-проект. Контроль предоставления источника - замечательная вещь. На самом деле не имеет значения, насколько плохо начальный патч от какого-то участника. Мы всегда можем это исправить. Скорее приветствуют новых участников и направляют их, чтобы они были продуктивными и полезными, чем кричать на них за плохое начальное патч. >> Снаружи вы выглядите как хорошо смазанная машина. И это хорошо смазанная машина , которая выполняет вещи более эффективно, чем коммерческая организация. Но в то же время, это группа братьев в некоторой степени. >> У нас около 1 400 человек с аккаунтами CVS, , что означает, что все эти люди могут совершить какую-то часть репозитория. Либо PHP, PEAR, PECL, дерево документации, где угодно. Теперь они не все активны, очевидно. Возможно, у нас чуть больше половины люди что-то совершили за последние полтора года. На самом деле нет управления этими людьми. Они вроде самоорганизуются в более мелкие группы. Очевидно, что управлять 1400 людьми невозможно. Особенно, когда они добровольцы, и они на самом деле не собираются появиться на встречу или на встречу и приветствие или электронную почту или что-то еще. Но они самоорганизуются вокруг того, что им интересно. Таким образом, у нас есть команды документации для различных языков. Есть большая французская команда документации, которая просто беспокоится о переводе документации на французский . Есть команда японских переводчиков. Большая группа основных документаторов. И эти парни организуются сами. Нет большого вождя всей этой штуки. Я не говорю людям, что делать, я не могу. Они меня не слушают. Зачем они меня слушали, верно? Они делают то, что им интересно, это единственный способ работы волонтеров. Тогда есть ребята PECL, которые строят расширения PECL. Как правило, именно там мы тестируем новые расширения и приносим определенные. Как и в PHP 5.1, мы добавили расширение JSON, которое начало свою жизнь в PECL. Далее, может быть, или некоторые из других, которые сейчас большие. Так вот как новые функции и новые вещи в конце концов ползут в. Они живут за пределами основного дерева, и там они получают достаточно проникновения, достаточно людей их устанавливают. Мы видим, как дистрибутивы Linux вытягивают их, в их основной версии PHP, которую они вытащили в некоторых из этих вещей. Итак, мы вроде как смотрим на то, что там происходит. И это случается, но никакого реального управления этим тоже нет.

Меритократия

И это меритократия, говорит код. Если вы пишете патч или , вы пишете фрагмент кода для реализации функции, что говорит о многом. Если кто-то хочет не согласиться с этим способом, если они могут предложить альтернативную реализацию, это действительно хороший аргумент. Если все, что они делают, это ныть об этом, это действительно плохой аргумент. И шансы на то, что реализация победит. Несмотря на то, что это может быть не лучший способ делать вещи, есть код, он вроде как работает. Это то, с чем мы идем, и это всегда было дефолтом. Это не всегда приводит к последовательности. Но это приводит к получению функций и фактически в состоянии что-то сделать. Возможность подключения к этой базе данных,  хотя это может быть не лучший способ сделать это, по крайней мере, он доставит вас туда. И это всегда было то, о чем PHP, он решает проблему. Мы предпочли бы иметь уродливую функцию, чем вообще не иметь функцию.