[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: