пятница, 20 июля 2018 г.

dlib 0.14.0

На днях состоялся очередной релиз библиотеки dlib - 0.14.0. Из основных нововведений отмечу следующее:
  • SuperImage.pixelFormat теперь возвращает значение типа uint. Это было сделано для того, чтобы можно было расширять dlib.image новыми пиксельными форматами. Значения от 0 до 255 зарезервированы для dlib и используются в стандартных константах PixelFormat. Вместо PixelFormat.RGBA_FLOAT рекомендуется использовать FloatPixelFormat.RGBAF32 из dlib.image.hdri, поскольку в будущем будут добавлены новые float-форматы.
  • Реализовано сохранение изображений в формат Radiance HDR/RGBE (ранее была доступна только загрузка).
  • Добавлены новые фильтры: dlib.image.filters.histogram, dlib.image.filters.binarization.
  • Добавлен новый tonemapper - hdrTonemapACES.
  • Улучшен dlib.image.canvas. Растеризатор фигур Безье теперь поддерживает антиалиасинг (ранее антиалиасинг осуществлялся путем растеризации псевдоконтура алгоритмом Ву). Исправлен баг с рендерингом на неквадратных холстах.
  • В dlib.audio.synth добавлен объектно-ориентированный фреймворк для создания звуковых синтезаторов. Доступны три встроенных синтезатора: SineWaveSynth, SquareWaveSynth, FMSynth. Для рендеринга звука с произвольным синтезатором есть две функции - fillSynth и mixSynth.
  • Добавлен модуль dlib.math.smoothstep с реализациями сигмоид: hermiteSmoothstep, rationalSmoothstep.
  • Добавлена поддержка DMD 2.081.0 в dlib.core.stream.
Важно: начиная с 0.14.0, dlib не поддерживает macOS. О причинах этого бойкота я ранее высказывался в блоге. Скорее всего, функциональность, основанная на POSIX, продолжит работать нормально, но никаких гарантий на будущее нет, и проблемами совместимости с macOS, если они возникнут, я заниматься не буду. Непрерывная интеграция для macOS на Travis также была остановлена. В общем, рекомендую перейти на Linux, FreeBSD или Windows.

P.S. На сайте LightHouse Software за последние месяцы вышли две мои новые статьи:
Хочу также отметить статью aquaratixc Бинаризация методом Оцу в dlib, код из которой вошел в состав dlib 0.14.0.

P.P.S. К сожалению, пока не могу сказать, когда выйдет новая версия Dagon с отложенным рендером. Очень многое еще нужно дописать и реализовать. Но по завершении работы над Dagon 0.9 я планирую перевести на него Atrium, так что самое интересное только начинается.

четверг, 12 июля 2018 г.

Мысли о freeware

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

Мне встречалось множество разных взглядов на этот вопрос, но все они сводятся к следующим основным пунктам:

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

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

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

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

Я, конечно, уважаю авторское право и не считаю, что мне кто-то что-то должен. Открывать или не открывать код - личное дело автора. Есть много закрытых программ с солидным сообществом, и может показаться, что в исходниках там никто особо и не нуждается, пока автор регулярно выпускает релизы и исправляет баги. Но я должен предупредить: стоит автору потерять интерес, как сказка закончится. Поскольку программа бесплатна, у автора нет перед вами никаких обязательств, и вы останетесь с носом. Я видел десятки таких примеров, и в том числе среди коммерческих продуктов.
Никогда не стоит забывать Столлмана: используя закрытые программы, вы становитесь зависимым и беспомощным. Поэтому я предостерегаю от использования freeware - лучше отдайте предпочтение СПО.