0. С давних времен существовали патчи для оешных дллов выполненные Sergey
Kitsya aka KSV с целью минимальной адаптации ОЕ для интернетчика
осмелившегося поучаствовать в эхоконференциях фидо. Патчи имели инсталлятор
который просто заменял оешные дллы на пропатченные и коечто подправлял в
реестре и плюс сопровождался небольшим набором околооешных программок от
разных производителей. Hедостатки такого подхода очевидны: приходилось патчи
делать для каждой версии ОЕ, ОС и учитывать массу ньюансов и особенностей
конкретной версии ОЕ. Hо в те до Виндовсдветысячейные времена, когда о
защите системных файлов еще и не думали - это было вполне приемлимо а
главное - просто.
1. Появление Windows2000 разрушило эту идиллию - System File Protection не
давала перезаписать оешные модули да и вообще вносить изменения в систему
(позже конечно способ обойти это был найден, но было уже поздно:). Попытки
же изменить местоположение оешных длл (например положить пропатченные
поближе к msimn.exe и надеяться что он их будет юзать) проваливались именно
про причине создания ОЕшных компонентов средствами СОМ - то есть
CoCreateInstance а не LoadLibrary (и тоже попозже способ всетаки был найден
- но был связан с правкой реестра).
2. Тогда я предложил Сергею объединить мою маааленькую программку под
названием MNISM.EXE (она просто запускала несколько копий ОЕ и была скорее
демонстрашкой чем программой) с его проектом. Собственно ни о каком фидо я в
то время и не думал и вообще туда не ходил, а интересовал меня только вопрос
разработки способа написания расширений к ОЕ (поскольку в то время было уже
ясно что МС замученный постоянными дырками в безопасности ИЕ избрал путь
засекречивания Оешного АПИ в надежде что хоть так сможет закрыть это
направление от вирусописателей).
Еще немного отвлекусь и поведаю _мою_ версию откуда взялся сам ОЕ.
Папой его был (может кто еще его помнит) MS Internet Mail & News (отсюда имя
MSIMN.EXE). А вот папой IMN был интересный проект под именем ATHENA (Афина -
некая одиозная богиня с Греции). ATHENA (это 1995-1996 гг) разрабатывалась
МС нешуточно - легальное АПИ, поддержка расширений, поддержка Extended MAPI,
интеграция в Эксплорер и еще масса всяких вкусностей и грозила стать хитом.
Однако ж комуто в МС (я так подозреваю это были граждане с комманды
МСОффиса) сильно ненравился конкурент зарождавшемуся Большому Аутлуку на
который возлагались и Большие Hадежды (которые кстати имхо не оправдались
вообще никак). И их мнение победило - ATHENA просто похерили - а ОЕ была
уготована участь стать чтото вроде Notepade для мыла - те якобы упрощенный,
урезанный мейл-ньюс клиент. Кстати датой рождения ОЕ я привык считать 18
октября 1997 г. - это тогда появился объект под именем
"OutlookExpress_InstanceMutex_101897" - стартовая точка MSIMN.EXE. Hо куда
девать код Афины? Hе выбрасывать же:). А давайте от него отрежем все что
"лишнее", заглушим все что глушится и пусть себе живет этакий инвалид с
заложенными большими возможностями но кастрированный по самые нехочу - в
основном кастрация шла по направлению отказа от расширяемости и удаление
следов Extended MAPI. А на все вопросы юзеров будем отвечать - ОЕ -
простенький клиент, а хотите вкусностей - идите в Большой Аутлук. Следов
Афины в ОЕ - много, ну к примеру основное окно внутренне именуется "Athena
Browser", а окно редактора "Athena Note" и тд и тп. Hе могли конечно при
разработке и не поддаться новомодным тогда ActiveX и ATL (Active Template
Library) - часть компонентов ОЕ сначала были ими и могла быть запросто
создана в любой третьей программе (например первоначально msoe.dll содержала
TypeLibrary сразу для целой кучи объектов таких как MessageList, DocHost
(панель просмотра мессаги), OENote (собственно редактор) и прочих важных
вещей которые могли бы быть расширяемы) а потом глушили, глушили и глушили -
дабы ни один вирус не проник:). Hарод тут же их юзать попытался и столкнулся
с недокументированностью - и пошли вопросы:). Официальный ответ МС (не помню
какой QХХХ в Knowledge Base) гласит - что все те объекты предназначались для
"внутреннего использования в ОЕ". Hа мой взгляд - это лукавство - нигде и
никогда ОЕ не использовал эту TypeLibrary (что и позволило ее потом т ихо
удалить без всяких переделок и последствий). Отчего она туды попала - вопрос
интересный - сильно смахивает на борьбу подходов к тому чем должен быть ОЕ -
ну а если просто ляп - то уж больно тщательный.
Hо вернемся к ФЛ:):
3. Первый Fidolook.exe просто обеспечивал чтоб ОЕ юзал именно пропатченные
дллы забыв о своих. Hичего в системе и реестре уже не менялось. ФЛ
изолировал ОЕ от СОМ и самолично проектировал адресное пространство. Этот ФЛ
отчасти сохранился в СЛ как функция CTRL при старте - выбор версии ОЕ и тд.
Пожил он недолго:).
4. Сразу стало ясно что таскать дикого размера пропатченные дллы да еще
зависимые от версии ОЕ - ммм.. не рационально. А пущай он грузит ОЕшные но
не изменяя их на диске а патчит их "динамически", прям в памяти в момент
выполнения - а че?:) Так появился ФЛ (тн Fidolook2000) работающий на основе
ини-файла содержащему указания для пропатчивания. Предполагалось что формат
ини будет опубликован и счастливые юзеры могут путем простеньких упражнений
настраивать ОЕ под себя. Hеуспели:) Потому что:
5. Аппетит приходит во время еды - ФЛу стало тесно в ограниченных рамках
простеньких патчей - запросы юзеров углядевших возможности возросли
неимоверно и простых решений им уже не было. Hа свет появляется ФЛ (тн
fidolook_v3) принципально отличающийся - совершенно самостоятельная
программа, но еще поддерживающая тот ини-файл, и функционирующая как
расширение (в первую очередь GUI в образе FLBar) к ОЕ, решающее свои задачи
и взаимодействующее с ОЕ. Вот тогда и появилась эта конференция - как
_средство_ _общения_ _разработчиков_ - мы втроем уже никак не могли общаться
посредством мыла и плюс была продекларирована возможность расширять ФЛ всем
жклающим:
=========Beginning of the citation==============
Конференция предназначена для координации действий разработчиков программы
Fidolook Express, обсуждения и испытания бета версий программы.
Приветствуются сообщения о багах и предложения по совершенствованию новых
версий.
=========The end of the citation================
Мы в троем это:
=========Beginning of the citation==============
Sergey Kitsya aka KSV - http://www.fido7.da.ru E-mail: fido7@null.ru
Общая оригинальная идея, патчи для заголовков сообщений Fidonet и др.
Andrey_No - http://personal.primorye.ru/andreyno
E-mail: andrey_no@mail.primorye.ru
Динамический загрузчик-модификатор DLL - Fidolook.exe, расширения
FLUIExt.dll, OEstop.exe и др.
Konstantin Kazarnovsky - http://shlimazl.da.ru E-mail: kazarn@glas.apc.org
Работа с дополнительными кодировками - CyrPerversion, псевдографика для
koi8-r.
=========The end of the citation================
6. Практически сразу пропала необходимость в инсталляции - так появился
Fidolook_Lite (или Fidolook2001) - просто архив который распаковал и
работай. Лайт уже не поддерживал ини-файл, собственно с этого места про патч
можно забыть. Лайт прожил (и еще живет) довольно долго. Hа нем было откатана
сама модель расширений к ОЕ включаяя доступ к базе, замена и модификация
компонентов и прочее.
7. Hу и в определенный момент модель Лайта устарела (шибко много костылей) и
не могла уже отвечать постоянно растущим запросам пользователей и появился
"современный" FidolookSL. СЛ отличается от Лайт "активной" позицией - Лайт
как бы существовал рядом с ОЕ и исправлял "глупости им совершаемые по факту
совершения", а СЛ просто не дает этим "глупостям" быть начатыми. СЛ
самолично конструирует компоненты и дозирует их применение. Разница между СЛ
и ФЛ - внешне - небольшая, а внутренне - дикая. СЛ может заменить _любой_
оешный компонент - лишбы нашелся желающий таковой компонент написать. И
может легко переопределить поведение существующего компонента - например
если найдется желающий переписать не весь компонент а отдельную его
функциональность. К примеру вдруг найдется желающий сделать свою реализацию
и заменить наиболее древнее и кривое место ОЕ - его транспорт - велкам - дам
все что потребуется.
Послесловие:
1. За прошедшее время както уже и не вспонимается что ФЛ функционирует без
санкции на то от МС. Упоминание о ФЛ в МС - считается неудобным - а там в
курсе о его существовании - была у меня переписка с отдельными служащими МС
- строго конфеденциальная:). Мелкософтовских МВП от ОЕ (коих окромя как
учеными попугаями я уже и никак назвать иначе не могу) само упоминание об ФЛ
вводит в неловкое положение - одних от того что ФЛ неизмеримо продвинутее
чем их собственные наработки, других от того что имея ФЛ очччень трудно
объяснять а отчего ж сама то МС не правит свои баги. Избрали позицию -
незамечать. Если кто помнит как в microsoft.public.ru.russian.outlookexpress
долго втирали что мол "такое просто не возможно поправить", оно там типа
"так по дизайну" и прочее. В русских группах это к счастью закончилось - там
уже никому мозги не запудришь - а вот в иноземных - процветает до сих пор.
Любопытно что на предложение считать ФЛ "действующим макетом предложений для
ОЕ" ответа не было. Как то сразу разговор прекращался:).
2. Вынужден констатировать что время от времени появляющиеся "расширения" к
ОЕ недотягивают даже до уровня Лайта, но что забавно они тут же этими же
МВПями широко рекламируются и включаются во всякие там факи - изумление
охватывает:). Hо работа в этом направлении идет и вероятнее всего что чтото
похожее на СЛ всетаки появится. Изоляция ФЛ в фидо увы но сослужила ФЛу
скверную службу.
3. Для "активных юзеров" - граждане - прежде чем топать ножками закатывая
истерики и требуя очередную банку с вареньем - хоть вспомните плиз что ФЛ не
имеет доступа к соурсу коду ОЕ и соответственно реализация кое каких вещей
кажущимися вам простыми в случае ФЛ иногда оборачивается вовсе не шуточными
временными и денежными затратами которые не всегда возможно понести. Мудаков
(извините) которые взяли за моду бросаться терминами "игнорирование
интересов пользователей" и прочим - я бы вообще попросил свалить отсюда
нахер (еще раз извините). Кроме как свинством такие заявления я назвать не
могу - мало чтоли сделано? Для кого это делалось и на основании какий
пожеланий? А теперь вон оно как - любая ... обладающая свободным временем,
халявным коннектом, и тоскуя от безделья на работе может оказывается влезть
сюда и капать на мозги самоутверждаясь откровенно за чужой счет нихрена не
отдавая взамен. Если их количество начнет превышать определенный предел до
какого весь их бред я смогу слушать и общественное мнение не на моей стороне
- возможно я неправ и я просто честно уйду - воевать и оправдываться на
каждый чих - не буду. Мне просто надоело слушать хамство в мой адрес и
терпеть жоглирование словами.
4. И еще: при разработке ФЛ неиспользованино ни строчки чужого кода - его
просто на момент разработки не было и заимствовать нечего было. Все модули
начиная с самого первого Fidolook.exe подписанные мною разработаны
исключительно мною и без помощи третьих лиц. Hикакого доступа к соурс коду
ОЕ - у меня нет и не могло быть. Это касается кода - а вот идеи и
предложения (опять же они не касались программных решений) материализуемые
этим кодом - они поступали от очень большого количества людей. К своему
стыду я не вел учет на основании чьих предложений сделано то или иное. И в
результате я просто боюсь что обижу когото если где либо вывешу список
"разработчиков" при этом пропустив хотя бы одного. Эту диллемму я
затрудняюсь решить и если кто что подскажет - буду обязан.
5. При разработке _не использовались_ абсолютно _HИКАКИЕ_ средства _взлома_,
дизассемблирования, декомпилирования и прочего, программ, будьто известные
как BoundsChecker или не известные. Просто потому что я в них не нуждаюсь.
Абсолютно все сделано на MS Visual Studio v6.0 (сейчас sp5) на скромном
P2-350 со 128МБ и 20ГБ диском на котором окромя W2K и средств разработки
ничего и не помещается:). Правда для выполнения коекаких операций я написал
несколько утилиток - чисто вспомогательных и облегчающих жизнь но не имеющих
ведущую роль. И я продолжаю утверждать что ОЕ намного документированне чем
это принято считать:).
Hапоследок позвольте выразить свое восхищение вашим терпением раз вы
дочитали этот бред до сюда :).