You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2019-08-05_on-the-way-to-durable-applications.md 11KB

5 years ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. Title: На пути к долговечным приложениям
  2. Date: 2019-08-05 00:00
  3. Category: News
  4. Slug: on-the-way-to-durable-applications
  5. Lang: ru
  6. ![Псковское вече][screenshot]
  7. В этой статье мы расскажем о нашем первом долговечном приложении для настольных ПК - генераторе статических сайтов ПСКОВ.
  8. **Долговечность**
  9. Под долговечным приложением мы понимаем такое приложение, которое работает без единого изменения на операционных системах, выпущенных в период 2010-2030 годов. Иными словами, долговечное приложение обладает 10-летней обратной совместимостью и 10-летней прочностью. Впрочем, [ПСКОВ][pskov] работает даже на Windows 2000, так что у него 19-летняя обратная совместимость.
  10. Технически ПСКОВ представляет из себя один файл HTML с упакованными в нём разметкой (HTML), стилями (CSS) и кодом (JavaScript). ПСКОВ исполняется строго в веб-браузере без взаимодействия с сервером.
  11. Подобная организация даёт ПСКОВУ следующие возможности:
  12. * его можно копировать без ограничений
  13. * его можно размещать на любом хостинге
  14. * его можно запускать локально
  15. * он может работать без Интернета
  16. 10-летнюю прочность мы гарантировать не можем, т.к. будущим не владеем. Вместе с тем, история развития HTML, CSS, JavaScript говорит о том, что указанные технологии развиваются с максимально возможной обратной совместимостью. Во-первых, новые возможности JavaScript не отменяют старые. Во-вторых, производители веб-браузеров заинтересованы в том, чтобы их веб-браузеры работали с как можно большим числом сайтов. В результате, например, [тэг <center>][center-tag], объявленный устаревшим в 2014-м году, без проблем работает 5 лет спустя в 2019-м.
  17. В то же время у любого приложения в веб-браузере есть серьёзное ограничение - клетка, обманчиво именуемая песочницей. Эта клетка запрещает доступ как к локальной файловой системе пользователя, так и почти ко всем ресурсам в Интернете без санкции владельца ресурса (CORS). В итоге что-либо отдать приложение может либо определённому серверу, либо пользователю в виде файла для скачивания. Файлы скачивать по одному или архивом неудобно, поэтому в мире нынче преобладает серверный подход, проблем которого мы коснёмся чуть позже.
  18. Для освобождения ПСКОВА из клетки пришлось создать [ЛФСД][lfsa], крошечный скрипт на Python, который необходимо запускать руками на время работы ПСКОВА. ЛФСД даёт возможность ПСКОВУ работать с локальной файловой системой пользователя. Python выбран ввиду его наличия по умолчанию на Linux и macOS, а также возможности поставить на Windows (даже Windows 2000).
  19. **Послужной список**
  20. ПСКОВ успешно опробован для создания следующих небольших сайтов:
  21. * [сайт проекта по созданию открытых игр][ogs]
  22. * [сам ПСКОВ][pskov]
  23. * [ЛФСД][lfsa]
  24. * [пример простейшего блога][pskov-sample]
  25. Теперь о причинах создания ПСКОВА именно в виде долговечного приложения для веб-браузера.
  26. **Причина №1: накопление и сохранение знаний в доступном виде**
  27. Уже не первый год мы трудимся над созданием удобных средств разработки игр. До недавнего времени накопленные знания представляли из себя [родные приложения][ogs-mahjong-1] для настольных ПК, [обучающие статьи][osgcpg] по смежным технологиям либо [видео результатов][showcase]. Указанные виды накопленных знаний отличает то, что знания эти по сути мертвы:
  28. * единицы людей скачают себе неизвестное приложение
  29. * единицы людей прочтут хотя бы часть статей
  30. * единицы людей посмотрят хотя бы часть видео
  31. Во многом эта смерть обусловлена недоступностью: нужно приложить неизвестное количество усилий для достижения неизвестного результата. Врядли таким можно кого-либо нынче заманить. Совсем иначе дело обстоит с приложением в браузере, которое потенциально работает везде: необходимо приложить известное усилие - открыть ссылку - для достижения неизвестного результата. История проведения [твиттер-революций][twitter-revolutions] говорит о том, что открывать ссылки и ставить лайки за смену "кровавого режима" умеют практически все.
  32. **Причина №2: народовластие**
  33. Нынче любой чих в Интернете осуществляется посредством сервисов, которые почти всегда принадлежат какой-то компании: [сообщения][msg], [карты][map], [поиск][search], [музыка][music], [исходный код][src] и т.д.. Следствием подобной узурпации власти становится [закрытие][shutdown-01] тех [сервисов][shutdown-02], которые контролирующая компания считает нерентабельными. Причём без какого-либо обсуждения с теми пользователям, без которых этот сервис никогда бы не взлетел.
  34. В других случаях компания может просто запретить конкурирующему браузеру использовать свой сервис, как это недавно [случилось с веб-версией Скайпа][skype-block]. Вместе с тем, существуют люди, не согласные с такой политикой. Благодаря им появляются [инструменты отключения][skype-free] блокировок.
  35. На наш взгляд, подобное положение вещей недопустимо. Однако, вина в этом лежит не только лишь на одичавшем бизнесе, но и простых пользователях, каждом из нас. Вы можете возразить, что у пользователей нет выбора, что кто-то другой (власть, рептилоиды, нужное подчеркнуть) сделал этот мир несправедливым. Кто-то может даже прямо винить власть/рептилоидов и веровать в то, что вот без них-то мы заживём. К сожалению, история человечества [говорит обратное][story]: "**государство** — это не какая-то вражья орда, оккупировавшая общество, а то, что **растет из общества и зеркально его отражает**".
  36. Будучи частью народа, мы начали с себя и решили употребить свою власть во благо: создавать необходимые нам приложения так, чтобы они работали для всех везде и всегда. ПСКОВ является первой попыткой, которая более чем превзошла наши ожидания. Конечно, у ПСКОВА есть свои ограничения в виде ЛФСД и работы по HTTP без шифрования; предстоит ещё многое сделать для увеличения доступности ПСКОВА, но уже сейчас мы готовы поспорить с любым: ПСКОВ через 10 лет будет работать без единого изменения. Как говорится, запомните этот твит.
  37. На этом мы заканчиваем рассказ о нашем первом долговечном приложении для настольных ПК - генераторе статических сайтов ПСКОВ.
  38. [screenshot]: ../../images/2019-08-05_on-the-way-to-durable-applications.jpg
  39. [pskov]: http://opengamestudio.org/pskov/ru
  40. [center-tag]: https://www.w3schools.com/tags/tag_center.asp
  41. [lfsa]: http://opengamestudio.org/lfsa/ru
  42. [ogs]: http://opengamestudio.org/ru
  43. [pskov-sample]: http://opengamestudio.org/pskov/sample/03.Blog/ru/blog/index.html
  44. [ogs-mahjong-1]: ../game/ogs-mahjong-1.html
  45. [osgcpg]: https://github.com/OGStudio/openscenegraph-cross-platform-guide
  46. [showcase]: https://youtu.be/_t8TGhSgJG4
  47. [twitter-revolutions]: https://ru.wikipedia.org/wiki/%D0%A2%D0%B2%D0%B8%D1%82%D1%82%D0%B5%D1%80-%D1%80%D0%B5%D0%B2%D0%BE%D0%BB%D1%8E%D1%86%D0%B8%D1%8F
  48. [msg]: http://twitter.com
  49. [map]: http://2gis.ru
  50. [search]: http://google.com
  51. [music]: http://music.yandex.ru
  52. [src]: http://github.com
  53. [shutdown-01]: https://techcrunch.com/2015/03/13/google-kills-off-google-code/
  54. [shutdown-02]: https://www.reddit.com/r/sysadmin/comments/62orq9/codeplex_shutting_down_and_fosshub_is_sad/
  55. [skype-block]: https://www.reddit.com/r/firefox/comments/aw1umv/skype_web_is_now_blocked_in_firefox/
  56. [skype-free]: https://addons.mozilla.org/ru/firefox/addon/firefox-web-skype/
  57. [story]: https://ria.ru/20190723/1556775012.html