ПРИНТЕД #4

4 ноября 2017 г.
http://instead.syscall.ru

Когда просматриваешь старые электронные журналы, рассцвет которых в нашей стране пришелся на бум "бытовых" компьютеров, чувствуешь какую то странную ностальгию. В этой ностальгии есть романтика неизведанных просторов. В ней слышатся деликатные отзвуки отступающего аналогового мира который еще не заполнен грохотом мчащихся потоков дешевой информации. Но в котором есть чувство свободы и безграничных возможностей творчества.

Но вот мы движемся постепенно от номера к номеру и видим как эпоха уходит, как одно за другим закрываются издания, как все большую роль начинает играть коммерческий фактор, а уже стареньким бытовым компьютерам больше нечего предложить современным подросткам. И вот, мы читаем последний номер какого-нибудь журнала и доходим до слова "пока!".

Ждет ли такая же судьба Принтед и INSTEAD? Не буду кривить душой -- вероятно. Время романтики проходит. Время чтения проходит. Аналоговое время -- проходит. Творчество в том виде, в котором оно и составляет движущую силу проекта INSTEAD, уже мало интересно повзрослевшим романтикам 80-90х. А для нового поколения его форма тяжела для хоть какого-нибудь целостного восприятия.

Но когда будет написано это последнее "пока" я не знаю. И надеюсь, что может быть прямо сейчас кто-нибудь заново открывает игры, которые мы писали...

Петр Косых

Новости

За время прошедшее со времени выпуска прошлого ПРИНТЕДА произошло много событий, которые уже вряд ли можно назвать новостями. Однако ПРИНТЕД выполняет роль бортового журнала, поэтому...

Выпуск INSTEAD3

Я давно думал о том, чтобы переписать все. За время работы над INSTEAD было выявлено множество вещей, которые просто напрашивались на переосмысление. Но переписать все -- это значит начать с чистого листа. Это пугало. Да и не было уверенности в востребованности этого труда.

Тем не менее, работы над STEAD3 API и рефакторингом C части начались и к весне 2017 года INSTEAD 3.0 был выпущен. Я надеюсь, что новое API и новый INSTEAD найдут свой отклик. На мой взгляд, он стал лучше. А после того как появились первые игры на новом API я понял, что все было не зря.

Подкаст от Вадима Балашова

Вадимом Балашовым (vvb) был записан подкаст. В основном он посвящен выпуску INSTEAD 3. К сожалению, Вадим после этого снова ушел из поля зрения и его творческие планы на данный момент полностью неизвестны. Подкаст содержит в себе много обзорной информации по INSTEAD3.

Выпуск PlainINSTEAD

Модульность INSTEAD 3 повысила переносимость ядра и Антон Ласточкин адаптировал INSTEAD для незрячих и слабовидящих. В результате, проект PlainInstead стал частью instead-hub! Несколько игр были предоставлены незрячим и встретили свой отклик. Это очень хорошая новость!

Выпуск INSTEAD-JS

Благодаря technix у инстеда появился новый js-порт. Обеспечивается совместимость со многими играми, в том числе и метапарсером. Поддержка спрайтов не полная. Некоторые игры в репозитории доступны для запуска в INSTEAD-JS.

Выпуск INSTEAD-EM

Я портировал INSTEAD на emscripten. Теперь любую игру можно запустить прямо в браузере. Минусы по сравнению с INSTEAD-JS: нагрузка на процессор и необходимость WEBGL. Плюсы: полный аналог настольной версии. Проигрыватель интегрирован в репозиторий. Вы можете запустить любую игру, нажав на соответствующую ссылку.

INSTEAD в Debian

Благодаря усилиям Sam Protsenko (joe-skb7) INSTEAD 3.1.2 попал в Debian! На данный момент он в testing ветке. Тоже отличная новость!

Порт на SailfishOS

В духе и традиции INSTEAD появился новый порт для мало кому известной платформы: SailfishOS. Инстед и несколько игр уже находятся на openrepos. Для тех кто в курсе, я надеюсь, это хорошая новость.

INSTEAD уходит в подполье?

У INSTEAD открылся узел сети idec. Узел назван символично -- "Клуб". Создание клуба своего рода анти-реакция от разочарования общим состоянием и тенденциями сообщества РИЛ. Фактически, клуб -- это уход в подполье. И я должен признаться, что меня все чаще посещают мысли о закрытии форума INSTEAD.

На данный момент техническая поддержка осуществляется также на gitter.

