Здравствуйте, меня зовут Михаил Капелько. Занимаюсь профессиональной разработкой ПО более 10 лет, в свободное время разрабатываю игры и средства для их создания.
В этой статье я расскажу о своём первом долговечном приложении для настольных ПК — генераторе статических сайтов ПСКОВ.
Долговечность
Под долговечным приложением я понимаю такое приложение, которое работает без единого изменения на операционных системах, выпущенных в период 2010-2030 годов. Иными словами, долговечное приложение обладает 10-летней обратной совместимостью и 10-летней прочностью. Впрочем, ПСКОВ работает даже на Windows 2000, так что у него 19-летняя обратная совместимость.
Технически ПСКОВ представляет из себя один файл HTML с упакованными в нём разметкой (HTML), стилями (CSS) и кодом (JavaScript). ПСКОВ исполняется строго в веб-браузере без взаимодействия с сервером.
Подобная организация даёт ПСКОВУ следующие возможности:
- его можно копировать без ограничений
- его можно размещать на любом хостинге
- его можно запускать локально
- он может работать без Интернета
10-летнюю прочность я гарантировать не могу, т.к. будущим не владею. Вместе с тем, история развития HTML, CSS, JavaScript говорит о том, что указанные технологии развиваются с максимально возможной обратной совместимостью. Во-первых, новые возможности JavaScript не отменяют старые. Во-вторых, производители веб-браузеров заинтересованы в том, чтобы их веб-браузеры работали с как можно большим числом сайтов. В результате, например, тэг <center>, объявленный устаревшим в 2014-м году, без проблем работает 5 лет спустя в 2019-м.
В то же время у любого приложения в веб-браузере есть серьёзное ограничение — клетка, обманчиво именуемая песочницей. Эта клетка запрещает доступ как к локальной файловой системе пользователя, так и почти ко всем ресурсам в Интернете без санкции владельца ресурса (CORS). В итоге что-либо отдать приложение может либо определённому серверу, либо пользователю в виде файла для скачивания. Файлы скачивать по одному или архивом неудобно, поэтому в мире нынче преобладает серверный подход, проблем которого я коснусь чуть позже.
Для освобождения ПСКОВА из клетки пришлось создать ЛФСД, крошечный скрипт на Python, который необходимо запускать руками на время работы ПСКОВА. ЛФСД даёт возможность ПСКОВУ работать с локальной файловой системой пользователя. Python выбран ввиду его наличия по умолчанию на Linux и macOS, а также возможности поставить на Windows (даже Windows 2000).
Послужной список
ПСКОВ успешно опробован для создания следующих небольших сайтов:
Теперь о причинах создания ПСКОВА именно в виде долговечного приложения для веб-браузера.
Причина №1: накопление и сохранение знаний в доступном виде
Уже не первый год я тружусь над созданием удобных средств разработки игр. До недавнего времени накопленные знания представляли из себя родные приложения для настольных ПК, обучающие статьи по смежным технологиям либо видео результатов. Указанные виды накопленных знаний отличает то, что знания эти по сути мертвы:
- единицы людей скачают себе неизвестное приложение
- единицы людей прочтут хотя бы часть статей
- единицы людей посмотрят хотя бы часть видео
Во многом эта смерть обусловлена недоступностью: нужно приложить неизвестное количество усилий для достижения неизвестного результата. Врядли таким можно кого-либо нынче заманить. Совсем иначе дело обстоит с приложением в браузере, которое потенциально работает везде: необходимо приложить известное усилие — открыть ссылку — для достижения неизвестного результата. История проведения твиттер-революций говорит о том, что открывать ссылки и ставить лайки за смену "кровавого режима" умеют практически все.
Причина №2: народовластие
Нынче любой чих в Интернете осуществляется посредством сервисов, которые почти всегда принадлежат какой-то компании: сообщения, карты, поиск, музыка, исходный код и т.д… Следствием подобной узурпации власти становится закрытие тех сервисов, которые контролирующая компания считает нерентабельными. Причём без какого-либо обсуждения с теми пользователям, без которых этот сервис никогда бы не взлетел.
В других случаях компания может просто запретить конкурирующему браузеру использовать свой сервис, как это недавно случилось с веб-версией Скайпа. Вместе с тем, существуют люди, не согласные с такой политикой. Благодаря им появляются инструменты отключения блокировок.
На мой взгляд, подобное положение вещей недопустимо. Однако, вина в этом лежит не только лишь на одичавшем бизнесе, но и простых пользователях, каждом из нас. Вы можете возразить, что у пользователей нет выбора, что кто-то другой (власть, рептилоиды, нужное подчеркнуть) сделал этот мир несправедливым. Кто-то может даже прямо винить власть/рептилоидов и веровать в то, что вот без них-то мы заживём. К сожалению, история человечества говорит обратное: "государство — это не какая-то вражья орда, оккупировавшая общество, а то, что растет из общества и зеркально его отражает".
Будучи частью народа, я начал с себя и решил употребить свою власть во благо: создавать необходимые мне приложения так, чтобы они работали для всех везде и всегда. ПСКОВ является первой попыткой, которая более чем превзошла мои ожидания. Конечно, у ПСКОВА есть свои ограничения в виде ЛФСД и работы по HTTP без шифрования; предстоит ещё многое сделать для увеличения доступности ПСКОВА, но уже сейчас я готов поспорить с любым: ПСКОВ через 10 лет будет работать без единого изменения. Как говорится, запомните этот твит.
На этом я заканчиваю рассказ о своём первом долговечном приложении для настольных ПК — генераторе статических сайтов ПСКОВ.