Мысли о движке сайтов S2
В этом году я сделал несколько доработок своего движка сайтов S2, главная и самая заметная из которых — система рекомендаций. Я бы не стал об этом опять писать, если бы не одно но — до этого крупные доработки в движке я делал больше 8 лет назад. В этой заметке я хочу зафиксировать, как так получилось и что теперь с этим делать.
История
Историю движка можно проследить по тегу «S2». Главная проблема движка в том, что он был полем для моих экспериментов в процессе изучения
С другой стороны, в движке были и удачные находки. Например, шаблон страницы обрабатывается не только после подготовки данных, когда они подставляются в этот самый шаблон, но и до того, чтобы определить, какие именно данные нужны шаблону. Это позволяет гибко управлять функциональностью и не нагружать сервер лишней работой, если она не требуется для отображения текущей страницы. Такую оптимизацию я не встречал в других системах.
В
Со второй частью намерений не сложилось. Были желающие помочь развитию движка, но других активных разработчиков у движка так и не появилось.
Со временем я приобрел достаточный опыт в разработке и стал понимать, насколько тяжело дописывать новый код движка в старой парадигме. Я несколько раз пытался переписывать код с нуля. Сначала без фреймворков с «нормальным» объектным подходом (версия 2.0dev). Потом на микрофеймворке Silex. Потом авторы Silex отказались от его развития, и я подключил Symfony. Все эти попытки сделать версию 3.0 останавливались на том, что надо переделать на новую схему админку и расширения, и для такой объемной работы у меня не было времени и желания.
Одновременно с этим активность на форуме угасла. Авторы некоторых сайтов перенесли их на другие движки. Некоторых сайтов больше нет. Некоторые заброшенные сайты до сих пор работают на S2.
В итоге сейчас у движка больше нет пользователей, на которых надо ориентироваться.
Доработка
Недавно я решил просмотреть все заметки в блоге, удалить устаревшие заметки, актуализировать теги. На удивление некоторые заметки перечитал с удовольствием. Этот процесс вдохновил меня на то, чтобы залезть в код движка и посмотреть, что можно с ним сделать.
У меня получилось за 1 января (обычно бесполезный день) подключить к S2 версии 2.0dev свежую версию поискового движка Rose, и при этом сделать так, чтобы в общем кодовом пространстве движка сосуществовали устаревший код, на который больно смотреть, и новый код, с которым приятно работать. Такой быстрый прогресс открыл дорогу к тому, чтобы сделать уже упоминавшуюся систему рекомендаций.
Также я внес несколько менее масштабных, но не менее желанных изменений. Перенес
Еще подключил codeception — библиотеку для написания автотестов, и стал добавлять эти автотесты. Среди нескольких видов тестов пришлось выбрать приемочные (acceptance). В них выполняются настоящие
Продуктовый подход
Я как единственный оставшийся пользователь движка подошел к нему и своему сайту как к работающему продукту. Вместо того чтобы пытаться переписать движок с нуля на идеальной архитектуре, потратив непонятное количество времени, я сконцентрировался на том, какие фичи могу добавить прямо сейчас. Практика показала, что многое можно сделать в текущей версии, не переписывая ее код с нуля.
Альтернатива — забросить S2 и перейти на другой движок, хотя бы ту же Эгею Ильи Бирмана. Но для этого надо создать свою тему оформления, написать и отладить конвертер заметок, разобраться со старыми адресами URL, пройтись по всем заметкам и убедиться, что ни в одной ничего не сломалось (а ломаться есть чему: у меня есть заметки с нетривиальной версткой вроде рецензии на книгу о фильме «Интерстеллар»). Это значительный объем работы, которую нельзя делать понемногу, мелкими шагами. Мне проще было постепенно доработать свой движок.
Светлое будущее
S2 переехал на гитхаб, откуда его можно скачать. Версию 1.0 я пока что использую, поэтому еще некоторое время буду исправлять баги и проблемы совместимости со свежими версиями PHP. Новых фич в ней не будет. С версии 1.0 можно обновиться до 2.0dev, переработав стили.
Версию 2.0dev буду иногда дорабатывать на досуге. Не планирую свои сайты переводить с неё на
На вопросы возможных пользователей движка я отвечать не планирую. Я не вижу перспектив в том, чтобы у движка появлялись новые пользователи. Сейчас соцсети, облачные платформы и конструкторы сайтов не оставляют движкам типа S2
Комментарии
Я так и сделал — потом в течение 4 лет переносил посты. Параллельно, опять же под настроение, сделал одну тему оформления, пожил
В общем, просто хотелось сказать, что заниматься переносом только страшно думать, а руки делают. И видеть обновленный сайт — кайфово, и писать в него больше хочется) Но если цель прям свое допилить — тоже хорошо)
Вот, кстати, постик немного об этом:
Трудности у меня были только с первым — заметки со статичной вёрсткой после переноса смотрелись отвратительно, я решил, что поправлю их руками, это было тяжело, на это ушло много времени, никому не советую. Зато весь остальной контент сконвертировался с минимальными правками — после конвертации я потратил день, чтобы прощёлкать все заметки и поправить замеченные косяки.
По поводу развития кода «Эгеи» лично для меня тут есть сложности. Наверное если заниматься «Эгеей» постоянно, всё будет просто, но лично для меня почти полностью процедурный код (а значит тестов не будет никогда), со своим собственный стилем кода (например, запрещены && и ||, вместо них — and и or), написанный под php5 (новые конструкции использовать нельзя, никакой типизации), без документации и почти без комментариев очень тяжело править и развивать.
Я пробовал несколько раз, не всегда удачно — у кода высокая связность, надо знать очень много вещей, иначе всё сломаешь. Всегда это было очень трудно.
Кроме того, есть вещи, которые меня в «Эгее» очень сильно раздражают, вплоть до импульса переехать на другой движок. Самая важная для меня штука — плохо сделана работа с комментариями. Нет древовидных комментариев, для части пользователей нет возможности следить за ответом, сложная (как оказалось) для некоторых пользователей система логина, в комментариях очень бедная разметка.
По остатку, у движка лаконичный, во многом продуманный дизайн из коробки, на который делается упор, это мне нравится и до сих пор удерживает меня от ухода, хотя с автором я не во всём согласен,
Оставьте свой комментарий