Так что не исключено, что в какой то момент (например, к лету) форум будет закрыт.

Вопрос окончательно не решен, но даже в случае закрытия форума, я буду готов передать базы и код тем людям, которым он нужен.

Игры

Закончив раздел новостей я подумал, что INSTEADу пока рано думать о пенсии. Ведь за всеми описанными событиями стоит труд конкретных людей, которые, так или иначе, заинтересованы в проекте. Это не может не радовать, особенно если вспомнить тот факт, что и с играми дела обстоят далеко не плохо.

Проводник

Это моя игра, которую я начал делать для тестирования STEAD3 API. Как это часто бывает, началась игра с настроения. Я сидел в одном помещении, рядом находились люди. В какой то момент я вдруг понял что между нами -- пропасть. Мы были абсолютно разными. Я почувствовал, что я в этом обществе являюсь белой вороной. Я не знал, что я мог бы выбрать в качестве темы для разговора. Я был уверен что все что было в моей голове на тот момент -- им было абсолютно неинтересно.

К счастью, у меня был ноутбук и я начал записывать сценарий "Проводника". Я начал со сцены "застолье".

Уже потом я попытался сделать какой-то осмысленный сюжет из атмосферы. А также под влиянием произведений Гофмана и Грина. Кажется, сюжет получался, и я начал писать код.

К середине игры я вдруг понял, что она необычно жестока. Меня это смутило, я стараюсь не делать такие игры. Почему же так получается? Я сел и задумался. Может быть стоит уничтожить эту игру, которая вышла из под контроля? И вот в какой то момент вдруг пришло полное переосмысление сюжета. События в игре оставались примерно теми же, но их смысл полностью поменялся. Я понял что игру дописать нужно. А жестокость оказалась кажущейся. (Так что имейте в виду, в этой игре никто никого не убил, даже если кажется обратное).

В общем, получилось то, что получилось. Игра, конечно, странновата. Но как и "Краски сентября", мне она чем то дорога. Скорее всего, я больше никогда не напишу "Квантового кота". :) Большую часть музыки для Проводника написал true-grue, за что ему отдельное спасибо!

Инстедоз 5

Инстедоз 5 начался спонтанно в результате инициативы Irremann. Не смотря на отсутствие четких правил и какого-либо организующего начала, инстедоз удался!

Связующий сюжет абсолютно трешовый, шит белыми нитками, но... Но получилось! И на мой взгляд это один из лучших выпусков (наряду с 3-м инстедозом).

Отдельно хотелось бы отметить "возвращение" Casper_nn. Его игра "Весна" абсолютно прекрасна!

Тут я хотел бы отвлечься и высказать несколько неполиткорректных вещей. Игра Весна -- прекрасный образец игры для которой и был создан INSTEAD. Если вы не уважаете труд автора игры, если вы считаете автора глупее себя и не готовы читать, если вы не способны быть интеллигентным -- эта игра не для вас! Так вот, что-то мне подсказывает, что аудитория этой игры не так широка, как, скажем, аудитория штампованной визуальной новеллы. И именно это является причиной моего пессимизма по отношению к будущему нашего жанра.

Я не сомневаюсь в объективности того, что "Весна" обладает культурной ценностью. Но тех, кто готов оценить эту игру -- все меньше.

А ведь интерактивная литература -- удивительный жанр! Как появление трекеров в свое время дало возможность заниматься творчеством не-музыкантам, так и интерактивная литература дает возможность попробовать себя в роли режиссера или писателя... Но как мы этим пользуемся? И кому это нужно?

В общем, игра "Весна" из сборника ИНСТЕДОЗ 5 -- пример качественного творчества.

Все остальные игры сборника, на мой взгляд, тоже хорошие. Так что если вы еще не прошли ИНСТЕДОЗ -- обязательно попробуйте. Тем более, что это можно сделать и онлайн.

Капсула

Пользуясь случаем хочу передать "спасибо!" technix за его INSTEAD-js. Мы часто спорили с ним на jabber канале instead о взглядах на творчество, но это всегда воспринималось как споры приносящие пользу. Его игры: Фотоохота (в сборнике ИНСТЕДОЗ), Звездная Империя (перенос настольной игры) и "Капсула" -- примеры добротных и качественных игр.

technix смотрит в сторону коммерческих CYOA игр и разрабатывает свой движок. А пока он его не доделал -- мы можем воспользоваться моментом и получить удовольствие от совсем маленькой INSTEAD игры -- "Капсула".

