Re: Открытые исходники (Было: Использование обфускаторов)
>>>>> Viktor Vislobokov writes:
> Вот есть широкий выбор программ с открытыми исходниками. Скажите
> мне хотя бы из участников этого списка кто вносил серьезные правки
> скажем в исходные тексты Mozilla? Или ядра Linux? Там, что
> называется, попробуй разберись! И так в любой сколь-нибудь сложной
> (читай дорогой) системе.
Дык разбираться достаточно именно в том участке кода, который надо
поправить. Совсем уж немодульными угрёбищами я просто не пользуюсь, а во
всём остальном при необходимости выделяю нужное место -- и разбираюсь с
ним.
Если вы серьёзно предлагаете устроить перепись -- пожалуйста. Несколько
лет назад в Linux (в ядре 2.2) не было перекодировки имён у smbfs -- и,
когда мне понадобилось раздавать файлы с русскими именами, я эту
перекодировку (для своего частного случая) присобачил за полчаса. Неделю
назад я наткнулся на граблю в vfat -- при создании файла с mixed-case
именем из русских букв, которое укладывается в 8.3, LFN entry не
создаётся. Пять минут на поиск ошибки, одна поправленная строчка
(промахнулись с signed char, как водится) -- и теперь всё работает.
А есть ещё Tk, в котором я копаюсь регулярно. Readline, в который я
недавно лазил на предмет "отучить классифицировать байты>127 как
non-word chars". Alicq, к которой разные вкусности дописываются по мере
необходимости. Emacs, которому я рассказал, что такое _на самом деле_
koi8-r (с псевдографикой), и как в xterm ловить Shift-[Ctrl]-стрелки...
Впрочем, это уже пошли скриптуемые приложения, так что тут без правки
базовых исходников обошлось... Но среди коммерческого дерьма таких
приложений не замечено...
> Можно написать и предоставить исходник так, что там сам чёрт не
> разберется. Есть даже программы специальные, убирающие всё
> форматирование из C кода, например. Исходник в этом случае
> остаётся, но как в такой программе разбираться, если вся она будет
> выглятеть типа
> for (i=0;i<baka;i++){if (c>0) kaka=3;else kaka=4;
> while(f=gets(f,50,buf)!=NULL){buf[strlen(buf)-1]='\0';}}
Назвать результат работы обфускатора исходником можно только с очень
большой натяжкой -- как результат gcc -S, к примеру. Лучше уж попросить
написать критические части кода сорокалетнюю даму-инженершу -- она любый
обфускатор переплюнет с запасом :-)
Но я, честно говоря, не совсем понимаю, к чему вы заговорили про эти
"программы специальные". Может, никто и не боится выложить obfuscated
исходник на всеобщее оборзение -- но такой "исходник" ведь и не нужен
никому! Так ради чего авторам закрытого софта напрягаться?
> А C++ это вообще песня! Там можно так построить программу и
> похоронить логику в иерархии объектов, что кроме создателя в
> программе сможет разобраться только очень сильный специалист.
Мы про большие коммерческие продукты, нет? А значит -- есть _команда_
создателей, которые должны как-то взаимодействовать, да ещё и быть
заменимыми. Поэтому "хоронить логику в иерархии" объектов при разработке
никто не будет. Вот сделать обфускатор, работающий как "хоронилка
логики" -- да, могут. Ну и что?
> В общем к чему я веду. Если программа маленькая и несложная,
> в которой может разобраться в общем-то любой знакомый с
> программированием человек, то она не может стоить дорого
> и тогда нет смысла закрывать исходники с целью извлечь из
> программы большую денежную выгоду.
> Тем более вряд ли кто-то захочет и поддержку таких программ. А
> если программа большая и дорогая, то смысла закрывать исходники
> нет тем более, потому что в них сможет разобраться только очень
> маленькое количество людей.
Если она ещё и нормально написана, то немаленькое ;-) Впрочем, это
неважно.
Дело в том, что (в случае закрытого сейчас софта) открыть исходник --
это _телодвижение_, а "не открывать" -- значит попросту оставить всё как
есть. Поэтому вопрос надо ставить так -- какие _выгоды_ может получить
автор от открытия исходника? И тут всё зависит и от автора, и от
качества исходника, и от природы самой софтины... Тут можно привести
много аргументов как pro, так и contra, и вес этих аргументов в каждом
конкретном случае будет разным. Между прочим, _ваши_ аргументы на тему
"почему бессмысленно закрывать исходник" можно повернуть на 180 градусов
-- они точно так же обосновывают "почему бессмысленно открывать
исходник".
Вот, например, такой прикол -- открытие исходников программы с
сохранением её несвободного статуса может привести к возникновению
независимых наборов патчей, распространение которых вы не сможете (!)
запретить, потому что _соответствующим_ _образом_ _сделанный_ патч не
будет содержать ни строчки вашего кода. Пример minix вы, наверное,
помните (правда, A.T. и не пытался ограничить патчеров).
Так вот, можете вы (на места автора/продавца программы) сказать с ходу,
хорошо или плохо для вас наличие таких patchsets? С одной стороны, они
тормозят апгрейды... С другой стороны, повышают полезность вашей
программы... Что перетянет? Это надо просчитывать индивидуально, для
каждого конкретного случая.
> В заключении я могу сказать, что я говорю именно о
> предоставлении программы с открытыми исходниками с целью
> доработки под себя и багфиксов, а не с целью модификации
> для последующей перепродажи.
Я, со своей стороны, тоже говорю о мелких доработках, которые лениво
было бы доводить до состояния, готового к выпуску в свет.
> Т.е. я говорю не о GPL и не воровстве (которое кстати легко
> доказуемо в этом случае, несмотря на обфускаторы и преследуется по
> закону, по крайней мере за бугром).
Нету никакого воровства программ!
--
With Best /usr/bin/wishes,
Anton Kovalenko /* http://kovalenko.webzone.ru */
Reply to: