Вадим, про такие штуки, как обсерверы и декораторы, я читал ещё в первой половине нулевых в известной вам книге 94 года выпуска. Немного опоздали гордиться подобными новшествами :)
Да и не в этом дело — маркетинга ради можно внедрить все перечисленное хоть в Битрикс, толку-то, если проблемы не решаются? Ну есть у вас автозагрузчик, а зачем он вам, если у вас до сих пор по коду щедро разбросаны include-ы?
Про то, что отдельные классы можно заменить. Буллщит. У вас хренов Router лезет в хренов ModuleViewer. Я как это увидел, немного даже опешил. Копаться в классах такой связности никто кроме вас не рискнет. Особенно при нынешнем уровне покрытия тестами. Нулевом. К тому же сейчас этим никого не удивишь — для подмены классов и существует внедрение зависимостей.
Про магические методы — вы ничего не путаете? Когда CodeIgniter представил «удобный» способ вызова синглтонов через __call(), его всем миром поливали дерьмом, по очевидной причине — с ним зависимости плодятся, как дрожжи в санузле. Кстати, нынешнее положение вашего движка это подтверждает: зависимостей теперь столько, что разгребать их бессмысленно, проще все переписать. И я могу точно сказать, что во всех современных фреймворках использование magic methods сведено к минимуму. В том же Symfony на 30МБ зависимостей их вне тестов определяют раз десять, в основном внутри декораторов и реестров.
На вопрос в лоб: конечно, но не Альто 2.0 и не с Вами. Ничего личного, но у меня уже запланирована разработка своей ЦМС, я уже год в отрыве от работы собираю требования и провожу эксперименты, и абсолютно никакого отношения к коллективным блогам она не имеет. Делать же что–то совместно с людьми, имеющими другие взгляды на программирование — лучший способ всё запороть. И никаких двух–трех лет без всякой отдачи не будет, это безумие. После сбора требований, я просто уйду в Тайгу на полгода и вернусь уже с minimum viable product, завернутым в шкуру медведя. А вы мне предлагаете с незнакомым человеком три года тянуть вола за яйца. Благодарю покорно!
В контексте поднятой мною темы различия между Альто и ЛС совершенно несущественны.
К моменту, когда ЛС достиг версии 0.4, то есть задолго до того как вы его форкнули, все основные проблемы уже были в наличии. Тормозные конфиги? Уже тогда выглядили бредово. Бешеные синглтоны, вызываемые через магические методы? Размазаны по всему коду. Отсутствие автозагрузчика? Ну конечно! Кустарное внедрение зависимостей? Да!
Чем ваш движок 2016 года принципиально отличается от ЛС 2010-го? Помимо появившейся позднее системы ассетов, конечно. Ну да, пользователи оценят админ–панель. Но остальное–то! Тормоза от тысяч вызовов синглтонов через идиотский механизм _CallModule останутся с вами навсегда; без ручного редактирования конфигов все также не обойтись; код разросся и стал совершенно нечитаем (классы длиной в 1500 строк и объемом в полсотни методов?) и невменяем (серьезно, сотни вызовов strtolower на запрос?). Даже представить не могу, почему вы все еще цепляетесь за этот кошмар. За прошедшее время можно было от студента прокачаться до тимлида, а вы воспринимаете всерьез движок на уровне «моя первая цээмэс на похапе».
Чтобы два раза не вставать, про vbulletin, коротко. Когда–то я поддерживал сайт на v3.5.4 — и хотел странного. Ну, энтерпрайзные фичи убрать, колонки в списке тем поменять, добавив к ним вывод кастомных полей, — типичные хотелки, наверняка же кто–то такое уже делал. А вот болт! Чтобы выводить в списке тем кастомные поля, нужно было перехватывать и подменять запрос к базе данных, убрать лишние страницы можно было только редактированием темы и верой в то, что ничего опасного не забыто. С тех пор много думал и пришел к выводу, что типичные модульные системы на основе хуков — полная хрень, потому как их никогда не бывает достаточно, и делать надо сразу с расчетом на замену абсолютнно любого класса ядра.
Да я бы и рад делать продукт для пользователей, да не выходит каменный цветок: если взять надстройку уже существующих страниц, то вещи, делающиеся в Вордпрессе за час, Лайвстрит растянет на унизительные восемь, просто потому что написание кода превращается в наркоманский трип, в ходе которого в голову разработчика перекочует полдюжины модулей и два десятка классов ядра. Я иногда читаю ваши посты — вы спрашиваете «что», «где», «как». Вам, как мне кажется, просто стесняются дать честный ответ — хрен его знает! Игнорируя сложившиеся практики программирования и позволив его коду обрастать зависимостями, авторы движка добились полной его непознаваемости. Его код — хренов Гордиев узел. Поэтому странно читать, что разработчики вас не слышат. Потому что разработчиков — 3,5 калеки, они заняты не доработкой движка, а борьбой с ним.
Вордпресс... Если бы с ним все было так гладко, то мы бы с вами сейчас не разговаривали. Решения для коллективных блогов в нем были ещё до появления Лайвстрита, и даже рабочие, но использовать их было нереально, помните, почему? Потому что каждая новая установка дополнений после 8-10 самых ходовых превращалась в оргию с напильником, а сам сайт — в тормоз и решето.
В общем, я стою на своем: сначала стоит построить прочный универсальный фундамент, а уже на нем воплощать пользовательские мечты. Иначе повторится старая история (как было с phpbb, vbulletin, dle и прочими) — три–четыре года все полны энтузиазма, а потом резко вязнут в болоте обратной совместимости.
Вадим, понимаю, что вам неприятно это читать, но сейчас, в 2016 году, нет ни единой причины вкладывать время в разработку на LS и его форках. Единственное, на что он сейчас годится — служить наглядным пособием по последствиям ошибок развития сообществ и проектирования приложений.
Более того, еще в 10 году было ясно, что движок безнадежен: заложенные в него «хитрые» решения типа использования magic methods и конфигов.с.точками были, скажем прямо, дерьмом собачьим. И если раньше они просто замедляли работу, требуя выполнения тысячи лишних операций со строками на каждый запрос, то к моменту, когда началось развитие слабосвязанных архитектур, стало ясно, что без потери совместимости со всеми дополнениями сразу, развивать движок можно только подтыкая в него все новые и новые костыли, что и делалось последние годы. Но ведь для костылей был, есть и будет Вордпресс!
Все достижения php–программирования последних лет — стандартизация автозагрузчиков, модульное тестирование, внедрение зависимостей, composer, миддлвари — прошли мимо. Граф зависимостей стал похож на моток пакли. Банально проверить, не внесли ли новые изменения какую–нибудь регрессию — нельзя. Даже терминология и та невменяемая — что это за «модули», которые жестко связаны с ядром и друг с другом? Что это за «роутер», выполняющий обязанности сразу фронт–контроллера и мидлвари? С каких пор «маппер» стал самостоятельной сущностью, а не незначительной деталью реализации моделей?
Скоро, с релизом ZF3, станет мэйнстримом поддержка diactoros, react-php и других написанных на php веб–серверов, позволяющих не проводить на каждый запрос повторную инициализацию приложений, и это станет последним гвоздем в гроб LS и Alto. За время одного запроса вашего движка, новые веб–приложения успеют отработать пятнадцать. Создавать сообщества на тормозном движке — значит дарить хостерам деньги, а конкурентам — пользователей.
Возможно, вам стоит оставить LS и создать что–нибудь новое? Не можете же вы не видеть, что движок сейчас разработчикам больше мешает, чем помогает?
Да и не в этом дело — маркетинга ради можно внедрить все перечисленное хоть в Битрикс, толку-то, если проблемы не решаются? Ну есть у вас автозагрузчик, а зачем он вам, если у вас до сих пор по коду щедро разбросаны include-ы?
Про то, что отдельные классы можно заменить. Буллщит. У вас хренов Router лезет в хренов ModuleViewer. Я как это увидел, немного даже опешил. Копаться в классах такой связности никто кроме вас не рискнет. Особенно при нынешнем уровне покрытия тестами. Нулевом. К тому же сейчас этим никого не удивишь — для подмены классов и существует внедрение зависимостей.
Про магические методы — вы ничего не путаете? Когда CodeIgniter представил «удобный» способ вызова синглтонов через __call(), его всем миром поливали дерьмом, по очевидной причине — с ним зависимости плодятся, как дрожжи в санузле. Кстати, нынешнее положение вашего движка это подтверждает: зависимостей теперь столько, что разгребать их бессмысленно, проще все переписать. И я могу точно сказать, что во всех современных фреймворках использование magic methods сведено к минимуму. В том же Symfony на 30МБ зависимостей их вне тестов определяют раз десять, в основном внутри декораторов и реестров.
На вопрос в лоб: конечно, но не Альто 2.0 и не с Вами. Ничего личного, но у меня уже запланирована разработка своей ЦМС, я уже год в отрыве от работы собираю требования и провожу эксперименты, и абсолютно никакого отношения к коллективным блогам она не имеет. Делать же что–то совместно с людьми, имеющими другие взгляды на программирование — лучший способ всё запороть. И никаких двух–трех лет без всякой отдачи не будет, это безумие. После сбора требований, я просто уйду в Тайгу на полгода и вернусь уже с minimum viable product, завернутым в шкуру медведя. А вы мне предлагаете с незнакомым человеком три года тянуть вола за яйца. Благодарю покорно!
К моменту, когда ЛС достиг версии 0.4, то есть задолго до того как вы его форкнули, все основные проблемы уже были в наличии. Тормозные конфиги? Уже тогда выглядили бредово. Бешеные синглтоны, вызываемые через магические методы? Размазаны по всему коду. Отсутствие автозагрузчика? Ну конечно! Кустарное внедрение зависимостей? Да!
Чем ваш движок 2016 года принципиально отличается от ЛС 2010-го? Помимо появившейся позднее системы ассетов, конечно. Ну да, пользователи оценят админ–панель. Но остальное–то! Тормоза от тысяч вызовов синглтонов через идиотский механизм _CallModule останутся с вами навсегда; без ручного редактирования конфигов все также не обойтись; код разросся и стал совершенно нечитаем (классы длиной в 1500 строк и объемом в полсотни методов?) и невменяем (серьезно, сотни вызовов strtolower на запрос?). Даже представить не могу, почему вы все еще цепляетесь за этот кошмар. За прошедшее время можно было от студента прокачаться до тимлида, а вы воспринимаете всерьез движок на уровне «моя первая цээмэс на похапе».
Чтобы два раза не вставать, про vbulletin, коротко. Когда–то я поддерживал сайт на v3.5.4 — и хотел странного. Ну, энтерпрайзные фичи убрать, колонки в списке тем поменять, добавив к ним вывод кастомных полей, — типичные хотелки, наверняка же кто–то такое уже делал. А вот болт! Чтобы выводить в списке тем кастомные поля, нужно было перехватывать и подменять запрос к базе данных, убрать лишние страницы можно было только редактированием темы и верой в то, что ничего опасного не забыто. С тех пор много думал и пришел к выводу, что типичные модульные системы на основе хуков — полная хрень, потому как их никогда не бывает достаточно, и делать надо сразу с расчетом на замену абсолютнно любого класса ядра.
Вордпресс... Если бы с ним все было так гладко, то мы бы с вами сейчас не разговаривали. Решения для коллективных блогов в нем были ещё до появления Лайвстрита, и даже рабочие, но использовать их было нереально, помните, почему? Потому что каждая новая установка дополнений после 8-10 самых ходовых превращалась в оргию с напильником, а сам сайт — в тормоз и решето.
В общем, я стою на своем: сначала стоит построить прочный универсальный фундамент, а уже на нем воплощать пользовательские мечты. Иначе повторится старая история (как было с phpbb, vbulletin, dle и прочими) — три–четыре года все полны энтузиазма, а потом резко вязнут в болоте обратной совместимости.
Более того, еще в 10 году было ясно, что движок безнадежен: заложенные в него «хитрые» решения типа использования magic methods и конфигов.с.точками были, скажем прямо, дерьмом собачьим. И если раньше они просто замедляли работу, требуя выполнения тысячи лишних операций со строками на каждый запрос, то к моменту, когда началось развитие слабосвязанных архитектур, стало ясно, что без потери совместимости со всеми дополнениями сразу, развивать движок можно только подтыкая в него все новые и новые костыли, что и делалось последние годы. Но ведь для костылей был, есть и будет Вордпресс!
Все достижения php–программирования последних лет — стандартизация автозагрузчиков, модульное тестирование, внедрение зависимостей, composer, миддлвари — прошли мимо. Граф зависимостей стал похож на моток пакли. Банально проверить, не внесли ли новые изменения какую–нибудь регрессию — нельзя. Даже терминология и та невменяемая — что это за «модули», которые жестко связаны с ядром и друг с другом? Что это за «роутер», выполняющий обязанности сразу фронт–контроллера и мидлвари? С каких пор «маппер» стал самостоятельной сущностью, а не незначительной деталью реализации моделей?
Скоро, с релизом ZF3, станет мэйнстримом поддержка diactoros, react-php и других написанных на php веб–серверов, позволяющих не проводить на каждый запрос повторную инициализацию приложений, и это станет последним гвоздем в гроб LS и Alto. За время одного запроса вашего движка, новые веб–приложения успеют отработать пятнадцать. Создавать сообщества на тормозном движке — значит дарить хостерам деньги, а конкурентам — пользователей.
Возможно, вам стоит оставить LS и создать что–нибудь новое? Не можете же вы не видеть, что движок сейчас разработчикам больше мешает, чем помогает?