Сложно говорить об этой игре не открыв главного секрета сюжета, поэтому я просто отмечу, что игра подтверждает то исключение, что и в короткой игре можно оставить интересное "послевкусие", которое выходит за рамки собственно игрового процесса. Игра "Капсула" именно такая. Очень надеюсь, что до ухода в мир CYOA и коммерческих игр technix еще успеет выпустить что-нибудь на INSTEAD.

Кнопка

Еще до выпуска INSTEAD 3 Casper писал о том, что пишет игру с инженерными загадками. Честно говоря, не очень было понятно о чем именно речь, но иллюстрации выглядели изумительно. И вот совсем не давно, Casper выложил первую часть своей игры.

Игра прекрасно оформлена: иллюстрации, схемы, тексты, анимации, звуки -- все на высоте! Но невозможно не отметить то, что я отметил в игре "Весна" -- Каспер не боится творить "олдскул" без оглядки на угоду вкусов большинства. Игра имеет ярко выраженный характер и это отчетливо заметно с первого кадра.

Должен заметить, я не играл в "тактический симулятор" Code-10, написанный Каспером уже очень давно. И кажется, я сделал ошибку. Так как обе игры которые я посмотрел: и Весна и Кнопка -- очень сильно меня впечатлили.

Но вернемся к кнопке. По жанру это квест с вкраплениями инженерных задач стилизованных под схемотехнику, которую мы должны ремонтировать. Задачи интересные и разнообразные. Правда, в первой части их не много. Уровень сложности подобран так что у внимательного и интеллигентного игрока не возникнет особых проблем при прохождении.

В игру встроены анимационные ролики, которые добавляют уюта и лампового тепла. Когда я играл в Кнопку я чувствовал какое-то неуловимое влияние другой игры: Лидия (от Василия Воронкова). Моя интуиция меня не подвела, вскоре я узнал, что Лидия также понравилась Касперу как и мне и он испытал ее влияние на своем творчестве.

Работы над остальными частями "Кнопки" продолжаются. Я очень надеюсь, что мы их дождемся.

Штурман

Тема обучения азам программирования давно витает рядом с нашим проектом. В данном случае игра "Штурман" это та самая игра, которая может быть интересна именно в этом аспекте.

Штурман от kerber -- ремейк одноименной игры Олега Шамшуры для платформы MSX.

Я хочу предоставить слово автору ремейка, для этого я попросил его написать несколько строк в ПРИНТЕД и рассказать о том, как протекал творческий процесс. Читайте об этом в новой рубрике ПРИНТЕДА:

За кадром: ШТУРМАН -- ремейк с MSX

Начиналось оно всё с подкаста true-grue об играх для программистов. Хотя нет, ещё раньше видел я игры COLOBOT и LightBot. И вот, среди прочих мыслей мелькнула у меня такая, что неплохо бы и мне что-нибудь эдакое... Мелькнула и пропала. Ни знаний ни навыков тогда необходимых не было. И вот, в феврале, да, кажется это было в феврале, при виде игры "Штурман", эта мысль вернулась опять. Штурман выглядел одновременно круто и просто. Одновременно в тот момент gl00my готовил к выпуску третью версию движка и это тоже было круто и просто. Ещё одно событие, просто подпихнувшее меня к созданию ремейка - у меня появилась книга Р. Иерузалимски "Программирование на Lua", третье издание.

Опять спасибо true-grue. Он сделал сборку эмулятора ретрокомпьютера MSX и образа игры. C е го помощью я уже вплотную подступился к "Штурману" и прошёл первые обучающие уровни. Это было ещё круче чем на видео.

Изучив объекты, доступные на первых уровнях, я начал кодить прототип. Тут небольшое отступление - при разработке я воспользовался концепцией так называемого "прогрессивного джипега". Суть его в том, что игра пишется сразу целиком. В каждой итерации приступов программирования в конце приступа игра должна быть полностью рабочей. От начала и до конца.

В первой итерации поле отображалось на экране целиком, объекты отображались в виде символов из шрифта и полностью отсутствовала анимация. Игра содержала четыре обучающих уровня и переход между ними осуществлялся правкой исходника игры и дефолтная инстедовская тема оформления. Играть в это можно было никак. Просто посмотреть на поле. Это было прекрасно.

