Оригинал: https://t.me/bpblog/1329 2025-01-25
За четыре с половиной (?) года разработки Микоризы появлялось понимание того, какие решения в дизайне системы были верными, а какие ошибочными. Тут расскажу о некоторых из них. Надеюсь, что-нибудь в этом тексте сможет разозлить анонимных читателей.
Самая главная ошибка — это, конечно, использование Гита в качестве системы контроля версий гиф. В ранних версиях у меня был свой формат истории, но плохой, и я решил, что лучше взять популярный, уж с ним-то всё ок будет. Взял.
Да, Гит лучше того, что было до него. Для многих пользователей такое хранилище истории — киллер-фича. Но лучше бы я тогда подумал и придумал формат хранения получше. Сейчас уже как-то поздно менять.
Гит медленный, с крайне неудобной для задачи моделью данных: он работает с файлами с конкретными именами, а не с гифами. У него утомительно тяжёлое API. Щас даже разобраться не могу, как это работает в коде. И в него всё равно всё не засунешь. Всё, кроме гиф, хранится в файликах рядом с гит-репозиторием. Ну и толку тогда? Лучше бы всё в толковой быстрой базе данных лежало с разумной схемой. Конечно, полагаться на файловую систему так сильно тоже не стоило.
А, ещё, в Гите нельзя толком отбросить историю. Почти append-only! Сейчас я проникся идеей ПО, умеющего забывать, это прекрасно.
Другая ошибка — гифы. И название, и концепция. Я и сейчас считаю хорошей идеей не использовать слово «страница», но лучше бы я тогда догадался до слова «документ». В прошлом году проводил опрос в чате микоризальных ребят о переименовании гиф в документы — против были. Ну что за народ?
Вот с концепцией сложнее. Я тогда сильно был против дихотомии текстовых статей и медиафайлов, наблюдаемой во многих движках, например, в МедиаВики. Я даже называл ту дихотомию ложной и всё грозился написать разгромную статью. Вроде бы, так и не написал, и дихотомия мне теперь кажется не такой уж и плохой. Из-за отказа от этой дихотомии в Микоризе до сих пор нельзя перетащить картинку в текст, чтобы она сама куда-нибудь загрузилась как-нибудь.
Третья ошибка — поддержка нескольких пользователей. Не поймите неправильно, я очень люблю такие сайты, особенно если они на Микоризе, но если бы я исходно бы не думал в сторону таких сайтов, и думал только о single-user установках, всё было бы чётче и двигалось слаще. Всё равно большинство Микориз однопользовательские. Но на каком движке работали бы те многопользовательские вики? Боюсь представить такой мир. Пришлось ради них так поступить.
Четвёртая ошибка — поддержка сразу трёх форматов веб-фидов: RSS, Atom, JSON Feed. Взял бы один любой, и всё на этом. А сейчас и удалить жалко, и толку никакого. Всё равно все по RSS подписываются, наверное.
Пятая ошибка — использовал для шаблонизации HTML не стандартные шаблоны, а злоклятый quicktemplate. Три с половиной года как пытаюсь его искоренить из кодовой базы, но всё никак не получается. Вьелся конкретно, как плесень.
Первые четыре ошибки я решать не буду, они уже коренные и так будет всегда. А теперь о том, что ошибкой не является.
На Вестях Взломщиков видел свидетельства того, что Микоразметка — главная причина не использовать Микоризу, что в современном Маркдауноцентричном мире такие решения принимать нельзя. Так вот, Микоразметка — одна из лучших фич Микоризы, и я очень горд, что продолжаю гнуть свою линию и стоять под стрелой. Конечно, в самой разметке можно было некоторые моменты получше придумать, но да ладно. Главное — общее направление.
Доволен, что посчитал современные фронтальные решения ерундой и организовал отображение страниц классическим образом. Сэкономил очень много работы. Там вон маятник начал качаться, HTMX какой-то осваивают люди. Вот такие движения одобряю.
Выбор языка Го был хорош. Раст во многом был бы лучше, наверное, но вот на Хаброкарьере я вижу только одну вакансию на Расте, а на Го — свыше сотни. С Микоризами Го изучил, и теперь я профессиональный гофер. Не зря дороги хожены.
P. S. А ещё мне, на самом деле, нравится, что в последние два года разработка Микоризы сильно замедлилась. По асимптоте приближаемся к поистине завершённому состоянию. Completeness. С другой стороны, было бы здорово побольше времени уделять...
Что будет дальше? Ничего интересного. Да здравствует скучное ПО.