>>>>> 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 */