Далее разработка покатилась как по рельсам. В следующей итерации была сделана тема оформления и впилен прототип интерфейса программирования. В интерфейсе можно было вводить любой символ с клавиатуры и елозить курсором, указывающим фокус ввода. Сразу покрасил специическим образом символы, обозначающие команды. Долго игрался с интерфейсом, добиваясь соответствия логики его работы в ремейке и в оригинале. Параллельно читал Иерузалимски и открывал для себя новые и новые глубины знаний Lua.

Далее настала очередь ядра игры. Оно базировалось на двух только что изученных мной вещах - операторе goto и способе организации стека при помощи таблиц Lua. Тут тоже не мудрил. Моей целью было добиться выполнения цепочки команд в одном из четырёх наличных стеков. Переключение между стеками выполнялось на этом этапе ... путём редактирования исходника. И вот значок кораблика бодро заелозил по полю а в терминале в нужном порядке выстроилась последовательносто исполняемых команд без пропусков и пробелов.

Настала пора увязывать четыре стека в единый программный узел. Много читал Иерузалимски и меня осенило как реализовать из четырёх стеков один поток управления. Именно тогда замаячил призрак детектирования рекурсии на горизонте. Тут я нарисовал в тетради БОЛЬШОЙ восклицательный знак и просто проигнорировал отсутствие этого важного элемента. Здраво рассудив что какое-то решение наверняка есть, я занялся программированием логики движения кораблика и его взаимодействием с объектами на карте. И, востоянно поглядывая на БОЛЬШОЙ восклицательный знак, донимал людей в конфе инстеда детекцией рекурсии. Мне объясняли, объясняли, снабжали литературой по построению интерпретаторов (Слава скобочкам Лиспа!) но я всё равно не понимал. Изобретал какие-то химерические костыли и снова донимал людей в конфе. Наконец Minoru (большущее ему спасибо!) объяснил всё так, что я понял!

Дальше разработка вновь стремительно покатилась. Тут важный момент - встретив затык я не стал бросать все усилия на его преодоление, а делал те штуки, которые я понимал как делать, однако не упуская из виду существование затыка и шевеля его понемногу с разных сторон. Нарисовал графоний. Прикрутил анимацию. Напечатал текст обучалок. Поубирал из кода сопли, которые остались от прошлых итераций разработки и залил получившийся код на гитхаб.

Тут я покумекал и стал искать выход на автора оригинальной игры - Олега Шамшуру. Тут опять мне помог true-grue. Узнав, что народ интересуется его игрой, Олег порадовался и благословил выпуск ремейка. Попутно рассказал много всякого интересного о платформе MSX, компьютеризации школ в конце восьмидесятых - начале девяностых годов и о версиях и клонах игры "Штурман", которые появлялись во время её популярности. Некоторые были весьма оригинальными, скажу я вам! Но это, пожалуй история на целый отдельный разговор.

Гитхаб мощная штука. Без него дальнейший напилинг игры, в которой между делом появились все уровни, копирующие уровни оригинальной игры, происходил бы гораздо медленнее. Граждане, используйте в разработке системы контроля версий! Выяснилось страшное - оператор goto, бывший основой интерпретатора команд, появился в Lua начиная с версии 5.2 и поддерживался в luajit. В инстеде, собранном с версией Lua 5.1 игра не работала. Тут очень сильно помог gl00my. Он переписал ядро интерпретатора без использования goto, за что огромное ему спасибо.

На этом интенсивный этап разработки игры был закончен. Игра залита в реп. Время от времени я прикручиваю к ней всякие мелкие штуки и она всё ещё остаётся после этого рабочей. Версия потихоньку ползёт к 1.0

Играйте на здоровье.

Слухи

Ходят слухи, что игры пишутся следующими людьми: Irremann, spline, Wol4ik, Casper. Будем надеяться, что синдром "Есть анонс - нет игры" в нашем случае не сработает. Да и какой это анонс? Это всего-лишь слухи.

Еще были слухи что Peter и Vorov2 пишут игру, к сожалению, на данный момент эти слухи не подтвердились.

Ходят слухи, что Antokolos пилит порт INSTEAD на WinRT и UWP. И даже какие-то патчи были влиты в git INSTEAD'а. Я очень надеюсь, что все получится и в версии INSTEAD 3.2 портов станет больше. ;) Спасибо, Antokolos!

Ходят устойчивые слухи о выходе INSTEAD 3.2.0. Я думаю, слухам можно верить. Где-нибудь ближе к НГ версия может увидеть свет.

Кружок программирования

Итак, после выхода INSTEAD3 интерпретатором поддерживаются два API:

  • старое API -- STEAD2
  • новое API -- STEAD3

