Автобус
Завжди було так, що в деяких частинах вихідного коду 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 …
Щасливо, ПХПарні
