Избегая автобусов
Всегда было так, что в некоторых частях исходного кода PHP разбиралось только несколько человек. Для решения о возможности внесения программистом изменений в исходный код использовалась система карм. Если у вас есть /Zend карма, то значит вы что-то знаете о Zend. Среди людей с /Zend кармой некоторые понимали больше, чем другие.
Это был вполне приемлемый способ разработки языка. Несмотря на то, что Zend сложен, написан он так, что понятен всем, кто работает над проектом на C. В принципе, мы можем взять людей, немного знающих C и сделать из них рабочих лошадок с /Zend кармой, способных делать патчи, фиксы и фичи. И на самом деле сделали и по-прежнему делаем в таком инкубаторе, как чат Stackoverflow.
Много воды утекло с тех пор … Как вы думаете, чему равен «фактор автобуса» у PHP сегодня?
2
Всего два человека должны были бы проснуться сегодня утром и решить, что они хотят заниматься чем-то другим в своей жизни, чтобы у PHP не хватило экспертизы и ресурсов для движения вперёд и в текущем темпе.
Просто сосредоточьтесь на этой цифре на несколько секунд … подумайте о количестве людей, чьи средства к существованию зависят от PHP, о количестве ипотечных кредитов, платежей за машину, школьных сборов, зарплат ...
Это самая пугающая цифра 2, что я когда-либо видел.
Двое
Следящие за развитием PHP знают, кто эти двое.
Это Дмитрий Стогов и Никита Попов.
Я не хочу набивать себе цену, но хочу прояснить пару вещей: я считаю себя полезным для проекта, я трачу много времени на PHP, мои работодатели достаточно любезны, чтобы позволить мне это делать, но у меня есть обычная работа, не говоря уже о жизни.
Большинство не тратят много, если вообще тратят, рабочего времени на вклад в PHP - они делают это в свободное время. Время, которое у них есть для чтения бесконечного кода, ограничено, потому что у них есть реальная жизнь.
Есть много людей, которые, как и я, являются активом для проекта, и, если мы потеряем их, то мы будем страдать.
Но разницу между мной и Никитой или Дмитрием нельзя недооценивать.
Я наблюдаю за Никитой с тех пор, как он начал заниматься PHP; требуется около 10 секунд, чтобы понять, что с вами рядом человек, который не только высоко квалифицирован - хотя он все еще заканчивал образование, когда начал заниматься PHP - но и очень профессионален. Просто блестящий ум.
Дмитрий, который в проекте гораздо дольше, - еще один тип блестящего ума. Он пишет вещи, которые я с трудом могу смоделировать в своей голове, хотя я понимаю язык, который он использует. Крайне обидно знать, что такие люди существуют. Чтение того, что Дмитрий сделал для проекта, отняло бы у вас слишком много времени. Достаточно сказать, что самые продвинутые части PHP, как правило, носят имя Дмитрия, включая JIT. За именем Дмитрия часто следует имя Никиты.
JIT
У JIT «фактор автобуса» равен 1. Сейчас Никита понимает в нем гораздо больше, чем тогда, когда JIT был только смёржен, но Дмитрий – тот человек, который работает над JIT. Для работы над JIT требуется специальный набор навыков, который развивается только тогда, когда вы работаете (с высокой концентрацией) над JIT или очень близкими технологиями (компиляторы, ассемблер и т.д.) в течение многих лет, и на данный момент Дмитрий - единственный человек, который делает это, и мы не хотим, чтобы Никита переводил свой фокус на JIT.
Вы можете подумать, и мы все были убеждены, что это не проблема, поскольку JIT содержится в расширении, которое может быть удалено или отключено.
Нет, не может. В тот момент, когда его смёржили, он стал основной частью того, что мы называем PHP. В PHP есть JIT, и нет такого возможного будущего, в котором мы могли бы просто удалить его.
В качестве иллюстрации того, насколько сложным является JIT: недавно была проведена некоторая (очень интересная для наблюдения) работа по переносу поддержки JIT на arm64. Это было предложено и первоначально реализовано инженерами из arm. Пока Дмитрий и инженеры arm работали над веткой, я видел, как инженеры arm с трудом понимают и даже делают ошибки. Незначительные ошибки, которые может заметить только Дмитрий, но тем не менее, никто, кроме этих людей, не был более квалифицирован для этой работы. JIT настолько трудно понять, что вы можете иметь высочайшую квалификацию в своей области, но всё равно сделать что-то неправильно.
Перенос на новую платформу — это почти наверняка самая сложная работа, которую вы можете выполнить для JIT, и количество случаев, когда это понадобится, очевидно, ограничено — это особый случай. Я упоминаю об этом только для иллюстрации того, насколько сложным является JIT; нам не нужно беспокоиться о том, что мы не сможем перенести JIT на новые платформы.
Когда дело доходит до JIT, мы просто должны смириться с тем, что навыки, необходимые здесь, редки, и нам повезет, если «фактор автобуса» для JIT когда-нибудь поднимется выше 1.
Я надеюсь, что это возможно: в некотором вероятном будущем будет много людей, которым платят за работу над PHP и те, кто работает полный рабочий день, полностью сосредоточатся на JIT.
Надо также признать, что работа в непосредственно с JIT, как это делают Никита и другие участники, может никогда не сделать вас достаточно продвинутым, чтобы добавить в JIT новые фичи или исправить очень сложные ошибки.
Остальные
Никита всегда оказывал большое влияние на проект, но поскольку он был нанят именно для этого, его результаты весьма примечательны. Нет ни одной минуты в день, когда бы он не проверял что-то, не писал что-то, не исправлял что-то или не планировал написать что-то, проверить что-то или исправить что-то. Это, безусловно, очень полезно для проекта.
Есть также несколько других контрибьютеров, чья производительность высока, учитывая, что они в основном делают это в свободное время, и мы все благодарны им за каждую потраченную минуту.
По каким-то причинам многие из тех людей, которых я все еще считаю обладателями кармы /Zend, ушли, или их деятельность свелась практически к нулю. Я могу сказать из личного опыта, что это были трудные несколько лет, чтобы оставаться с актуальными знаниями, сначала с NG, затем с JIT ... так что, возможно, это объясняет ситуацию.
Что мы поняли с тех пор, как Никита был принят на работу, так это то, что это тот темп, который нам нужен... Если он сейчас уйдет, я сомневаюсь, что все остальные участники, вместе взятые, смогут подхватить то, что останется.
Так я пришел к цифре 2.
Итак, что же?
Это цифра 2. Это неприемлемый «фактор автобуса» для проекта такого размера и важности, как PHP.
С каждым новым RFC проект становится понемногу все более сложным, и больше нет возможности поддерживать такую сложность.
Поэтому, два момента:
Думайте иначе
Я думаю, что в будущем мы должны подходить к предложениям немного иначе.
За последние десять лет общая сложность проекта значительно возросла, а мы все ведём себя так, как будто у нас язык с дефицитом возможностей, пытаясь впихнуть в него столько же синтаксиса и функциональных дополнений, сколько и десять лет назад.
Мы должны смотреть на вещи в свете «фактора автобуса», который на данный момент слишком низок.
Мы должны смотреть на вещи в свете той сложности, которую мы уже добавили в язык, причем что-то добавлено без необходимости.
В прошлом, я думаю, большинство людей голосовали, исходя из того, что было хорошо для них и их проектов. Сейчас это безответственно и уже недостаточно людей, просто утруждающих себя голосованием.
Я думаю, что голосующие теперь обязаны голосовать на основе того, что действительно лучше для проекта, с прицелом на будущее, но также в свете прошлого, в свете текущего «фактора автобуса», а не на основе того, что, по их мнению, хорошо для них.
Дело не в том, что у нас не должно быть новых фич, а в том, что мы должны взвешивать преимущества этой фичи против недостатков, с которыми мы сталкиваемся в настоящее время, и стараться не фиксировать свое мышление на текущем моменте и вокруг текущих проблем.
Я думаю, также важно, чтобы мы либо воздерживались от голосования по вещам, которые мы не понимаем и не имеем времени на исследование, чтобы понять; либо, проведя исследование, голосовали против на основании лишь того, что мы не можем понять это.
Я думаю, что тенденция думать, что вы делаете лучшее, даже если вы не до конца это понимаете, является пагубной и уж зарекомендовала себя таковой.
Если вы из голосующих за фичи, то вы уже знаете, что у меня нет каких-то особых полномочий, чтобы убедить вас в чем-либо из вышесказанного. Это просто мои мысли, может быть не имеющие для вас никакого смысла ... и никто не обязан прислушиваться к ним ...
Так что, на самом деле, ещё одно:
Помогите
Нам крайне важно создать базу разработчиков. Если у вас есть хотя бы беглые знания PHP, или вы можете писать на C и готовы учиться, пожалуйста, узнайте у того, кто платит вам зарплату, смогут ли вам компенсировать какое-то время, чтобы помочь проекту, на который опирается ваш бизнес.
Мы можем повысить «фактор автобуса», но даже с таким количеством участников, которые работают в свободное время, это не даст нам достаточно концентрации, чтобы подняться выше 2. Нам не обязательно нужны люди, которые работают над PHP полный рабочий день, хотя это было бы неплохо. Но нам нужна концентрация, на которую мы можем положиться, которая, как мы знаем, будет в следующем месяце, в следующем году, и она должна быть оплачена компаниями, которые опираются на PHP.
Я просто скажу 2 снова … 2 …
Счастливо, ПХПарни