На чем писать свою игру?

STEAD2 будет поддерживаться интерпретатором и дальше. Поэтому, если вы уже пишете игру на STEAD2 или, по каким то причинам предпочитаете старое API новому -- вы можете спокойно продолжать это делать. Однако, старое API больше не будет развиваться. Оно останется навсегда в том состоянии, в котором его застал выход STEAD3.

STEAD3 содержит в себе множество улучшений. На нем гораздо сложнее ошибиться и не заметить этого, чем в случае с STEAD2. На STEAD3 уже было написано несколько игр разного объема, и пока API показывает себя с хорошей стороны. Однако на STEAD3 все еще не перенесены некоторые модули. Например, метапарсер существует только на STEAD2.

Итак, если вы пишете обычную игру (не на метапарсере) я рекомендую дать шанс STEAD3. Если вы уже написали часть игры в STEAD2 -- заканчивайте ее на STEAD2.

На самом деле, с выходом STEAD3 API в подходе написания игр изменилось многое. Поэтому я советую просто взять и прочитать новую документацию от начала и до конца хотя бы один раз.

Не смотря на внешнюю похожесть, движок полностью переписан и переосмыслен. Из полезных практических нововведений:

  • движок теперь контролирует обращение к неинициализированным переменным;
  • новый отладчик;
  • спрайты (и новые пиксели) не требуют вызовов free;
  • более простое и однозначное поведение;
  • хандлы объектов больше не обязательны, достаточно имени.

Отдельно хочется отметить новый отладчик. Теперь, для его активации достаточно запустить инстед с параметром -debug. Вы также можете создать файл profile (~/.instead/profile для UNIX систем) со строкой debug=1, чтобы не писать -debug руками.

Вызов отладчика осуществляется по ctrl-d. Я надеюсь новый отладчик вам понравится. Кроме очевидных удобств, он корректно работает даже с играми использующими спрайты. Этот отладчик доступен только для STEAD3.

Насчет модулей. На данный момент многие модули уже перенесены на новое API. Некоторые модули вы можете найти здесь

Среди относительно протестированных модулей можно отметить:

  • proxymenu;
  • fonts;
  • cutscene;

Также есть модуль keyboard

Написание своих модулей требует понимание того, как работает STEAD3. Поэтому, обязательно прочитайте документацию по модулям STEAD3

С появлением INSTEAD 3 на ряду со спрайтами в нем появился объект pixels. Пиксели позволяют работать с пиксельной графикой напрямую. Кроме того, пиксели не подвергаются масштабированию при загрузке как спрайты. Масштабируется вся картинка целиком при превращении его в спрайт. Таким образом можно создать pixels фиксированного разрешения, модифицировать отдельные пиксели, использовать геометрические примитивы и так далее, а на последнем этапе отрисовать его в экран спрайтом.

Ладно, это все лирика. В качестве чего-то более практически интересного я расскажу о подобии системы регрессионного тестирования, которую я использовал при разработке игры "Проводник".

Автоматическое тестирование при помощи tiny-instead

Одной из особенностей INSTEAD 3 является более модульная архитектура, которая упростила встраивание INSTEAD. В каталоге с исходным кодом instead в src/tiny реализован интерпретатор INSTEAD всего в 100 строках кода на C. На UNIX системе вы можете зайти в этот каталог и собрать себе tiny-instead. Это все потенциально доступно не только для Unix people, но и для пользователей других ОС. Однако, готовых бинарных сборок и портов tiny-instead на данный момент не существует. ;) Так что если вам понравится tiny-instead, ищите способ портировать его в свою ОС.

Итак, после того как вы собрали tiny-instead, вы можете запустить игру:

$ ./tiny-instead <путь к каталогу с игрой>

Все классические игры должны работать. По понятным причинам, некоторые функции недоступны в 100 строчной версии: типа спрайтов, таймера и клавиатуры.

Ввод команд осуществляется путем набора цифр. Для использования предмета на предмет вы пишите: цифра,цифра. Где цифры означают объекты сцены (они видны в скобках после слов).

В tiny-instead есть режим записи команд в stderr. Таким образом, сначала мы создаем скрипт прохождения (тестирования) игры.

$ ./tiny-instead <путь к игре> 2>log.txt

После чего, в приглашении пишем log и <ввод> и начинаем прохождение игры. Когда, наконец, мы проходим всю игру, можно выйти командой quit.

У нас появился log.txt. Теперь, чтобы прогнать всю игру с самого начала в автоматическом режиме мы делаем:

$ cat log.txt | ./tiny-instead <путь к игре>

И сравниваем вывод с эталоном. Этот метод "регрессионного тестирования" помог мне при разработке проводника и INSTEAD. Когда я менял что то в STEAD3, я снова прогонял эталонный скрипт и смотрел -- ведет ли себя игра корректно с этими изменениями в API.

Я думаю 100 строчному интерпретатору можно найти и другое интересное применение. Например, какой-нибудь веб программист мог бы написать на основе tiny-instead INSTEAD бота для Telegram и показывать свои игры друзьям в привычной им среде. :)

Надеюсь, сегодняшний кружок программирования был интересным.

Метафизика

Возможно, многим из вас этот выпуск показался грустным. И это, вероятно, действительно так. :) Однако я не хочу чтобы мои рассуждения о будущем жанра воспринимались как пессимизм. Проект INSTEAD реагирует на современность вполне адекватно: новые две веб-версии, расширение количества портов, актуальные версии в дистрибутивах, качественные игры -- все это говорит о том, что INSTEAD держит удар с технической стороны.

Однако цели проекта INSTEAD могут со временем перестать быть актуальными для современного сообщества авторов и читателей. И это то, что невозможно изменить. Это можно только наблюдать и как то реагировать.

Приведем мысленный эксперимент. Берем игру "Кнопка" и отправляем в виде ссылки на веб версию вашим знакомым. Какая часть из них вообще поймет, что это такое? Кто попытается пройти игру?

Те технари, которым сейчас 30-40+ -- могли бы, но обычно они уже заняты другими делами. Те люди, которые молоды -- скорее всего не восприймут эту игру как игру и закроют странную страницу. Значит ли это, что не надо было выпускать такую игру? Или, может быть, вместо этого надо было написать какой-нибудь забавный прикол/демотиватор и запустить его в соцсети для сбора лайков? Ради чего создавалась игра?

На данный момент мне кажется, что INSTEAD интересен главным образом в среде определенных людей и попытки "угодить всем" обречены. Пусть INSTEAD будет тем, чем и был с самого начала.

Если вы хотите написать коммерческую игру -- вы можете это сделать. Но продвижение вашей игры не является непосредственной целью проекта. Коммерческий успех -- не синоним качественному произведению (хотя и не препятствие).

Если вы пишете игру на конкурс РИЛ и вам подходит INSTEAD -- здорово! Но имейте в виду, что и это не является непосредственной целью проекта. На мой взгляд, сообщество РИЛ слишком всеядно, чтобы выступать в роли критика к которому стоит серъезно прислушиваться.

Если вы пишете игру для собственного развлечения и вам подходит INSTEAD -- отлично! Но не ожидайте к себе повышенного внимания только на том основании, что вы выбрали этот движок. Пропаганда движка как самоцели -- совершенное искажение целей проекта.

Основная цель проекта -- создание доступного средства для творчества. А "выхлопом" настоящего творчества являются качественные произведения. А в пределе -- произведения, которые способны стать частью культуры. Конечно, наш проект это не консерватория, но это может быть хотя бы ... игрой в консерваторию. :)

Интересно, что примеры команд типа www.retroguru.com или сообщества sailfish показывают, что на всем земном шаре всегда найдется несколько твоих единомышленников для которых то, что ты делаешь -- ценно. И так как в основе этих отношений лежат не деньги, а что то большее -- жизнеспособность таких сообществ может оказаться сильнее чем кажется на первый взгляд.

Например, в магазине и репозиториях для Sailfish практически нет коммерческого софта. В каком то смысле это означает увядание. Для коммерческих компаний совершенно бессмысленно выпускать продукт в такой среде. Более того, пример блокировки аккаунтов whatsup из за использования "неофициального" приложения на SailfishOS весьма показателен. Итак, кому сегодня нужен телефон без whatsup?

Но с другой стороны... Представьте себе мир без рекламы, без маркетоидов. Мир в котором люди занимаются творчеством не потому, что им это приносит выгоду или славу, а потому что они хотят сделать мир хоть чуточку лучше... Не впечатляет? Ну что же, тогда нам не по пути.

До встречи на полях ПРИНТЕДА!

P.S. Совсем забыл! true-grue опубликовал хорошую статью на хабре, которая, по моему, перекликается с ПРИНТЕДОМ. Приятного чтения: "Звездный торговец" или компьютерное обучение в эпоху мини-компьютеров.